Signatur
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 (1–5) 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);
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);
// 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.