[OpenBSD]

Antyaliasing i czcionki TrueType w systemie OpenBSD

Spis treści:


Zrzut ekranu xterm'a

porównanie dwóch xterm(1)'ów z czcionkami z aliasingiem i bez:
[Standard and anti-aliased xterm]

Zrzut ekranu Konqueror`a

Wciąż niezbyt przekonany? Rzuć zatem okiem na to:

Porównanie dwóch przeglądarki Konqueror z czcionkami z aliasingiem i bez:

[Standard and anti-aliased Konqueror]

W jaki sposób to działa?

Ze względu na zapotrzebowanie obsługi antyaliasowanych czcionek, w 2001 r. został wprowadzony działający po stronie klienta silnik renderujący. Obliczenia aliasingowe są wykonywane przez FreeType, wolnodostępny standard fontów, który jest wykorzystywany przez bibliotekę Xft(3), rozszerzenie X FreeType. Rozszerzenie Render zapewnia wykonywanie operacji koniecznych do wymieszania sub-pikselowych cieni na tle aplikacji.

Ponadto X.Org korzysta z biblioteki fontconfig(3) do zarządzania zainstalowanymi czcionkami, a także ich nazwami oraz właściwościami.

Co trzeba zrobić, aby to mieć?

Właściwie, nic. OpenBSD zawiera X.Org wraz z włączonym rozszerzeniem X Render dla każdego sterownika kart graficznych w trybie 8-bit/piksel lub wyższym.

Można sprawdzić czy włączone jest rozszerzenie X Render poprzez polecenie:

$ /usr/X11R6/bin/xdpyinfo | grep RENDER
RENDER

Dodatkowo wraz z OpeBSD dostarczana jest rodzina czcionek Bitstream Vera, czyli zestaw popularnych czcionek True Type, są one dostępne w drzewie portów OpenBSD, dokładnie w /usr/ports/x11/msttcorefonts. Mogą być zainstalowane w systemie poprzez wykonanie:

# cd /usr/ports/x11/msttcorefonts
# make install

Zestaw portów zawiera także inne pakiety czcionek True Type, szczególnie czcionki uwolnione, które mogą zastąpić czcionki Microsoft Web i są rozpowszechniane ze znacznie bardziej akceptowalną licencją.

Które aplikacje mogą korzystać z antyaliasowanych czcionek?

Każda aplikacja zdolna do współpracy z Xft może wyświetlać antyaliasingowe czcionki. Są to w szczególności aplikacje oparte o QT 3.x (KDE 3.x) i GTK+2 (Gnome 2.x). Standardowe programy X, które współpracują z Xft to xterm(1), xclock, i kilka innych.

xterm

xterm może być wywołany z argumentami uruchamiającymi wyświetlanie fontów poprzez Xft:
$ xterm -fa 'Mono' -fs 14
Opcje te to:
Option   Resource         Meaning
----------------------------------------
 -fa     XTerm*faceName   Font face name
 -fs     XTerm*faceSize   Font size
Alternatywnie, można wykorzystać zasoby X`ów. Są one domyślnie konfigurowane w $HOME/.Xdefaults i kontrolowalne poprzez program xrdb(1).

Niektóre czcionki TrueType (jak np. Arial, Georgia czy Verdana) nie współpracują dobrze z xterm. Dzieje się tak, ponieważ xterm wykorzystuje maksymalną szerokość spośród wszystkich znaków podanej czcionki, aby wyświetlać znaki. W przypadku fontów o stałej szerokości wszystko jest w porządku. W przypadku czcionki o zmiennej szerokości, proporcjonalnej, tak jak wymienione wcześniej przykłady, xterm wyświetla każdy znak rozciągnięty do maksymalnej szerokości, tworząc nieczytelne, duże przestrzenie między znakami.

Aplikacje QT 3.x/KDE 3.x

Aplikacje, które korzystają z QT 3.x, takie jak dowolna aplikacja KDE 3.5.x, włączając Konqueror, domyślnie korzystają z Xft.

Aplikacje GTK+2

Aplikacje GTK+2 teraz również domyślnie korzystają z Xft.

