# Fonts: Schriftgrößen skalierbarer Fonts wirklich nur als integer möglich?



## jeppi (22. Feb 2010)

Hallo,

gibt es beim SWT irgendwie die Möglichkeit, Fontgrößen jenseits von Integer zu benutzen?
(evtl. Lösungen wären ggf. aber auch in AWT/Swing interessant)

Grund: Ich muss Schriften auch in kleinen Größen (Etiketten) gut lesbar ausgeben
(mit einer Klasse auf Canvas bzw. Printer)

Ich bin etwas panisch, weil ich keine Zwischengrößen nutzen kann, was besonders bei kleinen Schriftgrößen ein echtes typografisches Problem darstellt. Gibt's da irgendeine Lösung (Klasse) gegen? Ich konnte nichts finden...:shock:

Und, wo wir beim Thema sind...:

Weiß jemand, warum die Schriftskalierung auf unterschiedlichen Devices (Druckerauflösungen 600dpi und 1200dpi) so unterschiedlich ausfällt? ich brauche jeden Millimeter, und da stört es, wenn vor allem die Zeilenhöhe auf unterschiedlichen Druckern aus dem Ruder läuft (der Textblock fällt unten aus der kostbaren definierten Fläche, mein eigenes gezeichnetes mm-Grid ist überall schön gleich). 

danke... ehrlich...

Edit: Betreff etwas allgemeiner formuliert
Edit: im Betreff "skalierbare" hinzugefügt...


----------



## Michael... (23. Feb 2010)

jeppi hat gesagt.:


> gibt es beim SWT irgendwie die Möglichkeit, Fontgrößen jenseits von Integer zu benutzen?
> (evtl. Lösungen wären ggf. aber auch in AWT/Swing interessant)


Und wie soll dann so eine Schrift mit einer Größe von 5,83 Pixeln aussehen ;-)
Ein Bildschirm hat nur ganze Pixel und Drucker drucken auch nur ganze Pixel.
Wenn die Schrift besser lesbar sein soll, versuch's mal mit anderen Schriftarten ohne grosse Schnörkel und grösserer Laufweite - evtl. Courier


----------



## jeppi (23. Feb 2010)

Michael... hat gesagt.:


> Und wie soll dann so eine Schrift mit einer Größe von 5,83 Pixeln aussehen



Mir reicht auf eine Nachkommastelle (aber das im Ernst ueh. Eine Schrift mit 3,5 pt (keine Pixel, keine Dots, siehe unten!) ist immerhin schon fast 20 % größer als eine mit 3, was eine ganze Menge ist... auch machen sich bei längeren Texten 0,2pt in der gesamten Textgröße schon sehr stark bemerkbar.

Die Schriftgröße wird im Gegensatz zu allen anderen Maßen in pt angegeben und vom SWT/JAVA(?) automatisch (mehr oder weniger!) passend skaliert. Ich würde ja sogar eine Klasse verwenden, die mir die Schriften selbst in den gc zeichnet.



Michael... hat gesagt.:


> Ein Bildschirm hat nur ganze Pixel und Drucker drucken auch nur ganze Pixel.



Das mag sein, hat aber hier keinen Einfluss, da ich hier die skalierbaren (TTF-)Fonts meine (habe ich vergessen anzugeben, sorry!). Un die können eben theoretisch durchaus passend skaliert werden, da sie auf Vektoren basieren... 

Jedes halbwegs gute Layoutprogramm (InDesign, von mir aus auch CorelDraw) bietet die Möglichkeit, Fonts nicht nur in ganzen pt-Größen zu verwenden und auch sauber auszugeben.

Edit: Tippfehler...


----------



## Michael... (23. Feb 2010)

Wie das in Java gehandhabt wird keine Ahnung.
Die Klasse Font bietet die Methode deriveFont() mit der die Schriftgröße als float übergeben wird. Welche Auswirkungen das beim Plotten hat und ob SWT etwas mit AWT Fonts anfangen kann - keine Ahnung.


----------



## jeppi (23. Feb 2010)

Michael... hat gesagt.:


> Wie das in Java gehandhabt wird keine Ahnung.



Ich kann auch nicht nachvollziehen, warum sich alles schön einheitlich skalieren lässt 
und sowohl auf 600 dpi als auch auf 1200 dpi Ausgabe gleich ausgeben lässt, nur die Schriften nicht.
Das Resultat ist schwer unkontrollierbar... ich mag da auch Rundungsfehler nicht wirklich gelten lassen. 

(Alles selbst skalieren zu müssen, aber Schriftskalierung dem "System" überlassen zu müssen - das ist etwas halbgar)



Michael... hat gesagt.:


> Die Klasse Font bietet die Methode deriveFont() mit der die Schriftgröße als float übergeben wird. Welche Auswirkungen das beim Plotten hat und ob SWT etwas mit AWT Fonts anfangen kann - keine Ahnung.



Hm... danke für den Hinweis. Der Spur werde ich mal folgen - befürchte aber wenig Gutes:

derive(float size) dient zur Unterscheidung von derive(int style) - 
ich befürchte, das wird dann von derive-methode intern auch wieder nur in ein integer umgewandelt,
da auch der awt Font-Constructor nur integer als Größe zulässt... 
und von dem Objekt wird dann ja der leicht geänderte Font mit derive abgeleitet.

EDIT: 
Ich habe nicht vor, awt und swt zu vermischen (Gott behüte), würde das Problem aber ggf. durchaus nach awt oder so auslagern, wenn's da eine elegante Lösung gibt.


----------



## jeppi (21. Mrz 2010)

Wen's interessieren sollte...: 

Bisher ist mir nur ein schmutziger Hack unter Qualitätseinbußen eingefallen:
Text auf Image zeichnen, Image anschliessend skaliert in den GC zeichnen.

Habe noch nicht herausgefunden, wie sich Schrift anders zuverlässig skalieren lassen sollte.

Thema wird geschlossen...


----------

