V minulosti jsem se tu už několikrát rozepisoval a dělal srovnání vykreslování fontů ve Windows, Linuxu a občas i v OS X. Netajil jsem se tím, že preferuji spíše linuxovou alternativu, která je sice méně ostrá než windowsová (z více důvodů), ale zato je dle mého názoru na pohled výrazně hezčí a věrněji zachovává skutečný vzhled fontu. Mnohokrát jsem si také říkal, že by se mi moc líbilo, kdybych mohl windowsovský ClearType prostě nahradit linuxovým Freetypem a získal tak linuxové vykreslování fontů i ve Windows. Nikdy jsem se o to ale příliš nezajímal, protože jsem předpokládal, že pokud něco takového půjde, bude to nějaký divoký hack, obnášející různé výměny systémových souborů, šťourání se v systému a to celé pak stejně nebude příliš funkční.
Před pár dny jsem nicméně začal v Linuxu zkoumat a testovat tzv. Infinality patchset pro Freetype2 knihovnu, který výrazně rozšiřuje možnosti a konfigurovatelnost Freetype. A mimoděk jsem přitom narazil na zmínky o utilitě, s jejíž pomocí je možné snadno dosáhnout právě výše zmíněného efektu ve Windows.
Další průzkum ukázal, že takových utilit existuje hned několik s různými omezeními, ale pro mě byla nejzajímavější utilita (respektive služba) s názvem GDIpp. Z více důvodů: jednak působí poměrně použitelným dojmem (některé z alternativ připomínají dle komentářů uživatelů spíše polofunkční alfaverze) a jednak podporuje i 64bitová Windows (která pochopitelně provozuji).
Instalace samotná je velice triviální, stačí z výše linkovaných stránek stáhnout aktuální verzi (stabilní nebo betu – osobně jsem sáhl po betě a nevidím žádné zásadní problémy) v podobě MSI balíčku a tu nainstalovat. Uživatelům 64bitových systémů přitom stačí nainstalovat pouze 64bitovou verzi, která v sobě obsahuje i 32bitovou. Instalace současně nainstaluje (a v případě přání rovnou nastartuje) i systémovou službu, která od systému převezme správu vykreslování fontů (popřípadě službY, pokud jste na 64bitovém systému). S pomocí těchto služeb se pak dá snadno toto vykreslování zapnout či vypnout.
Vykreslování fontů je konfigurovatelné zatím pouze ručně prostřednictvím jednoduchého XML souboru, který poskytuje poměrně široké možnosti nastavení. Je kompletně zdokumentován přímo ve Wiki na stránkách programu. Co se samotných nastavení týče, patrně nejzajímavější pro většinu uživatelů bude položka hinting, která určuje úroveň hintingu fontů. Výchozí hodnota je 1, v Linuxu označovaná jako slight hinting. Ta je k vidění i na screenshotech níže. Pokud někdo chce ostřejší písmo, asi ho bude zajímat spíše 2 (medium hinting) či 3 (full hinting). Jejich použitím se dá docílit velmi odlišného a velmi ostrého vzhledu fontů, který je dle mého názoru stále výrazně příjemnější než to, co nabízí standardní CleartType – především mi přijde, že jsou znaky kontrastnější a přitom stále mají vyhlazené hrany, na rozdíl od ClearType, který je nezřídka na můj vkus až příliš pixelovatě „zubatý“ a znaky přitom nemají kdovíjak zázračný kontrast. Nastavení se přitom dá specifikovat pro konkrétní fonty či konkrétní aplikace dle libosti (ale opět zatím pouze ručně ve zmíněném souboru).
Je více než jasné, že takovéto alternativní vykreslování fontů nebude vyhovovat každému. Níže je na ukázku několik screenshotů, které ukazují rozdíl GDIpp ve výchozím nastavení oproti ClearType v různých situacích. Znovu podotýkám, že pouhou změnou nastavení hintingu se dá docílit výrazně odlišného vzhledu fontů. Na posledních dvou obrázcích jsou pro ilustraci čtyři z předchozích screenshotů nejprve s nastavením hintingu 2 a poté 3 pro ty, koho by tyto alternativy zajímaly.
A ještě dvě poznámky. Zaprvé – náhrada původního vykreslování není stoprocentní, občas zkrátka lze narazit na nějaký (obvykle systémový) text či tlačítko, vykreslované standardním způsobem. A zadruhé – jako vždy, když je řeč o vykreslování fontů, je třeba mít na paměti, že výsledky se liší v závislosti na konkrétním fontu (z mnoha důvodů). Ideální univerzální způsob vykreslování fontů, se kterým by všechny fonty vypadaly tak dobře, jak mohou, neexistuje (a jedinou možností, jak se mu přiblížit, je tak jedině ruční definování specifických vykreslovacích parametrů pro každý font zvlášť).
Na všech screenshotech je jako první (tzn. vlevo nebo nahoře) standardní ClearType a poté GDIpp. Samozřejmě je třeba zajistit jejich prohlížení ve velikosti 1:1 (snad všechny browsery už dnes obrázek, pokud se nevejde do okna bez scrollování, standardně zmenšují tak, aby se tam vešel). A znovu podotýkám, že je mi naprosto jasné, že pokud je pro někoho nejdůležitější dokonalá ostrost písma, rozhodně ho výchozí nastavení GDIpp neoslní. Pro mě jsou ale písma „v provedení Cleartype“ zkrátka příliš „tenká“ a pixelovatá – některé fonty pak vyhlížejí až tak, jako by se jednalo o nevyhlazované bitmapové fonty, nikoliv o vyhlazované TTF.
Díky za článek. Jenom ale podotýkám, že mně Beta ve Vistě nefungovala, musela jsem nainstalovat Stable. A ještě mám takový problém – na některých stránkách se v Opeře ten text nezobrazí korektně; v ostatních browserech je to OK. Myslíš, že to má co dělat se systémem, nebo s nastavením fontů v Opeře, případně s něčím úplně jiným? Vypadá to takhle: https://lh3.googleusercontent.com/-_Fv9LmeChp0/TfOux0kA_PI/AAAAAAAAAZo/mb3T8bFis9A/s800/font_problem.PNG
Jinak Opera 11.11, 32-bit Windows Vista.
Hm, nepomůže reload? Mně tohle v Opeře (poslední Opera Next) dělalo, když jsem GDIpp zapnul/vypnul a neudělal reload stránky. Ona se u některých fontů s tím vykreslováním trochu změní i metrika a pak to zřejmě udělá tohle. Taky vím, že některé verze Opery v Linuxu tenhle problém měly, ale pokud vím, tak to už snad bylo před časem nějak odstraněno (moc jsem to nesledoval, netýkalo se mě to).
Ale stejně tak to taky může být něčím v tom, že ty máš stable, zatímco já betu…kdo ví. Jestli jsem to totiž dobře pochopil, tak autoři to pro některé aplikace musejí specificky upravovat, možná stable úpravu, která tohle řeší, ještě nemá, zatímco ta beta už jo…
Ale kdo ví, samozřejmě. Proč vlastně dneska ještě někdo dobrovolně používá Vistu? ;)
Reload jsem samozřejmě zkoušela jako první (stejně jako restart Opery).
Hm, tak tu 32bit betu jsem nerozběhala ani na W7 (nainstalovala se, ale nešla spustit). Na W7 ta stable verze dělá v Opeře totéž.
Hm, tak jeden problém objeven i tady – zpomaluje to vykreslování. Za normálních podmínek to není evidentní, ale například už tak pekelně pomalý Google Reader s tím u mě v Opeře padá víceméně za hranici použitelnosti :/ A na některých jiných pomalejších stránkách (Twitter, např.) je to taky pozorovatelné.
„Pro mě jsou ale písma „v provedení Cleartype“ zkrátka příliš „tenká“ a pixelovatá“
A nezkoušel jsi nastavení ClearType znovu nakonfigurovat vůči LCD? Některé z těch nabízených variant působí tlustším dojmem… byť na první pohled to má asi pořád daleko do těch vysoftěných variant. Každopádně nejlepší by to bylo vidět vyfotografované přímo z tvého monitoru, na jiném s jinou roztečí bodů a technologií to zase může působit jinak, nehledě třeba na srovnání horizontálního a vertikálního ClearType (když je displej na výšku), takže ty screenshoty nemají tak velkou vypovídající úroveň.
Kdyby byl hlavní problém ClearType renderingu v tučnosti/kontrastu fontů, jistě by ladění ClearType mohlo pomoci. Ale v té problém není, ta je jen externím projevem.
Rozteč bodů nemá na fungování subpixelového vyhlazování naprosto žádný vliv, pokud screenshot zobrazíš 1:1 (což zdůrazňuju). Na monitoru s nižší roztečí bodů bude akorát fyzicky menší než u mě, ale to je asi tak všechno. A co se týče odlišné technologie, snad 99 % současných LCD monitorů (k PC) používá klasické uspořádání RGB subpixelů, takže ani technologie do toho příliš nevstupuje (a pokud má někdo snad náhodou na monitoru technologii jinou, pak mě upřímně vůbec nezajímá, jak ty screenshoty vidí nebo nevidí). Jediným významněji relevantním faktorem je tu to, jestli dotyčný používá nebo nepoužívá nativní rozlišení svého displeje (lidí, které ho nepoužívají, je překvapivě hodně), ale pokud ne, je pro mě zase zcela nezajímavý a je to čistě jeho problém.
Žádný „vertikální“ a „horizontální“ ClearType neexistuje. ClearType umí uspokojivě pracovat jen ve vertikálním režimu, v horizontálním vypadá strašně, protože s takovým uspořádáním subpixelů prostě neumí smysluplně pracovat, umí si poradit jen s vertikálním. V horizontálním s textem páchá příšerná zvěrstva. Sám Microsoft doporučuje v režimu portrait ClearType vypínat. Nemluvě o tom, že subpixelové vyhlazování na displejích s horizontálním uspořádáním subpixelů je kapitola sama pro sebe, mimo jiné například i proto, že pro oko a pro to, jak vnímá čitelnost textu, je primární spíš vyhlazování ve vertikálním směru, horizontální je až druhotné.
BTW nechceš jít svoje zasvěcená moudra ke každému příspěvku šířit zase třeba na nějaký jiný blog, kde jsou na tebe víc zvědaví? Jestli jsi získal dojem, že jsem z tvojí přítomnosti a tvých komentářů nějak u vytržení, byl rozhodně velmi mylný, akorát pořád marně čekám, že tě to třeba přestane bavit.
„Rozteč bodů nemá na fungování subpixelového vyhlazování naprosto žádný vliv, pokud screenshot zobrazíš 1:1 (což zdůrazňuju).“
Má vliv na výsledný dojem (ty pořád operuješ s tím, že je to pro tebe subjektivně příjemnější než ostré pixelovaté písmo… a přitom to může být právě a jen tvým konkrétním LCD nebo roztečí (je rozdíl mít ve stejné vzdálenosti 1680×1050 na 20 nebo 22″)).
„Jediným významněji relevantním faktorem je tu to, jestli dotyčný používá nebo nepoužívá nativní rozlišení svého displeje“
Ne, druhým faktorem je třeba i to otočení displeje. Mám tu před sebou 3 různé displeje, jeden otočený v pivotu na výšku, a když si tvůj „jednoznačný screenshot 1:1“ zobrazím na každém z nich, tak dojem je pokaždé jiný. (A tvůj článek jsem původně četl ještě na notebooku, kde to působilo zase jinak, mnohem vyhlazeněji)
„ClearType umí uspokojivě pracovat jen ve vertikálním režimu, v horizontálním vypadá strašně, protože s takovým uspořádáním subpixelů prostě neumí smysluplně pracovat, umí si poradit jen s vertikálním.“
Jestli vypadá strašně je subjektivní (já na něm normálně pracuju), ale jinak funguje úplně normálně, s makro předsádkou jsem si to kdysi kvůli vývoji her fotil a na těch subpixelech je to vidět.
„BTW nechceš jít svoje zasvěcená moudra ke každému příspěvku šířit zase třeba na nějaký jiný blog, kde jsou na tebe víc zvědaví?“
Já šířím nějaká moudra? Píšeš zajímavé příspěvky, proto je čtu, a naopak mě k tomu napadnou související věci, na které se pak ptám (jako teď ta otázka, zda ses díval na ten setup ClearType, protože jsem si vybavoval, že některé z těch variant byly tučnější). Pokud si správně vybavuju, napsal jsem tady na tvém blogu nějaké příspěvky asi ke 4 článkům (tomu bych opravdu neříkal „ke každému“), a snad v každém z nich jsem vždy text pochválil, a pak jen doplnil o svůj komentář nebo dotazy. Nevím, proč to vůbec bereš osobně a máš tendenci řešit.
Samozřejmě mi nedělá problém ti tu nic nepsat, pokud z toho máš takový mindrák a nezvládáš veřejnou diskuzi k veřejným článkům, stačilo říct, skutečně mi to z tvých reakcí nedošlo, protože ten arogantní styl psaní a vtípky jako se Saturninem předvádíš běžně a nijak to nevybočovalo ;)