Signatur
Beschreibung
imagefontwidth() ermittelt die Breite eines einzelnen Zeichens der angegebenen eingebauten GD-Schriftart in Pixeln. Diese Funktion ist besonders nützlich, wenn Text mit imagestring() oder imagechar() auf ein Bild gezeichnet wird und die genaue Textbreite im Voraus berechnet werden soll – etwa um Text zu zentrieren oder mehrspaltige Layouts zu erstellen.
PHP stellt fünf eingebaute Bitmap-Schriftarten (1–5) zur Verfügung. Je höher die Zahl, desto größer die Schrift. Mit imageloadfont() können auch eigene Bitmap-Schriftarten geladen werden; der zurückgegebene Font-Bezeichner kann ebenfalls an imagefontwidth() übergeben werden.
Da die eingebauten GD-Schriftarten monospaced (nicht-proportional) sind, hat jedes Zeichen innerhalb derselben Schriftart exakt dieselbe Breite. Die Gesamtbreite einer Zeichenkette mit n Zeichen ergibt sich somit aus n * imagefontwidth($font).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $font Pflicht | int | Die Schriftart-Kennung. Eingebaute GD-Schriftarten haben die Werte 1 bis 5. Eigene Schriftarten werden mit imageloadfont() geladen und liefern einen Bezeichner ab 5. |
Rückgabewert
Beispiele
Textbreite berechnen und Text zentrieren
<?php
// Bildgröße
$width = 200;
$height = 50;
$image = imagecreatetruecolor($width, $height);
$white = imagecolorallocate($image, 255, 255, 255);
$black = imagecolorallocate($image, 0, 0, 0);
imagefill($image, 0, 0, $white);
$font = 4; // Eingebaute Schriftart 4
$text = 'Hallo Welt';
// Breite und Höhe des gesamten Textes berechnen
$textWidth = strlen($text) * imagefontwidth($font);
$textHeight = imagefontheight($font);
// Koordinaten für zentrierte Ausgabe
$x = (int)(($width - $textWidth) / 2);
$y = (int)(($height - $textHeight) / 2);
imagestring($image, $font, $x, $y, $text, $black);
header('Content-Type: image/png');
imagepng($image);
imagedestroy($image);
Zeichenbreiten aller eingebauten Schriftarten ausgeben
<?php
for ($font = 1; $font <= 5; $font++) {
$w = imagefontwidth($font);
$h = imagefontheight($font);
echo "Schriftart $font: Breite = {$w}px, Höhe = {$h}px\n";
}
// Wichtig · Fallstricke
Hinweis: imagefontwidth() funktioniert ausschließlich mit den eingebauten Bitmap-Schriftarten (1–5) sowie mit per imageloadfont() geladenen eigenen Bitmap-Schriftarten. Für TrueType-Schriftarten (TTF/OTF), die mit imagettftext() gezeichnet werden, muss stattdessen imagettfbbox() verwendet werden, da dort die Zeichenbreite variabel ist.
Diese Funktion setzt eine aktivierte GD-Erweiterung voraus. Sie sollte daher nicht ohne vorherige Prüfung mit extension_loaded('gd') eingesetzt werden.