Jako użytkownik Opery od wersji 4.x poczułem się mocno zmartwiony niefrasobliwym podejściem deweloperów Opera Software do kwestii czcionek w linuksowej wersji tej przeglądarki. Mniej więcej odkąd zaczęły się ukazywać pierwsze testowe buildy nowej serii Opery, cierpliwie czekam aż czcionki zaczną wyglądać "po ludzku". W różnych miejscach globalnej sieci informatycznej (w tym w komentarzach na blogu Desktop Team) nie brak zgłoszeń, że czcionki wyglądają gorzej niż w Operze 10.10, ale poprawek ani widu ani słychu. Problem dotyczy osób takich jak ja, które korzystają z nieco bardziej wyszukanych ustawień czcionek, konkretnie subpixel hintingu. Przyczyn zaś należy dopatrywać się w rozwodzie nowej serii Opery z Qt na rzecz własnego toolkitu. Wprawdzie deweloperom przyświecał szczytny cel - przyśpieszenie działania przeglądarki i lepsza integracja z różnymi środowiskami, ale w wyniku migracji nie obyło się bez różnych mniej lub bardziej uciążliwych usterek - w tym właśnie związanych z czcionkami. Opóźnienie w pracach nad wersją linuksową dodatkowo zaogniło problem.
W każdym razie, przez długi czas właśnie czcionki zmuszały mnie do pozostania przy Operze 10.1x. Wiedząc jednak, że nie mogę trzymać się jej bez końca, ostatnio zdecydowałem na aktualizację. Oczywiście zgodnie z oczekiwaniami wersja 10.62 nadal ignorowała ustawienia fontconfiga. Doświadczalnie doszedłem do wniosku, że istota problemu tkwi w wymuszaniu natywnego hintingu (BCI) zamiast autohintingu. Który z nich jest lepszy to kwestia gustu, ale osobiście przyzwyczaiłem się do tego, co oferuje autohinter, i na czymkolwiek innym moje oczy odczuwają wyraźne zmęczenie.
Biorąc pod uwagę opieszałość Opera Software i bezużyteczność ustawień fontconfig, postanowiłem zaatakować poziom wyżej - w kodzie źródłowym freetype. Mimo, że pierwszy raz zapuszczałem się w te tereny, sprawa okazała się dość prosta. Kilka linii kodu wystarczyło, żeby wymusić na stałe autohinter. Później dopisałem jeszcze warunek, żeby nie był używany dla grubych fontów (robią się trochę ZA grube).
Nie będzie to w żadnym razie kompletne HOWTO (zakładam, że czytający będą wiedzieli co z tym zrobić), ale oto co zrobiłem:
1) Skompilowałem freetype z zaaplikowaną moją łatką.
2) Skopiowałem /usr/lib/libfreetype.so.6.6.0 z tak spreparowanej paczki w bezpieczne miejsce.
3) W skrypcie /usr/bin/opera przed ostatnią linią dopisałem:
export LD_PRELOAD="/ścieżka/do/załatanego/libfreetype.so"
To może niezbyt eleganckie obejście dało mi w końcu jakąś namiastkę tego, czego szukałem - czcionki, od których nie krwawią mi oczy :P Mam wrażenie, że nie wszystko wygląda tak samo jak kiedyś (nowa wersja jakoś inaczej dobiera rozmiary czcionek i nie tylko), ale efekt jest bardzo bliski temu, do czego przywykłem. Mam nadzieję, że komuś te informacje pomogą w uniknięciu wizyty u okulisty :) Tymczasem nadal będę czekał na wersję Opery, w która będzie respektowała bez żadnych obejść ustawienia czcionek.