Vykreslování písem

27. 7. 2011 23:54 (aktualizováno) Lukáš Kotek

Abstrakt

Následující příspěvek je krátkým zamyšlením nad vykreslováním písem pomocí knihovny freetype za (či naopak) bez použití bytecode interpreteru.

Úvodní slovo

Na diskuse na toto téma, resp. na téma vykreslování písem, jejich „tenkosti“ a použitelnosti toho či onoho nastavení povětšinou ve webových prohlížečích, jsem narazil už několikrát. I proto jsem se rozhodl, že si udělám malý test a jeho výsledky zde zveřejním.

Některé distribuce, možná většina, má tuto knihovnu zkompilovanou s aktivním bytecode interpreterem. Konkrétně vím o Debianu nebo Ubuntu. Ve Fedoře, pod kterou test proběhl, je v imlicitním nastavení tato knihovna zkompilována jednak bez bytecode interpreteru, ale také bez podpixelového vyhlazování. Důvodem je s největší pravděpodobností americký původ distribuce a možné obavy z následného vymáhání zde platných patentů.

Řešení je naštěstí velice prosté. Knihovnu zkompilujeme znovu ze zdrojového RPM balíčku – a to se jak s aktivním přepínačem bytecode interpreteru, tak podpixelového vyhlazování – následující postup platí pro Fedoru 8.

Předně je nutné mít nainstalovány balíky rpm-build a gcc nutné pro kompilaci a následné vytvoření RPM balíku. Dále potřebujeme stáhnout zdrojový balík freetype. Máme-li toto hotovo můžeme postoupit dále.

 rpm -i freetype-2.3.5-3.fc8.src.rpm
 rpmbuild -bb --with bytecode_interpreter --with subpixel_rendering\
  /usr/src/redhat/SPECS/freetype.spec
 rpm -i --force /usr/src/redhat/RPMS/i386/freetype-2.3.5-3.fc8.i386.rpm

Nyní by mělo být všechno připraveno. Přiznám se – já osobně jsem dosud ve Fedoře už od páté verze preferoval výchozí nastavení a nějakého „nepohodlí“ si nebyl vědom. Vlastně i v jiných distribucích (konkrétně v Debianu 4.0) jsem posléze vyžadoval nastavení právě takové, jak jsem byl zvyklý z Fedory. Ostatně nebylo příliš složité toho docílit.

Parametry testu

Test probíhal při 96 DPI (na 19' LCD). Za střídavého použití freetype knihovny nejprve s aktivním bytecode interpreterem, podpixelovým vyhlazováním a plným hintingem (první test). A posléze ve výchozím nastavení, čili bez podpixelového vyhlazování a bytecode interpreteru, se středním hintingem a vyhlazováním ve stupních šedi (druhý test).

Jak už padlo výše, zmíněné diskuse se týkaly primárně písem ve webových prohlížečích, proto i můj test je zaměřen tímto směrem. Vybral jsem tři weby, které jsem v prohlížeči Firefox 2.0.0.13 zobrazil vždy v obou nastaveních. Rozdíly v zobrazení můžete posoudit právě dále.

První test (s bytecode interpreterem)

Druhý test (bez bytecode interpreteru)

Shrnutí

Porovnáme-li úvodní stranu Root.cz v prvním testu s tou, zobrazenou v testu druhém, zjistíme, že rozdíl je minimální. Popravdě řečeno, v první moment mě napadlo, že jsem omylem udělal dvakrát stejný screenshot a až při bližším zkoumání jsem nalezl drobné odchylky ve vykreslování (dobře, při pohledu na hodiny je to jasné hned :-)).

Na mém osobním webu jsou rozdíly již mnohem markantnější. Zvláště u písmen „x“ a „k“, kde ona – zde jasně patrná – tenkost písma dosahuje svého minima – a stejně tak skoro hranice čitelnosti o estetickém dojmu nemluvě. Kontrast vůči druhému screenshotu, kde je písmo vcelku „zdravě syté“, je zjevný.

Třetí screenshot, jenž zobrazuje web FedoraForum.org, je podle mne nejvíce diskutabilní. Kdybych to měl v pár slovech shrnout, tak tam, kde v prvním testu je písmo nepřirozeně tenké, je v druhém zobrazeno korektně. A naopak, v prvním testu (zvláště u nadpisů) je způsob vykreslení přece jen o něco příjemnější pro oko, než jak je tomu v druhém.

Závěr

Do určité míry mě překvapilo, jak malý rozdíl mezi jednotlivými nastaveními ve výsledku je (tedy alespoň co se týče zobrazených webových stránek. Kdyby byl test zaměřen na aplikace, bylo by třeba obsáhlejší zhodnocení), i přes značnou odlišnost nastavení nešel v případě Root.cz zaznamenat žádný podstatný rozdíl. Jinde sice už více, avšak meze „korektnosti“ byly překročeny jen málo nebo vůbec.

Trochu jsem si potvrdil věc, kterou jsem si myslel i předtím. A to, že málokterá záležitost nastavení je tak individuální jako právě tato a málokteré hodnocení proto může být tak subjektivní (prosím berte ho tak, pseudoobjektivita za každou cenu není to, o co se snažím). Verdikt pro mne je jasný, zůstanu u výchozího nastavení – bez bytecode interpreteru. Mimo jiné půjde i o zvyk. Spíše mě ale zajímá, jaké nastavení používáte vy a jakým směrem se proto vyvine anketa.

Jak máte zkompilovánu knihovnu freetype?

Sdílet