Besseres Font-Rendering unter Windows mit GDI++

22 05 2009

Basics

Das Pro­blem der Dar­stel­lung von Schrift­ar­ten auf einem Bild­schirm liegt in der Tat­sa­che begrün­det, dass die Zei­chen in einem fes­ten Pixel­ras­ter dar­ge­stellt wer­den müs­sen. Bei­spiels­weise ste­hen für den gan­zen Bild­schirm bei einer Auf­lö­sung von 1.280 × 1.024 genau 1.310.720 Pixel zur Dar­stel­lung des Inhal­tes zur Ver­fü­gung. Was zunächst beein­dru­ckend klingt, ist es in der Pra­xis nicht, denn wenn man z.B. das große »A« der Schrift­art »Arial« in der Größe 12 auf den Screen bringt, dann ste­hen dem armen Let­ter gerade mal 6 × 7 Pixel zur Ver­fü­gung. Da kann jeder Dru­cker nur müde lächeln. Als wäre das nicht genug, stellt ein heu­ti­ger Bild­schirm 96 dpi dar (dots per inch /​Punkte pro Zoll), ein Spit­zen­dru­cker kommt hier auf Werte von 1.600 dpi. Und schließ­lich wer­den im Regel­fall zur Dar­stel­lung des Buch­sta­ben dann ganze zwei (!) Far­ben ver­wen­det. Was dabei her­aus kommt ist rechts zu sehen. Schlecht zu lesen und ästhe­tisch ein Grauen.

Arial 12 ohne Font-Smoothing
Ver­grö­ßerte Dar­stel­lung des Buch­sta­ben »A« aus der Schrift­fa­mi­lie Arial bei Größe 12 ohne Anti-​Aliasing.

Ab Win­dows 95 wurde ein Standard-​Anti-​Aliasing (siehe unten) ange­bo­ten, dass den ver­pi­xel­ten Effekt abmil­dern sollte, aller­dings war der Qua­li­täts­ge­winn kaum wahr­nehm­bar. Auch unter Win­dows XP war dies noch die Grund­ein­stel­lung. Aller­dings spen­dierte uns Micro­Soft einen tech­no­lo­gi­schen Fort­schritt; Font-​Smoothing1 war im Anmarsch.

Cle­ar­Type

Mit Cle­ar­Type wurde ab Win­dows XP eine Tech­nik zur bes­se­ren Dar­stel­lung von Schrift­ar­ten aus­ge­lie­fert, die auch in vie­len ande­ren Berei­chen der digi­ta­len Gra­fik zum Ein­satz kommt, das soge­nannte Anti-​Aliasing, eine Art Kan­ten­glät­tung. Dabei wer­den nicht nur die rei­nen Pixel betrach­tet, son­dern auch die Umge­bung der­sel­ben aus­ge­wer­tet (Subpixel-​Rendering2). In der Folge wer­den durch Inter­po­la­tion beson­ders krasse Kon­traste mit teil­trans­pa­ren­ten Pixeln abge­schwächt. Bei einem schwar­zen Buch­sta­ben auf wei­ßem Hin­ter­grund also z.B. durch ver­schie­dene Grau­stu­fen. Das Ergeb­nis ist ein wesent­lich ange­neh­me­res Schrift­bild, ein opti­scher Gewinn und dank­bare Augen.

Arial 12 mit ClearType
Der glei­che Buch­stabe wie oben, dies­mal mit akti­vier­tem ClearType.

Micro­Soft nannte seine Ver­sion des Font-​Smoothings Cle­ar­Type, auf einem Apple-​Rechner sorgt die Rendering-​Engine Quartz für hüb­sche Schrift. Beide Vari­an­ten könn­ten unter­schied­li­cher nicht sein3. Cle­ar­Type sorgt für scharfe, auf die Bild­schirm­dar­stel­lung opti­mierte Zei­chen, Quartz hin­ge­gen stellt Buch­sta­ben eher so dar, wie sie auch beim Aus­druck erschei­nen, für einen Windows-​User sieht das Ganze viel zu fett und ver­schwom­men aus. Der Auf­schrei jeden­falls, der damals bei Erschei­nen des Safari für Win­dows durchs Netz ging, zeigte deut­lich, welch Gewohn­heits­tier der Mensch ist. Wer damals den Safari – aus die­sem Grund – sofort wie­der dein­stal­liert hat, braucht hier nicht weiterlesen.

Free­Type /​GDI++

Das FreeType-​Projekt ent­wi­ckelt seit eini­gen Jah­ren eine freie, leicht por­tier­bare Pro­gramm­bi­blio­thek zur Dar­stel­lung von Schrif­ten im Pixel­ras­ter. So ist Free­Type z.B. unter Linux die Standard-​Software zur Ras­te­rung von True­Type– und OpenType-​Schriften. Quasi ein Cle­ar­Type für alle, nur dass das Ren­de­ring mehr dem Stil von Mac OS ent­spricht. Dem Windows-​User bie­tet sich damit die Mög­lich­keit, sich seine bevor­zugte Methode des Font-​Smoothings aus­zu­su­chen. Wie kann man nun aber Free­Type unter Win­dows nutzen?

