Hallo!
Folgendes Problem: Ich versuche für einen Kunden ein Script zu schreiben, das Text mittels imagettftext() in eine Grafik schreibt - das funktioniert auch gut.
Nun will der Kunde auch ein letter spacing haben. Er verwendet für seine Grafiken Adobe InDesign und stellt dort die "Laufweite" der Schriftzüge ein. Ich habe nachgelesen, dass diese in 1000stel Geviert berechnet werden.
Nun versuche ich, eine solche letter spacing Möglichkeit auch in meinem Script zu verwenden. Mein Problem ist nun aber folgendes:
Ich habe mir in InDesign einen Schriftzug ohne Laufweite (0) gemacht. Davon habe ich mir einen Screenshot angefertigt. Nun habe ich den Wert "-10", "-20" und "-30" nacheinander ausprobiert und ebenfalls davon einen Screenshot gemacht. Dabei ist mir aufgefallen, dass dabei der Abstand zwischen den einzelnen Zeichen nicht gleichmäßig für jeden Buchstaben verändert, sondern das anscheinend von InDesign selbst verändert wird, wie's "am besten" aussieht - ein Beispiel mit dem Text "gartenzaun":
letter spacing 0: g a r t e n z a u n (nehmen wir bitte an, dass die zwei Leerzeichen zwischen den Buchstaben der Wert 0 ist, da ich sonst kein negatives letter spacing erklären kann)
letter spacing -10: g a r t e n z a u n
letter spacing -20: g a r t e n z aun
letter spacing -30: gartenzaun.
Ich hoffe, ich konnte erklären, was InDesign anscheinend macht. Es wird nicht jedes Zeichen um den gleichen Pixelwert nach links verschoben, sondern nur manche. Je größer das negative Letter spacing ist, desto mehr Buchstaben werden enger zusammen geschoben.
Das Problem bei meinem Script ist eben, dass ich jedes Zeichen einzeln platziere und dazwischen xy Pixel frei lasse - Geviert rechne ich mir in Pixel um. Lasse ich nun 1 Pixel zwischen jedem Zeichen, sieht der Text aus, als wäre kein letter spacing eingestellt. Stelle ich aber 2 Pixel (bzw. -2 bei negativem letter spacing) ist der Abstand schon zu groß, da ich ja im Wort Gartenzaun schon 10 Zeichen bzw. 9 Zwischenräume habe, und dann schon 9x2 Pixel an Platz beansprucht werden. Bei 3 Pixeln sind es dann schon 27 Pixel...
Hat jemand eine Idee, wie ich es schaffen kann, dass mein Script dem Verhalten von InDesign nahe kommt? Bzw. kann mir jemand sagen, ob das, was ich versuche, sinnlos ist? Natürlich ist klar, dass InDesign ein Profi-Layoutprogramm ist und ich nur ein einfach PHP-Script schreibe und natürlich nicht an die Funktionen eines Profi-Programmes rankommen kann (v.a. nicht mit meinen Fähigkeiten)...
Danke!
Folgendes Problem: Ich versuche für einen Kunden ein Script zu schreiben, das Text mittels imagettftext() in eine Grafik schreibt - das funktioniert auch gut.
Nun will der Kunde auch ein letter spacing haben. Er verwendet für seine Grafiken Adobe InDesign und stellt dort die "Laufweite" der Schriftzüge ein. Ich habe nachgelesen, dass diese in 1000stel Geviert berechnet werden.
Nun versuche ich, eine solche letter spacing Möglichkeit auch in meinem Script zu verwenden. Mein Problem ist nun aber folgendes:
Ich habe mir in InDesign einen Schriftzug ohne Laufweite (0) gemacht. Davon habe ich mir einen Screenshot angefertigt. Nun habe ich den Wert "-10", "-20" und "-30" nacheinander ausprobiert und ebenfalls davon einen Screenshot gemacht. Dabei ist mir aufgefallen, dass dabei der Abstand zwischen den einzelnen Zeichen nicht gleichmäßig für jeden Buchstaben verändert, sondern das anscheinend von InDesign selbst verändert wird, wie's "am besten" aussieht - ein Beispiel mit dem Text "gartenzaun":
letter spacing 0: g a r t e n z a u n (nehmen wir bitte an, dass die zwei Leerzeichen zwischen den Buchstaben der Wert 0 ist, da ich sonst kein negatives letter spacing erklären kann)
letter spacing -10: g a r t e n z a u n
letter spacing -20: g a r t e n z aun
letter spacing -30: gartenzaun.
Ich hoffe, ich konnte erklären, was InDesign anscheinend macht. Es wird nicht jedes Zeichen um den gleichen Pixelwert nach links verschoben, sondern nur manche. Je größer das negative Letter spacing ist, desto mehr Buchstaben werden enger zusammen geschoben.
Das Problem bei meinem Script ist eben, dass ich jedes Zeichen einzeln platziere und dazwischen xy Pixel frei lasse - Geviert rechne ich mir in Pixel um. Lasse ich nun 1 Pixel zwischen jedem Zeichen, sieht der Text aus, als wäre kein letter spacing eingestellt. Stelle ich aber 2 Pixel (bzw. -2 bei negativem letter spacing) ist der Abstand schon zu groß, da ich ja im Wort Gartenzaun schon 10 Zeichen bzw. 9 Zwischenräume habe, und dann schon 9x2 Pixel an Platz beansprucht werden. Bei 3 Pixeln sind es dann schon 27 Pixel...
Hat jemand eine Idee, wie ich es schaffen kann, dass mein Script dem Verhalten von InDesign nahe kommt? Bzw. kann mir jemand sagen, ob das, was ich versuche, sinnlos ist? Natürlich ist klar, dass InDesign ein Profi-Layoutprogramm ist und ich nur ein einfach PHP-Script schreibe und natürlich nicht an die Funktionen eines Profi-Programmes rankommen kann (v.a. nicht mit meinen Fähigkeiten)...
Danke!
Kommentar