[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?

Obliczenia aliasingowe są wykonywane przez FreeType, wolnodostępny standard fontów, który stanowi część X.org. X.org dodatkowo posiada rozszerzenie tzw. Xft(3), rozszerzenie X FreeType, które współpracuje z FreeType podczas operacji renderowania. Xft współpracuje także z rozszerzeniem o nazwie Xrender, rozszerzenie X Render, który przekształca obliczenia w cyfrowe obrazy.

Co trzeba zrobić, aby to mieć?

OpenBSD rozpowszechniane jest z X.org i załączonym rozszerzeniem X Render. Aby móc z niego korzystać, twój serwer X`ów (sterownik karty graficznej) musi je wspierać. Niektóre sterowniki nie zostały jeszcze dostosowane do kodu 'fb' i dlatego nie są w stanie wykorzystywać rozszerzenia Render, co jest niezbędne.

Możesz sprawdzić jak jest w przypadku twojej karty komendą:

$ /usr/X11R6/bin/xdpyinfo | grep RENDER
RENDER
Jeśli nie zostanie wypisane "RENDER" na liście rozszerzeń, będziesz musiał poczekać aż ktoś zaimplementuje niezbędne rozszerzenie dla twojej karty.

Następnym krokiem jest pobranie i instalacja jakiś fontów TrueType. Zestaw popularnych fontów został skompilowany i jest dostępny w drzewie portów OpenBSD, dokładnie w /usr/ports/x11/msttcorefonts. Możesz jest zainstalować w systemie wykonując:

# cd /usr/ports/x11/msttcorefonts
# make
# make install
W tym momencie powinieneś odwołać się do innej sekcji tego dokumentu, aby dowiedzieć się jak zarejestrować fonty w X`ach.

Które aplikacje mogą z tego korzystać?

Każda aplikacja zdolna do współpracy z Xft może wyświetlać antyaliasingowe fonty. 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), xditview(1), xfd(1), i kilka innych.

xterm

xterm może być wywołany z argumentami uruchamiającymi wyświetlanie fontów poprzez Xft:
$ xterm -fa 'Andale 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.x, włączając Konqueror, mogą korzystać z wyświetlania poprzez Xft dzięki ustawieniu w sekcji [General] pliku $HOME/.qt/qtrc:
useXft=true
W graficznym programie konfiguracyjny Qt, qtconfig (lub qtconfig-mt jeśli wielowątkowa wersja Qt została zainstalowana), można skonfigurować tą zmienną poprzez przełącznik Enable Anti-aliased Font Support w zakładce Fonts.

Aplikacje GTK+2

Aplikacje GTK+2 wymagają ustawienia zmiennej środowiskowej GDK_USE_XFT. GDK to zakulisowa bibliotek wykorzystywana przez GTK do odseparowania detali operacji rysowania i przekaże swoje operacje wyświetlania do Xft, gdy wykryje zmienną środowiskową.

Ta komenda uruchamia oparty o GTK+2 komunikator Gaim, dostępny w /usr/ports/net/gaim:

$ env GDK_USE_XFT=1 gaim

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 fontconfig(3), ponieważ oba programy śledzą czcionki niezależnie. Prawdę mówiąc, niektóre typy fontów są rozpoznawane jedynie przez właściwy X`serwer, a inne tylko przez fontconfig. Czcionki TrueType są jednym z typów rozpoznawanym przez oba.

Serwer X`ów

Ścieżki do czcionek (np, kartotek zawierających czcionki) są zarządzane bezpośrednio przez X`y 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

fontconfig

Innym komponentem X`ów, który musi być powiadomiony o nowym foncie to fontconfig, którego Xft używa do wyszukiwania czcionek. fontconfig korzysta z pliku /etc/fonts/fonts.conf do swojej głównej, ogólnosystemowej konfiguracji, jednak ponieważ plik ten będzie podmieniany podczas kolejnych aktualizacji X`ów, należy korzystać z /etc/fonts/local.conf do aplikowania ogólnosystemowych zmian.

Dodaj kartotekę zawierających czcionkę do tego pliku konfiguracyjnego:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "/etc/fonts/fonts.dtd">
<fontconfig>
  <dir>/usr/local/lib/X11/fonts/myfonts</dir>
</fontconfig>
Lub, jeśli tylko jeden użytkownik deklaruje chęć dodania danych czcionek do swojej sesji X'ów, powyższa konfiguracja może zostać umieszczona w pliku $HOME/.fonts.conf tego użytkownika.

Zwróć uwagę, że fontconfig będzie rekurencyjnie przeglądał wszystkie podkatalogi w poszukiwaniu dostępnych fontów, podczas gdy standardowy serwer X`ów nie będzie tego robił.

Po tym jak dodany zostanie katalog, cache kartotek czcionek musi zostać wygenerowany na nowo. Następująca komenda poinstruuje fontconfig aby ponownie wygenerować cache dla wszystkich kartotek czcionek wylistowanych w swojej konfiguracji:

# /usr/X11R6/bin/fc-cache -v
Zmiany te nie będą mieć miejsca w obecnej sesji X`ów, więc same X`y nie muszą być zrestartowane, niemniej już uruchomione aplikacje tego wymagają.
[back] www@openbsd.org
$OpenBSD: truetype.html,v 1.5 2005/09/11 06:04:12 saad Exp $