Jak mogę dodać fonty ręcznie?

Dodawanie fontów TrueType "do X`ów" wymaga rejestracji fontów zarówno w serwerze X`ów jak i w bibliotece fontconfig, ponieważ oba programy śledzą czcionki niezależnie.

Renderowanie czcionek po stronie klienta

Czcionki zainstalowane jako pakiet z portów są automatycznie rejestrowane w systemie fontconfig. Fontconfig korzysta z pliku /etc/fonts/fonts.conf jako swojego podstawowego pliku konfiguracyjnego, jednak ze względu na możliwość zastąpienia tego pliku podczas późniejszych aktualizacji X-ów, powinno się korzystać z pliku /etc/fonts/local.conf. Fontconfig będzie przeszukiwał wszystkie podkatalogi w katalogach podanych w fonts.conf. Nie ma więc potrzeby edytować tego pliku w przypadku gdy nowe czcionki dodawane są do tej hierarchii.

Po dodaniu katalogu istnieje konieczność wygenerowania dla niego pliku "cache". Podane poniżej polecenie nakazuje fontconfig wykonanie przebudowy pamięci podręcznej czcionek dla wszystkich podkatalogów określonych w jego konfiguracji:

# /usr/X11R6/bin/fc-cache -v
Zmiany te zostaną uwzględnione w bierzącej sesji X-ów, nie istnieje zatem potrzeba restartu X-ów, jednak wymagane jest ponownie uruchomienie aplikacji.

Polecenie fc-list może zostać użyte do wylistowania wszystkich czcionek znanych w systemie. Uważaj jednak na fakt, że wynik tego polecenia zawiera międzynarodowe nazwy czcionek w kodowaniu UTF-8. Zdecydowanie lepiej jest więc wykonywać to polecenie w terminalu zdolnym do obsługi UTF-8, np. uxterm.

Renderowanie czcionek po stronie serwera

Ścieżki do czcionek (np, kartotek zawierających czcionki) są zarządzane bezpośrednio przez serwer X-ów w /etc/X11/xorg.conf lub poprzez osobny program, taki jak xfs(1). Aby dodać czcionkę, dodaj kartotekę w której się ona znajduje do /etc/X11/xorg.conf:
Section "Files"
	FontPath	"/usr/X11R6/lib/X11/fonts/TTF/"
	FontPath	"/usr/local/lib/X11/fonts/myfonts/"
	...
EndSection
Lub jeśli korzystasz z xfs, dodaj kartoteki do /etc/X11/fs/config:
catalogue = /usr/X11R6/lib/X11/fonts/TTF/,
	    /usr/local/lib/X11/fonts/myfonts/
Następnie, serwer X`ów musi zostać powiadomiony o czcionce zindeksowanej w tej kartotece, np w piku fonts.dir. Tradycyjnie, wszystkie dostępne wielkości fontów są wylistowane w pliku indeksującym, wygenerowanym przez komendę mkfontdir(1). Niemniej, ponieważ czcionki TrueType mogą być skalowane do dowolnej wielkości, wylistowanie każdej możliwej wielkości nie jest konieczne. Zamiast tego, skalowalne czcionki są wylistowane w pliku fonts.scale i są rozpoznawane przez mkfontdir podczas generowania indeksów fonts.dir.

Aby utworzyć plik fonts.scale, można skorzystać z programu mkfontscale(1):

# cd /usr/local/lib/X11/fonts/myfonts
# /usr/X11R6/bin/mkfontscale
# /usr/X11R6/bin/mkfontdir
W końcu, aby zaaplikować zmiany w obecnej sesji X`ów, zamiast restartować X`y, można użyć poniższej komendy powodującej ponowne sprawdzenie obecnie zarejestrowanych ścieżek w poszukiwaniu zmian:
$ xset fp rehash
Lub, jeśli została dodana nowa ścieżka:
$ xset +fp /usr/local/lib/X11/fonts/myfonts
Jeśli korzystaż z xfs, należy zamiast tego skorzystać z:
# pkill -HUP xfs

[back] www@openbsd.org
$OpenBSD$