Open Source im professionellen Einsatz

Fonts unter Java

Gesetzte Typen

Ein genauer Blick auf das Thema Fonts in Java-Programmen lohnt sich, denn ein umfangreiches API kann Schriften auf viele Arten verändern. Grundlagenwissen über Schriftfamilien und -technologien ist hilfreich, um dieses Potenzial besser auszuschöpfen.

Ein beliebtes Thema in Java-Mailinglisten war früher das "Zapf Dingbats"-Problem: Jede GUI-Anwendung spuckte beim Laden eine Reihe von Meldungen über nicht gefundene Fonts aus. Die Anwendung lief dann zwar ohne sichtbare Schwierigkeiten, aber die Sache war unschön und erinnerte daran, dass Linux eben keine von Sun aktiv unterstützte Plattform war.

Startprobleme

Die Zeiten haben sich zum Glück geändert und die meisten Anwendungen laufen, ohne dass man sich bei der Programmierung Gedanken über Fonts machen müsste. Java verwendet andere Standardfonts und bringt die wichtigen auch gleich selbst mit. Zudem benutzt die Java-Runtime seit dem JDK 1.3 das Font-Rendering des Betriebssystems für AWT und Swing. Es gibt aber immer wieder Fälle, bei denen man nicht darum herum kommt, sich mit dem Thema Fonts zu befassen. Internationalisierte Anwendungen oder die Einführung des Euro sind dafür Beispiele. Dieser Coffee-Shop erklärt die Philosophie hinter dem Java-Fontsystem und beschreibt die wichtigen APIs. Vor den technischen Details steht aber noch die Klärung wichtiger Begriffe.

Bei Schriften unterscheidet man Schriftarten und Schriftfamilien. Die Schriften einer Familie besitzen ein einheitliches typografisches Design. Eine bekannte Schriftfamilie umfasst beispielsweise die "Computer Modern"-Schriften des Tex-Systems von Donald Knuth, beschrieben in[1]. Das Java-SDK liefert Schriften der Lucida-Familie mit.

Eine Schriftart besitzt charakteristische Merkmale über unterschiedliche Schriftfamilien hinweg, zum Beispiel die Größenverhältnisse von Ober- und Unterlängen oder die Ausprägung der Serifen (das sind die Häkchen an den Buchstaben). Schriftschnitte nennt man spezielle Ausprägungen einer Schrift, etwa normale (regular), fette (bold), kursive (italic), schräg gestellte (slanted) oder Kapitälchen (Caps).

Begriffsverwirrung

Leider werden diese Begriffe nicht immer einheitlich verwendet - auch nicht in der JDK-Dokumentation. Außerdem gibt es Unterschiede bei den Benennungen, zum Beispiel bei Typewriter. Bei Donald Knuth heißt so eine Schriftart, im JDK dagegen eine Schriftfamilie (Lucida Sans Typewriter).

Die Schriftgröße wird in Punkt (pt) gemessen. Die tatsächlichen Größen sind selbst im amerikanischem Maßsystem krumm (eine Folge des 1959 veränderten Umrechnungsfaktors zwischen Inch und Zentimeter, siehe[1]): 72,27 pt kommen auf 1 Zoll (Inch), 1 pt hat also ungefähr 0,351 mm. Schriftgrößen ab 10 pt sind normal lesbar, kleinere sind nützlich für Indizes oder Exponenten.

Vereinfacht ausgedrückt geben Fonts an, wie ein Buchstabe zu malen ist. Dabei gibt es eine n:m-Beziehung zwischen Buchstabe (n) und Zeichen (Glyph): Der Buchstabe ä besteht aus drei Zeichen (dem a und zwei Punkten). Die beiden Buchstaben fi werden bei manchen Schriftarten zu einer Ligatur, also zu einem Zeichen zusammengezogen: Þ. Je nach Kontext kann ein und derselbe Buchstabe durch verschiedene Zeichen repräsentiert werden. Das betrifft besonders nicht-europäische Schriften.

Bevor ein Text am Bildschirm erscheint, sind also mehrere Schritte notwendig: von der Unicode-Repräsentation über den Font selbst bis zum Layout der Zeichen. Mit Java kann der Programmierer alle Schritte selber kontrollieren, muss sich aber im Allgemeinen darüber kaum Gedanken machen, da die Standardvorgaben des JDK normale Anwendungsfälle abdecken.

Diesen Artikel als PDF kaufen

Als digitales Abo

Als PDF im Abo bestellen

comments powered by Disqus

Ausgabe 07/2013

Preis € 6,40

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook