Philipp Hasenfratz: Beispiel PDF's und Feststellungen (bzw. noch mehr Fragen *g*)

Beitrag lesen

Halihallo

So, bin leider noch immer nicht wirklich weiter und langsam werde ich sauer :-)

Leider konnte ich auf die vertical-Headertabelle nicht bei jedem Font zugreifen, also
bin ich auf den Header der TTF zurückgegangen. Dort gibt es zwei Attribute, yMin und yMax
deren Sinn ich eigentlich nur erraten kann (Doku nicht wirklich hilfreich). Bei
Arial haben sie z.B. folgende Werte:

xMax:    4154
   xMin:    -1361
   yMax:    2060
   yMin:    -665
   unitsPerEm: 2048  (na, dann können wir das mal in Em umrechnen, s. ff...)

Calculated to em:
   xMax:    2.0283203125
   xMin:    -0.66455078125
   yMax:    1.005859375
   yMin:    -0.32470703125

calculated Font-information:
   Size:    400 px  (given)
   yMax:    402.34375 px    (naja, die BottomLine des Fonts + 402.3 px = TopLine?)
   yMin:    -129.8828125 px (Hm. BottomLine des Fonts = BaseLine - 129.882px ?)

(wird ausgegeben, beim starten meines Test-Programms, s. unten)

also yMin = -0.3247... tja, das stimmt schon mal etwa mit Christians 1/5 überein.
dann yMax = 1.0058... Hä? - Ein Buchstabe grösser als das totale selber? - Kann mir
das jemand erklären, was das soll?

Egal, kurz ein PDF-generierer geschrieben und mit den Werten rumgespielt, Resultat:
Disaster. Zumindest bei Arial ist das "H" grösser als die berechnete Top-linie des
Fonts... Schaut es euch selber an:

Arial: http://www.emedias.ch/fonttest/arial.pdf
   TTF: http://www.emedias.ch/fonttest/arial.ttf
Times: http://www.emedias.ch/fonttest/times.pdf
   TTF: http://www.emedias.ch/fonttest/times.ttf

Das Script liegt unter http://www.emedias.ch/fonttest/font.txt

Folgende "Formeln" habe ich verwendet:

Y-Achse der Top-Linie:
TopLineY = BaseLineY - (yMax+yMin) * FontSize
         = something - (1.0058-0.3247) * 400 (in den PDF's)

Y-Achse der Bottom-Linie:
BotLineY = BaseLineY - (yMin) * FontSize
         = something - 0.3247 * 400 (also etwa BaseLine-130px)

Y-Achse der Base-Line:
Äm, da wird der Font ausgerichtet, kann man also selber ganz einfach festlegen...

---

Liebe Leute, ich hab den Überblick verlohren... Ich weiss weder was ich will (OK, dass
ich eine richtige, saubere Darstellung kriege), noch wie ich es erreiche...
Fakt ist, dass entweder meine Berechnungen falsch sind, die yMin/yMax nicht dem
entsprechen, was ich glaube dass sie sind, oder dass meine TTF-Fonts korrupt sind...

Nun, vielleicht hat jemand von euch eine Idee?

Allgemeine Zielsetzung ist übrigens schlicht: Die Y-Position der TopLine und der Bottom-
Line des Fonts zu berechnen (BaseLine gegeben).

Viele Grüsse

Philipp

--
RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.