Start · Sprachen · PHP · Referenz · imageloadfont

imageloadfont

Funktion

Lädt eine benutzerdefinierte Bitmap-Schriftartdatei (.gdf) und gibt eine <code>GdFont</code>-Instanz zurück, die mit GD-Textfunktionen verwendet werden kann.

seit PHP 4.0.0 Kategorie: image

Signatur

imageloadfont(string $filename): GdFont|false

Beschreibung

imageloadfont() lädt eine Schriftart im GD-spezifischen Font-Format (.gdf) aus einer Datei und macht sie für die Verwendung mit Bildzeichenfunktionen wie imagestring(), imagestringup(), imagechar() und imagecharup() verfügbar. Ab PHP 8.1 gibt die Funktion ein GdFont-Objekt zurück; in älteren Versionen war der Rückgabewert eine Ganzzahl (Font-ID, immer ≥ 5).

GD-Schriftartdateien sind einfache Bitmap-Schriften mit festem Zeichenabstand. Sie eignen sich vor allem dann, wenn eine einheitliche pixelgenaue Typografie ohne den Overhead von TrueType- oder FreeType-Schriften gewünscht ist. GD-Schriften können mit verschiedenen Hilfsprogrammen erzeugt werden, die das entsprechende Binärformat erzeugen.

Im Gegensatz zu TrueType-Schriften (imagettftext()) können GD-Bitmap-Schriften nicht skaliert oder rotiert werden; ihre Größe ist fest vorgegeben. Für flexible Typografie empfiehlt sich daher der Einsatz von imagettftext() in Verbindung mit TrueType-Fonts.

Parameter

Name Typ Default Beschreibung
$filename Pflicht string Pfad zur GD-Schriftartdatei (.gdf). Der Pfad kann absolut oder relativ zum aktuellen Arbeitsverzeichnis sein.

Rückgabewert

Typ
GdFont|false
Beschreibung
Gibt ab PHP 8.1 eine GdFont-Instanz zurück, die direkt an Zeichenfunktionen übergeben werden kann. In PHP < 8.1 wurde eine Integer-Font-ID (≥ 5) zurückgegeben. Im Fehlerfall (Datei nicht gefunden oder ungültiges Format) wird false zurückgegeben.

Beispiele

Benutzerdefinierte Schrift laden und Text in ein Bild schreiben

<?php
// Bild erstellen
$image = imagecreatetruecolor(300, 50);

// Farben definieren
$weiss = imagecolorallocate($image, 255, 255, 255);
$schwarz = imagecolorallocate($image, 0, 0, 0);

// Hintergrund füllen
imagefill($image, 0, 0, $weiss);

// Benutzerdefinierte Schrift laden
$font = imageloadfont('/pfad/zu/meinefont.gdf');

if ($font === false) {
    die('Schriftartdatei konnte nicht geladen werden.');
}

// Text mit der geladenen Schrift schreiben
imagestring($image, $font, 10, 15, 'Hallo Welt!', $schwarz);

// Bild als PNG ausgeben
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);

Schriftbreite und -höhe einer geladenen Schrift ermitteln

<?php
// Schrift laden
$font = imageloadfont('/pfad/zu/meinefont.gdf');

if ($font !== false) {
    // Ab PHP 8.1: GdFont-Objekt, daher imagefontwidth/imagefontheight verwenden
    $breite  = imagefontwidth($font);
    $hoehe   = imagefontheight($font);
    echo "Zeichenbreite: {$breite}px, Zeichenhöhe: {$hoehe}px\n";
} else {
    echo "Schriftdatei konnte nicht geladen werden.\n";
}
Zeichenbreite: 8px, Zeichenhöhe: 16px

// Wichtig · Fallstricke

PHP 8.1+: Der Rückgabewert wurde von int zu GdFont geändert. Code, der den Rückgabewert direkt als Integer verwendet (z. B. vergleicht oder addiert), muss angepasst werden.

Unterstütztes Format: Nur das spezifische GD-Binärformat (.gdf) wird unterstützt. Andere Schriftformate wie TTF, OTF oder BDF können nicht mit imageloadfont() geladen werden.

Vordefinierte Schriften: GD stellt die Schriften 1–5 fest eingebaut zur Verfügung. Mit imageloadfont() geladene Schriften erhalten ab PHP < 8.1 IDs beginnend bei 5, sodass Verwechslungen möglich sind. Es empfiehlt sich daher, immer die Variable zu nutzen, in der die Font-ID gespeichert wurde.