letter spacing

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • letter spacing

    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!

  • #2
    Die Frage hatte ich bis heute irgendwie übersehen.

    Es gibt Monospace Schriften, bei denen der Zwischenraum bei allen Zeichen gleich ist. Für Pre-Bereiche in HTML nutze ich da zum Beispiel "Lucida Console" und als Alternative "Courier New". Die Fonts für Monospace Schriften stammen wohl zum Teil noch aus der Zeit der Schreibmaschinen, wo alle Zeichen der Schreibmaschine eine einheitliche Breite besitzen mussten.

    Dann gibt es den großen Rest der Schriften, bei denen ein kleines i schmaler ist als ein großes W, um mal zwei Zeichen mit einem deutlichen Unterschied zu erwähnen. Selbstverständlich würde es da besser aussehen, wenn iii ein anderer Zeichenabstand zugewiesen würde, als www, falls die Abstände zwischen den Lettern korrigiert werden sollen. Ich denke, dass der Abstand in Prozent zum jeweiligen Zeichen berechnet werden müsste.

    Was ich mir vorstellen könnte, ein assoziatives Array zu erstellen, der das große und kleine Alphabet enthält und in dem die Prozente für den jeweiligen Font enthalten sind. Zum Beispiel könnte dann der Abstand beim i 50 % des durchschnittlichen Letter-Spacing betragen und beim W 120 %.

    Weiß jetzt jedoch nicht so genau, welche Angaben da bereits in den TTF-Dateien enthalten sind, da ich keinen geeigneten Editor besitze. Doch eventuell enthalten die ja bereits für eine Berechnung des Zeichenabstandes verwertbare Angaben, die nur noch prozentual hochgerechnet werden müssten.
    Zuletzt geändert von Melewo; 25.04.2013, 08:32.

    Kommentar

    Lädt...
    X