Start · Sprachen · PHP · Referenz · imagefontwidth

imagefontwidth

Funktion

Gibt die Breite eines Zeichens (in Pixeln) für eine eingebaute GD-Schriftart zurück.

seit PHP 4.0.0 Kategorie: image

Signatur

imagefontwidth(int $font): int

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

Typ
int
Beschreibung
Gibt die Breite eines einzelnen Zeichens der gewählten Schriftart in Pixeln zurück.

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";
}
Schriftart 1: Breite = 5px, Höhe = 6px Schriftart 2: Breite = 6px, Höhe = 13px Schriftart 3: Breite = 7px, Höhe = 13px Schriftart 4: Breite = 8px, Höhe = 16px Schriftart 5: Breite = 9px, Höhe = 15px

// 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.