Start · Sprachen · PHP · Referenz · GdFont

GdFont

Klasse

Opake Klasse, die ab PHP 8.1.0 die bisherigen GD-Font-Ressourcen ersetzt und Schriftarten für GD-Bildoperationen repräsentiert.

seit PHP 8.1.0 Kategorie: image

Signatur

class GdFont

Beschreibung

GdFont ist eine vollständig opake Klasse, die in PHP 8.1.0 eingeführt wurde, um die bis dahin verwendeten GD-Font-Ressourcen (vom Typ resource) zu ersetzen. Objekte dieser Klasse können nicht direkt instanziiert werden – sie werden ausschließlich von Funktionen wie imageloadfont() oder durch Verwendung der eingebauten GD-Schriftarten-Konstanten (15) erzeugt.

Da die Klasse vollständig opak ist, besitzt sie keine öffentlich zugänglichen Eigenschaften oder Methoden. Sie dient lediglich als Träger-Objekt, das an GD-Funktionen wie imagestring(), imagestringup(), imagechar(), imagecharup() und imagefontwidth() sowie imagefontheight() übergeben wird.

Der Wechsel von Ressourcen zu Objekten des Typs GdFont folgt dem allgemeinen PHP-8.x-Trend, ressource-basierte APIs durch echte Objekte zu ersetzen. Bestehender Code, der die eingebauten Schriftarten-Indizes (1 bis 5) als Integer übergibt, bleibt weiterhin kompatibel, da PHP diese intern automatisch konvertiert.

In PHP 8.1+ gibt imageloadfont() statt einer resource ein GdFont-Objekt zurück. Dies ermöglicht eine sauberere Typ-Prüfung per instanceof GdFont und vereinfacht die Integration mit strikten Typsystemen und modernen PHP-Codestilen.

Beispiele

Externe Schriftart laden und verwenden

<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 100);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefilledrectangle($image, 0, 0, 299, 99, $white);

// Externe GD-Schriftart laden – gibt ab PHP 8.1 ein GdFont-Objekt zurück
$font = imageloadfont('/pfad/zur/schriftart.gdf');

if ($font instanceof GdFont) {
    // Schriftbreite und -höhe abfragen
    $breite = imagefontwidth($font);
    $hoehe  = imagefontheight($font);
    echo "Breite: $breite, Höhe: $hoehe\n";

    // Text mit der geladenen Schriftart auf das Bild schreiben
    imagestring($image, $font, 10, 10, 'Hallo PHP!', $black);
}

// Bild ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Breite: 8, Höhe: 13

Eingebaute GD-Schriftarten als GdFont-Objekte verwenden

<?php
$image = imagecreatetruecolor(200, 60);
$bg    = imagecolorallocate($image, 240, 240, 240);
$fg    = imagecolorallocate($image, 30, 30, 30);
imagefilledrectangle($image, 0, 0, 199, 59, $bg);

// Eingebaute Schriftarten 1–5 werden intern als GdFont-Objekte behandelt
foreach ([1, 2, 3, 4, 5] as $nr) {
    // Prüfen, wie PHP mit den Integer-Schriftarten umgeht
    $fontWidth  = imagefontwidth($nr);
    $fontHeight = imagefontheight($nr);
    echo "Font $nr: {$fontWidth}x{$fontHeight} px\n";
}

// Text mit eingebauter Schriftart 3 schreiben
imagestring($image, 3, 10, 20, 'Font 3', $fg);

header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Font 1: 5x6 px Font 2: 6x13 px Font 3: 7x13 px Font 4: 8x16 px Font 5: 9x15 px

// Wichtig · Fallstricke

Abwärtskompatibilität: In PHP 8.1+ geben Funktionen wie imageloadfont() ein GdFont-Objekt zurück. Code, der auf eine resource prüft (z. B. is_resource($font)), wird in PHP 8.1+ fehlschlagen und muss auf $font instanceof GdFont umgestellt werden.

Keine direkte Instanziierung: new GdFont() ist nicht möglich; die Klasse ist vollständig opak und nur über die entsprechenden GD-Funktionen beziehbar.

Integer-Schriftarten: Die eingebauten Schriftarten-Indizes 1 bis 5 werden von GD-Funktionen intern weiterhin akzeptiert und transparent zu GdFont-Objekten konvertiert, sodass kein sofortiger Refactoring-Bedarf besteht.