In PHP wird die ImageFontwidth () -Funktion verwendet, um die Zeichenbreite der integrierten Schriftart zu erhalten. Der Zweck dieser Funktion ist in Verbindung mit den integrierten Schriftarten (Nummern 1 bis 5) zu verwenden, die von der GD-Bibliothek bereitgestellt werden, um die Anzeigebreite der Zeichenfolge im Bild zu berechnen. Obwohl es einfach und einfach zu bedienen ist, funktioniert die ImageFontwidth () -Funktion nicht, wenn benutzerdefinierte Schriftarten wie TrueType -Schriftarten verwendet werden, was die Entwickler häufig verwirrt.
In diesem Artikel wird ausführlich erläutert, warum die ImageFontwidth () -Funktion mit benutzerdefinierten Schriftarten und den technischen Gründen dafür nicht kompatibel ist und eine Lösung für die korrekte Erlangung kundenspezifischer Schriftbreiten geben.
Die ImageFontwidth () -Funktion ist wie folgt definiert:
int imagefontwidth ( int $font )
Der Parameter $ -Kraft ist die integrierte Schriftnummer mit Werten zwischen 1 und 5.
Der Rückgabewert ist die feste Breite (Einheit: Pixel) eines Zeichens in der Schriftart.
Diese Funktion kann nur die mit der GD -Bibliothek gelieferten Schriftarten verarbeiten, und die Schriftarten sind Bitmap -Schriftarten mit fester Breite und die Zeichenbreite ist gleich.
Die integrierte Schriftart ist eine von der GD-Bibliothek vordefinierte Bitmap-Schriftart mit festen Zeichenbreiten und bekannt.
Benutzerdefinierte Schriftarten sind in der Regel Vektor -Schriftarten (z.
Die Entwurfsvoraussetzung der Funktion imageFontwidth () ist, dass die Schriftart eine feste Breite ist und durch eine integrierte Schriftnummer identifiziert wird, und es gibt keine Funktion, um die Schriftart zu lesen.
Benutzerdefinierte Schriftarten werden von Funktionen imagettftext () oder imagettfbbox () gezeichnet, die die Zeichenbreite und Höhe durch Laden von Schriftartdateien und Verwendung komplexer Schriftmetriken berechnen. ImageFontwidth () kann und berechnen einfach keine Zeichengrößen in Schriftartdateien.
Für benutzerdefinierte Schriftarten besteht die richtige Art und Weise, die Funktion von ImageettFBBox () zu verwenden:
array imagettfbbox ( float $size , float $angle , string $fontfile , string $text )
$ Größe : Schriftgröße
$ Winkel : Rotationswinkel (normalerweise 0)
$ fontfile : font Dateipfad
$ text : Zeichenfolge zu messen
Gibt ein Array von 8 Elementen zurück, die die Koordinaten der vier Ecken der Saite darstellen. Durch die Berechnung dieser Koordinaten können Sie die Saitenbreite und Höhe erhalten.
<?php
// Schriftgröße
$size = 16;
// Rotationswinkel
$angle = 0;
// Benutzerdefinierte Schriftart
$fontfile = 'm66.net/fonts/arial.ttf';
// Die missige Zeichenfolge
$text = "Hello World";
// Holen Sie sich ein Textgrenzfeld
$bbox = imagettfbbox($size, $angle, $fontfile, $text);
// Breite berechnen
$width = abs($bbox[2] - $bbox[0]);
echo "Die Stringbreite ist: " . $width . " Pixel";
?>
In diesem Beispiel stellen $ Bbox [0] und $ Bbox [2] die X -Koordinaten in den unteren linken und unteren rechten Ecken der Zeichenfolge dar. Die Breite der Zeichenfolge kann durch Subtrahieren der beiden und den Absolutwert erhalten werden.
Frage | Lösung |
---|---|
ImageFontwidth () kann die benutzerdefinierte Schriftbreite nicht messen | Berechnen Sie die String -Breite mithilfe von ImagetettFbbox () in Kombination mit Schriftartdateien |
Müssen benutzerdefinierten Schriftart Text zeichnen | Verwenden Sie Imagettftext () anstelle von Imagestring () oder ImagestringUp () |
Stellen Sie sicher, dass der Schriftart der Schriftart korrekt und zugänglich ist, und vermeiden Sie Funktionsfehler.
ImagettFBBox () gibt die Koordinaten zurück, die negative Werte enthalten, und ABS () ist erforderlich, um die Breite zu berechnen.
Die Schriftgröße und der Winkel haben einen Einfluss auf die Breite, und die Parametereinstellungen müssen entsprechend den Anforderungen eingestellt werden.
Durch die Einführung dieses Artikels sollten Sie den Grund verstehen, warum die ImageFontwidth () -Funktion nur für integrierte Schriftarten geeignet ist, und die richtige Möglichkeit für die Verwendung von ImagettFBbox () zur Messung der Breite von benutzerdefinierten Schriftzeichenfolgen beherrschen, um Layout- und Anzeigeprobleme zu vermeiden, die durch falsche Funktionsauswahl verursacht werden.