piątek, 22 lipca 2016

Ładniejsze czcionki w linuksie

UWAGA: Wraz z instalacją harfbuzz 1.4.x prezentowane tu rozwiązanie nie jest już prawidłowe i spowoduje błędy w systemie!

Szczerze powiedziawszy, to nie widziałem jeszcze tyle osób narzekających na to, czego używa, jak w świecie linuksa. Tym razem poradnik dla osób narzekających na niewłaściwy wygląd czcionek. Jeśli te, które są dostępne zaraz po instalacji Wam nie pasują z jakiejś przyczyny, to radzę spróbować zainstalować czcionki z patchami tzw. infinality. Można to zrobić "przez mękę", bawiąc się w budowanie tych paczek z AUR, a następnie mozolnie konfigurując, można prościej, dopisując odpowiednie repozytorium do ich listy dla pacmana, a następnie instalując odpowiednie paczki. Ograniczę się do tej ostatniej opcji. Też bywam leniwy.

Więcej o Infinality dowiecie się z oficjalnej strony.

Instalację rozpoczynamy od edycji pliku /etc/pacman.conf i dopisaniu odpowiedniego repozytorium:

[infinality-bundle]
Server = http://bohoomil.com/repo/$arch

W następnej kolejności, musimy dodać klucze do paczek z tego repozytorium:
# pacman-key -r 962DDE58 && pacman-key --lsign-key 962DDE58

Teraz jesteśmy już przygotowani do instalacji paczki z poprawionymi czcionkami.

Rozpoczynamy jak zwykle od synchronizacji bazy pacmana i aktualizacji systemu:
# pacman -Syu
Teraz do wyboru będziemy mieć trzy opcje:

  1. freetype2-infinality-ultimate - która oferuje freetype2 zbudowane z patchami Infinality (i kilkoma innymi),
  2. fontconfig-infinality-ultimate - oferuje fontconfig zoptymalizowany do współpracy z freetype2-infinality-ultimate (zostanie zainstalowana jako zależność), oferując również dodatkowe czcionki i kilka plików konfiguracyjnych dla nich; paczka oferuje również fonty MS,
  3. cairo-infinality-ultimate - cairo zbudowane z patchami Ubuntu i dodatkowymi.

Wydaje mi się, że optymalnym rozwiązaniem jest instalacja drugiej z paczek (dla systemów opartych o Qt) lub trzeciej (dla systemów opartych o Gtk, ale nie jest to konieczne).
Instalacja przebiega standardowo:
# pacman -S <nazwa_paczki_z_powyższej_listy>
Podczas instalacji otrzymamy informację o tym, że system chce zastąpić zainstalowane wcześniej pakiety - akceptujemy proponowane rozwiązanie, czyli godzimy się na zmianę paczek.

Oprócz powyższych, możemy się pokusić również o doinstalowanie dodatkowych paczek dostępnych w repozytorium, takich jak poprawiony font Oxygen, czy fonty dla oprogramowania wykorzystującego środowisko java. Listę otrzymamy po wpisaniu:
pacman -Sl infinality-bundle

Jeśli ktoś korzysta z dobrodziejstw multilib i programów 32-bitowych w systemie 64-bitowym, to przydatne jest również zainstalowanie odpowiednich paczek przygotowanych na taką sytuację. Bohoomil oferuje bowiem również paczki multilib. Podobnie jak poprzednio rozpoczynamy od edycji pliku /etc/pacman.conf i dopisujemy:
[infinality-bundle-multilib]
Server = http://bohoomil.com/repo/multilib/$arch
Tym razem nie musimy już dodawać kluczy, albowiem wcześniej są one dodane, zatem po aktualizacji bazy pacmana, znów mamy analogiczne 3 paczki do wyboru:
  1. lib32-cairo-infinality-ultimate,
  2. lib32-fontconfig-infinality-ultimate,
  3. lib32-freetype2-infinality-ultimate.
Jak się domyślacie, odpowiadają one wcześniejszym. Instalacja  podobnie jak poprzednio:
# pacman -S <nazwa_paczki_z_powyższej_listy
System będzie chciał podmienić paczki, na co się godzimy.

Po instalacji i ewentualnym poprawieniu ustawień resetujemy Xy.

W zasadzie system winien być gotowy do pracy. Niemniej jednak możliwym jest również jego stuningowanie. W "dużych" środowiskach mamy odpowiednie GUI, które ułatwiają konfigurację. Zasadniczo, winny one odpowiadać temu, co jest widoczne w /etc/X11/xinit/xinitrc.d/infinality-settings, czyli winno to odpowiadać następującym ustawieniom:
Xft.antialias: 1
Xft.autohint: 0
Xft.dpi: 96
Xft.hinting: 1
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xft.rgba: rgb

Teraz łyżka dziegciu. Wprawdzie czcionki "Infinality" winny być "ładniejsze" jednakże nie zawsze tak jest, szczególnie w przypadku polskich (i prawdopodobnie również innych) znaków diakretycznych. Często zdaża się, że literki te są większe od innych. Wówczas, niestety - dopóki Bohoomil nie poprawi skryptów, trzeba się pobawić w ręczną korektę ustawień czcionek. Ogólnej reguły nie ma, zatem w przypadku problemów - zapraszam na forum.

Na podstawie oraz więcej w:
wiki Archa
strona Bohoomila