Infinality, czyli wyraźne czcionki w Linuksie
15.05.2016 05:43
Wstęp
Standardowy wygląd czcionek w dystrybucjach Linuksa pozostawia wiele do życzenia - czcionki są rozmyte, miękkie. Windows - jeśli chodzi o fonty - jest gotowy do pracy out of the box. W Linuksie sprawa jest bardziej skomplikowana. Za rysowanie czcionek odpowiada biblioteka freetype, która w domyślnej konfiguracji jest kompilowana z wyłączonym wygładzaniem podpikselowym (subpixel hinting) - włączenie uniemożliwiają patenty ClearType od Microsoftu. Natomiast od maja 2010 roku freetype jest kompilowane z włączonym bytecode hintingiem - wtedy wygasły patenty Apple'a.Dzięki hintingowi małe czcionki nie są rozmyte nawet z włączonym antyaliasingiem.
Infinality
Z pomocą przychodzi projekt Infinality w której skład wchodzą biblioteka freetype skompilowana z włączonym wygładzaniem podpikselowym, bytecode hintingiem, autorskimi łatkami i ustawieniami oraz zmodyfikowane wersje bibliotek fontconfig i cairo.
Instalacja i konfiguracja
W zależności od dystrybucji instalacja i konfiguracja może się różnić. Skupmy się na Kubuntu. Na Arch Linuksie (na którego pierwotnie powstał projekt) konfiguracja wygląda minimalnie inaczej - ale od czego jest potężne ArchWiki ;‑)
Dodajemy repozytorium Infinality, aktualizujemy bazę pakietów, aktualizujemy system i instalujemy Infinality:
[code=BASH] sudo add‑apt-repository ppa:no1wantdthisname/ppa sudo apt‑get update sudo apt‑get upgrade sudo apt‑get install fontconfig-infinality [/code]
Czcionki od Microsoftu można zainstalować poleceniem:
[code=BASH] sudo apt‑get install ttf‑mscorefonts-installer [/code]
Niestety powyższa paczka nie zawiera wielu czcionek, np. Segoe UI, więc można skopiować czcionki bezpośrednio z partycji Windows. Tworzymy katalog, kopiujemy, nadajemy uprawnienia i odświeżamy pamięć podręczną czcionek:
[code=BASH] sudo mkdir /usr/share/fonts/windows7 sudo cp /media/wojtex/windows_partition/Windows/Fonts/* /usr/share/fonts/windows7 sudo chmod 755 /usr/share/fonts/windows7/* fc‑cache -f -v [/code]
Następnie przechodzimy do katalogu /etc/fonts/infinality i uruchamiamy skrypt konfiguracyjny:
[code=BASH] cd /etc/fonts/infinality sudo ./infctl.sh setstyle [/code]
Wybieramy 6 (win7) i ENTER. W ten sposób aktywowaliśmy ustawienia naśladujące Windows 7: wygładzanie, rodzaj hintingu, domyślne czcionki, ustawienia wyświetlania konkretnych czcionek itp. Wszystko to można przejrzeć w katalogu [/etc/fonts/infinality/conf.d. Jeśli chcemy dostosować ustawienia do swoich potrzeb (np. wyłączyć wygładzanie dla określonych typów i rozmiarów czcionek) możemy skopiować katalog z ustawieniami Infinality i swobodnie go modyfikować:
[code=BASH] cd /etc/fonts/infinality/styles.conf.avail sudo cp -R win7 win7wojtex [/code]
Po zmianach ponownie uruchamiamy infctl.sh setstyle i wybieramy nazwę nowego ustawienia.
Następnie edytujemy skrypt /etc/profile.d/infinality-settings.sh, na przykład:
[code=BASH] kdesudo kate /etc/profile.d/infinality-settings.sh [/code]
Wyszukujemy wiersz USE_STYLE="DEFAULT" i zamieniamy na USE_STYLE="WINDOWS7LIGHTWOJTEX". Następnie wklejamy poniżej sekcję:
[code=BASH] ################ WINDOWS 7 STYLE LIGHT WOJTEX ############## # ZMIONIONE FILTER_PARAMS I WINDOWS_STYLE_SHARPENING_STRENGTH # W STOSUNKU DO WINDOWS7LIGHT if [ "$USE_STYLE" = "WINDOWS7LIGHTWOJTEX" ]; then
export INFINALITY_FT_FILTER_PARAMS="06 25 44 25 06" export INFINALITY_FT_GRAYSCALE_FILTER_STRENGTH=0 export INFINALITY_FT_FRINGE_FILTER_STRENGTH=100 export INFINALITY_FT_AUTOHINT_HORIZONTAL_STEM_DARKEN_STRENGTH=10 export INFINALITY_FT_AUTOHINT_VERTICAL_STEM_DARKEN_STRENGTH=25 export INFINALITY_FT_WINDOWS_STYLE_SHARPENING_STRENGTH=0 export INFINALITY_FT_CHROMEOS_STYLE_SHARPENING_STRENGTH=0 export INFINALITY_FT_STEM_ALIGNMENT_STRENGTH=0 export INFINALITY_FT_STEM_FITTING_STRENGTH=0 export INFINALITY_FT_GAMMA_CORRECTION="1000 160" export INFINALITY_FT_BRIGHTNESS="0" export INFINALITY_FT_CONTRAST="20" export INFINALITY_FT_USE_VARIOUS_TWEAKS=true export INFINALITY_FT_AUTOHINT_INCREASE_GLYPH_HEIGHTS=false export INFINALITY_FT_AUTOHINT_SNAP_STEM_HEIGHT=100 export INFINALITY_FT_STEM_SNAPPING_SLIDING_SCALE=30 export INFINALITY_FT_USE_KNOWN_SETTINGS_ON_SELECTED_FONTS=true
fi [/code]
Zapisujemy. W ten sposób czcionki będą miały podobny wygląd jaki jest w Windows 7. Jeśli chcemy popracować nad własnym wyglądem czcionek warto zainstalować program grip, który umożliwia podgląd ustawień na żywo:
[code=BASH] sudo apt‑get install git gambas3-runtime gambas3-gb-form gambas3-gb-qt4 gambas3-gb-desktop gambas3-gb-image git clone https://github.com/kokoko3k/grip.git cd grip gbc3 -e -a -g -t -p -m && gba3 && ./*.gambas [/code]
Infinality a Windows 7
Przeglądarka Firefox:
Porównałem renderowanie na wielu stronach, z różnym powiększeniem, różnymi czcionkami (italic i bold również) oraz na stronie http://www.typetester.org/. Efekt - rewelacja.