Bei der Verarbeitung von Bildern in PHP werden häufig verschiedene Funktionen der GD -Bibliothek zum Zeichnen von Text verwendet. ImageFontwidth () ist eine der Funktionen, mit denen die integrierte Schriftbreite erstellt wird. Viele Entwickler werden jedoch feststellen, dass die Funktion der ImageFontwidth () nicht richtig funktioniert, wenn versucht wird, die TrueType -Schriftart zu verwenden. Dieser Artikel wird die Gründe für dieses Phänomen ausführlich analysieren.
ImageFontwidth () ist eine Funktion in der PHP-GD-Bibliothek, die die Zeichenbreite der angegebenen integrierten Schriftart zurückgibt. Sein Funktionsprototyp ist wie folgt:
imagefontwidth(int $font): int
Der Parameter $ font ist eine Ganzzahl, die die Anzahl der integrierten Schriftart (1 bis 5) darstellt. Diese Funktion unterstützt nur integrierte Schriftarten, die von der GD-Bibliothek vordefiniert wurden.
Die PHP GD -Bibliothek unterstützt zwei Hauptschriftenzeichnungsmethoden:
Eingebaute Schriftarten : Diese in der GD-Bibliothek enthaltenen Bitmap-Schriftarten sind festgelegt (1 bis 5), klein, schnell, schnell, aber nur begrenzt.
TrueType Font (TTF) : Mit Funktionen wie ImagettFtext () können externe .TTF -Schriftdateien verwendet werden, um mehr Stile und qualitativ hochwertigste Textwiedergabe zu unterstützen.
Zu Beginn des Entwurfs der ImageFontwidth () -Funktion, wobei nur die feste Breite der integrierten Schriftart abfragt. Die Implementierungslogik basiert eher auf vordefinierten Schriftdaten als auf dynamischen analysierenden Schriftdateien. Die spezifischen Gründe sind wie folgt:
Eingebaute Schriftarten sind feste Bitmap-Schriftarten <br> Die Zeichenbreite der integrierten Schrift ist vordefiniert und festgelegt, und ImageFontwidth () kann den entsprechenden Breitenwert direkt zurückgeben.
TrueType -Schriftarten erfordern eine dynamische Analyse
TrueType -Schriftdateien enthalten komplexe Vektordaten, die Zeichenbreite hängt von den Messinformationen in der Schriftartdatei ab, und unterschiedliche Zeichenbreiten können unterschiedlich sein (proportionale Schriftart). ImageFontwidth () kann TTF -Dateien nicht analysieren.
Verschiedene funktionale Positionierung
ImageFontwidth () ist eine Helferfunktion für integrierte Schriftarten. Die Aufgabe, TTF -Schriftbreite zu behandeln, wird normalerweise durch Funktionen wie ImagettFBBox () erledigt. Es kann das Begrenzungsfeld des Textes zurückgeben, wodurch die tatsächliche Breite und Höhe der Zeichenfolge berechnet wird.
Für TrueType -Schriftarten wird empfohlen, die Funktion imagettfbBox () zu verwenden:
<?php
$fontFile = 'm66.net/fonts/arial.ttf'; // Bitte stellen Sie sicher
$fontSize = 12;
$text = "Hello, world!";
// Holen Sie sich ein Textgrenzfeld
$bbox = imagettfbbox($fontSize, 0, $fontFile, $text);
// Breite berechnen
$width = abs($bbox[4] - $bbox[0]);
echo "Die Textbreite ist: " . $width . " Pixel";
?>
ImagettFBbox () gibt ein Array mit 8 Elementen zurück, bei denen es sich um die Koordinaten der vier Ecken des Textes handelt. Durch die Berechnung des horizontalen Koordinatendifferenzwerts kann die Textbreite erhalten werden.
ImageFontwidth () kann nur für GD-integrierte Schriftarten verwendet werden und können nicht-TrueType-Schriftarten verarbeiten.
TrueType -Schriftbreitenberechnung erfordert die Funktion imageettFBBox () .
Das Verständnis der Unterschiede zwischen beiden hilft dabei, die GD-Bibliothek korrekt zu verwenden, um eine qualitativ hochwertige Textzeichnung zu erreichen.