Aktueller Standort: Startseite> Neueste Artikel> Beschreibung der Inkompatibilität zwischen ImageFontwidth () und benutzerdefinierten Schriftarten

Beschreibung der Inkompatibilität zwischen ImageFontwidth () und benutzerdefinierten Schriftarten

M66 2025-05-26

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.


1. Einführung in die Funktion von ImageFontwidth ()

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.


2. Warum können wir keine benutzerdefinierte Schriftbreite mit ImageFontwidth () messen?

2.1 Der wesentliche Unterschied zwischen eingebauten Schriftarten und benutzerdefinierten Schriftarten

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

2.2 ImageFontwidth () unterstützt keine Schriftart Dateien

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.


3. Wie bekomme ich die Breite einer benutzerdefinierten Schriftart?

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.


4. Detailliertes Beispiel: Verwenden Sie ImagettFBBox (), um die String -Breite zu 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.


5. Lösung Zusammenfassung

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 ()

6. Zusätzliche Tipps

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