(Hallo|Hi(ho)|Tag) Elli,
seit 3 Tagen zerbreche ich mir mein Köpfchen wie ich sowas hinbekomme:
Einen Font in ein Bild zu verwandeln ist ja kein Problem,
aber das tabellarisch in Kombination mit einer Standardschrift
fehlt mit ein vernünftiger Ansatz, denn viele Fonts unterscheiden sich
sich gehörig in den Abmessungen und so müsste die Tabelle sich ja auch anpassen, das gelingt mir nicht.
Dann hatte ich probiert jeden Buchstaben einzeln umzuwandeln und am Ende zusammenzufügen, aber das ist dann doch wie mit Kanonen auf Spatzen schiessen. Muss doch auch anders gehen, oder?
Klar geht das. PHP kennt dazu zwei Funktionen[1]:
Zum Schreiben imageTTFText() und zum Ermitteln der Textabmessungen imageGetTTFBBox(). Letztere erwartet (fast) die gleichen Argumente wie imageTTFText(), gibt aber ein Array zurück, aus dem man die Abmessungen des Textes (die "bounding box") berechnen kann. Leider sind die Werte des Arrays für den Anfänger etwas wirr belegt. Prinzipiell brauchst du nur zwei Werte, die Höhe und die Breite der Bounding Box:
$bb = imageTTFBBox($font_height, 0, $font_file, $text);
$width = $bb[4] - $bb[6]; // xpos: obere rechte Ecke - obere linke Ecke
$height = $bb[1] - $bb[7]; // ypos: untere linke Ecke - obere linke Ecke
Das kannst du für alle darzustellenden Texte benutzen -- auch für deine "Standardschrift". Außerdem solltest du beachten, dass bei Zeichenketten (also mehr als einzelnen Zeichen) die Gesamtbreite abweichen kann, von dem Wert, den die Addition der Einzelwerte ergeben könnte. Die Ursache dafür liegt in verschiedenen typografischen Phänomenen (u.A. Unterschneidungen ("kerning"), Ligaturen, Smoothing, usw.).
MffG
EisFuX
[1] Zumindest für TrueType- und OpenType-Fonts. Für andere Font-Typen gibts je nach GD-Lib-Version eventuell auch Unterstützung in der Liste der Grafikfunktionen.