Die Lösung heißt GDI++.DLL und wurde von Dr. Wat­son ent­wi­ckelt. Auch wenn der Name eher einen angel­säch­si­schen Ursprung ver­mu­ten läßt, kommt er aus Japan, was die weni­gen eng­lisch­spra­chi­gen Infos zur Soft­ware erklärt.

gdi++.dll is a repla­ce­ment for the Win­dows default font ras­te­ri­ser, which gives you a bet­ter font smoot­hing capa­bi­lity, just like Mac OS X. It hacks one of the most import­ant core dlls for gra­phics, gdi32.dll.

Durch GDI++ wer­den also Funk­tio­nen der System-​Bibliothek GDI32.DLL ver­än­dert, die u.a. für das Ren­dern der Schrift­ar­ten zustän­dig ist. GDI++ ver­wen­det dabei andere Metho­den zur Kan­ten­glät­tung (die der FreeType-​Bibliothek) und somit sieht auch das Ergeb­nis anders aus. Je nach Setup ver­gleich­bar dem Erschei­nungs­bild unter Mac OS X.

Instal­la­tion

Vergleich der Rendering-Methoden
Die Rendering-​Methoden im Ver­gleich. Wer soll Dein Herz­blatt sein?

Dr. Wat­son hat seine Akti­vi­tä­ten bezüg­lich GDI++ zwar ein­ge­stellt, aller­dings wird die Soft­ware trotz­dem wei­ter ent­wi­ckelt und so gibt es rela­tiv viele ver­schie­dene Pakete zum Down­load. Die von sei­ner Web­site sind mitt­ler­weile bald drei Jahre alt, würde ich also nicht unbe­dingt emp­feh­len. Ich per­sön­lich ver­wende die Down­loads die­ser japa­ni­schen Seite und mein Favo­rit ist dabei das Paket gdi0870.zip. Nach dem Ent­pa­cken wird der Ord­ner ein­fach an eine belie­bige Stelle auf der Fest­platte kopiert (z.B. C:\GDI) und die darin ent­hal­tene Datei gditray.exe gestar­tet. Mit einem Rechts­klick auf das neue Sym­bol im Sys­tray und Aus­wahl des Menü­punk­tes → Enable wird das neue Font-​Rendering akti­viert. Über → Use Pre­fe­ren­ces kann man ver­schie­dene Ein­stel­lun­gen tes­ten und sich die Beste für sei­nen Bild­schirm aussuchen.

Fein-​Tuning

Wem die mit­ge­lie­fer­ten INI–Dateien nicht aus­rei­chen und wer Spaß am Expe­ri­men­tie­ren hat, der fin­det hier einige Erläu­te­run­gen zu den ein­zel­nen Para­me­tern. Dazu spä­ter mal ein eige­ner Arti­kel. In der jewei­li­gen INI–Datei kann man auch bestimmte Schrift­ar­ten oder Pro­gramme vom neuen Font-​Rendering aus­schlie­ßen. Bei aus­ge­wähl­ter Soft­ware soll es hier und da zu merk­wür­di­gen Anzei­gen kom­men. Ich habe GDI++ seit ca. einem hal­ben Jahr im Ein­satz und habe bis­her nur bei Els­ter For­mu­lar eine Macke fest­ge­stellt: Die Buch­sta­ben wer­den alle ver­ti­kal gespie­gelt dar­ge­stellt. Um also Schrift­ar­ten vom Ren­de­ring aus­zu­schlie­ßen, genügt in der ent­spre­chen­den INI–Datei fol­gen­der Eintrag:

[Exclude]
Georgia
Times New Roman

Damit wür­den diese Schrift­ar­ten mit dem klas­si­schen Cle­ar­Type dar­ge­stellt. Genauso kann man Pro­gramme ausschließen:

[DenyModule]
itunes.exe
elfo2008.exe
elfostarter2008.exe

Hier z.B. iTu­nes und besag­tes Els­ter For­mu­lar. Ansons­ten konnte ich bis­her kei­ner­lei Pro­bleme beim Ein­satz von GDI++ fest­stel­len. Unterm Strich sollte man GDI++ ein­fach mal pro­bie­ren. Ich möchte es jeden­falls nicht mehr missen.


1 Krzy­sz­tof Szaf­ra­nek, Font smoot­hing explained

2 Gib­son Rese­arch Cor­po­ra­tion, Sub-​Pixel Font Ren­de­ring Technology

3 Joel Spolsky, Font smoot­hing, anti-​aliasing and sub-​pixel rendering