Podręcznik FreeBSD
Poprzedni | Rozdział 5. System okien X | Następny

# 5.5. Korzystanie z czcionek w X11

Napisał Murray Stokely.

## 5.5.1. Czcionki Type1

Czcionki dostarczane razem z X11 są dalekie od idealnych dla typowych aplikacji biurowych. Duże czcionki sprawiają wrażenie postrzępionych i mało profesjonalnych. Natomiast, małe czcionki w Netscape® są całkowicie nieczytelne. Tym nie mniej, dostępnych jest kilka darmowych, wysokiej jakości czcionek Type1 (PostScript®), gotowych do użycia z X11. Na przykład, kolekcja czcionek URW (`x11-fonts/urwfonts`) zawiera wysokiej jakości wersje standardowych czcionek type1 (Times Roman®, Helvetica®, Palatino® i innych). Kolekcja Freefonts (`x11-fonts/freefonts`) to wiele dodatkowych czcionek, przy czym większość z nich przewidzianych jest do użycia z oprogramowaniem graficznym, jak np. Gimp, tym samym nie są przygotowane do wykorzystania jako czcionki do aplikacji. Dodatkowo, przy minimum wysiłku, można skonfigurować X11, by korzystał z czcionek TrueType®. Więcej szczegółów znaleźć można w podręczniku systemowym X(7) lub w części poświęconej czcionkom TrueType.

By zainstalować kolekcje czcionek Type1 z portów, należy wpisać następujące polecenia:

    # cd /usr/ports/x11-fonts/urwfonts
    # make install clean

Analogicznie postępujemy z czcionkami freefont bądź innymi kolekcjami. Aby serwer X wykrył zainstalowane czcionki, należy dodać odpowiedni wpis do pliku konfiguracji serwera (`/etc/X11/xorg.conf`) postaci:

    FontPath "/usr/X11R6/lib/X11/fonts/URW/"

Alternatywną metodą jest wpisanie w trakcie sesji X:

    % xset fp+ /usr/X11R6/lib/X11/fonts/URW
    % xset fp rehash

O ile rozwiązanie to również przyniesie pożądany efekt, o tyle dokonane w ten sposób zmiany zostaną stracone po zakończeniu sesji X. Oczywiście powyższe polecenia można dodać do pliku startowego (`~/.xinitrc` dla typowej sesji `startx` bądź pliku `~/.xsession` przy logowaniu się za pomocą graficznego menedżera logowania, jak np. XDM). Trzecią metodą jest skorzystanie z nowego pliku `/usr/X11R6/etc/fonts/local.conf`: szczegóły w części poświęconej wygładzaniu.

## 5.5.2. Czcionki TrueType®

Xorg posiada wbudowaną obsługę czcionek TrueType. Istnieją dwa moduły, które mogą aktywować tę funkcję. W przykładzie wykorzystany został moduł freetype, z uwagi na większą spójność z innymi wewnętrznymi elementami wyświetlającymi czcionki. By włączyć moduł freetype, wystarczy dodać poniższy wiersz do sekcji `"Module"` pliku `/etc/X11/xorg.conf`.

    Load  "freetype"

Teraz musimy utworzyć katalog dla czcionek TrueType (na przykład `/usr/X11R6/lib/X11/fonts/TrueType`) i skopiować wszystkie czcionki do tego katalogu. Należy pamiętać, że czcionki TrueType nie mogą być bezpośrednio skopiowane z systemu Macintosh®, by możliwe było wykorzystanie ich z X11; muszą być w formacie UNIX®/MS-DOS®/Windows®. Po skopiowaniu plików należy wykorzystać ttmkfdir do stworzenia pliku `fonts.dir`, by poinformować X, że zostały zainstalowane nowe czcionki. Program `ttmkfdir` dostępny jest z kolekcji portów FreeBSD jako `x11-fonts/ttmkfdir`.

    # cd /usr/X11R6/lib/X11/fonts/TrueType
    # ttmkfdir -o fonts.dir

Na koniec musimy dodać katalog TrueType do ścieżki czcionek. Robimy to analogicznie jak w przypadku czcionek Type1, za pomocą polecenia

    % xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
    % xset fp rehash

bądź dodając wiersz `FontPath` do pliku `xorg.conf`.

Gotowe. Teraz Netscape, Gimp, StarOffice™ i wszystkie inne aplikacje X powinny rozpoznawać zainstalowane czcionki TrueType. Bardzo małe czcionki (jak np. tekst na stronie WWW przy ustawionej wysokiej rozdzielczości ekranu) oraz bardzo duże (w StarOffice) będą wyglądały zdecydowanie lepiej.

## 5.5.3. Wygładzane czcionki

Zaktualizował Joe Marcus Clarke.

Wygładzanie (anti-aliasing) dostępne było w X11 od XFree86™ 4.0.2. Jednakże konfiguracja czcionek była niezmiernie nieporęczna do ukazania się XFree86 4.3.0. Począwszy od tej właśnie wersji, wszystkie czcionki w X11 dostępne w katalogach `/usr/X11R6/lib/X11/fonts/` oraz `~/.fonts/` są automatycznie dostępne dla aplikacji korzystających z wygładzania Xft. Nie wszystkie aplikacje potrafią korzystać z Xft, lecz wiele z czasem otrzymało wsparcie Xft. Przykładami aplikacji korzystających z Xft są Qt 2.3 i późniejsze (pakiet narzędzi graficznych dla środowiska KDE), GTK+ 2.0 i późniejsze (pakiet narzędzi graficznych dla środowiska GNOME desktop) oraz Mozilla 1.2 i późniejsze.

By móc kontrolować, które czcionki będą wygładzane bądź skonfigurować właściwości wygładzania, należy stworzyć (bądź zmodyfikować, jeśli istnieje) plik `/usr/X11R6/etc/fonts/local.conf`. Wykorzystując ten plik możemy dostroić kilka zaawansowanych opcji systemu czcionek Xft, jednakże rozdział ten skupia się jedynie na kilku podstawowych funkcjach. Więcej szczegółów znaleźć można w podręczniku systemowym fonts-conf(5).

W pliku tym stosowany jest format kodu XML. Przy jego edycji należy pamiętać o właściwym zamykaniu wszystkich znaczników. Zaczyna się on od typowego nagłówka XML oraz definicji DOCTYPE. Następnym w kolejności jest znacznik `<fontconfig>`:

          <?xml version="1.0"?>
          <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
          <fontconfig>

Jak już to zostało wcześniej powiedziane, wszystkie czcionki w katalogach `/usr/X11R6/lib/X11/fonts/` oraz `~/.fonts/` są automatycznie dostępne dla aplikacji korzystających z Xft. Jeśli natomiast chcemy dodać inny katalog nie będący podkatalogiem żadnego z powyższych, musimy dodać do pliku `/usr/X11R6/etc/fonts/local.conf` wiersz podobny do poniższego:

    <dir>/ścieżka/do/moich/czcionek</dir>

Po dodaniu nowych czcionek, a szczególnie nowych katalogów, powinniśmy uruchomić poniższe polecenie, by przebudować bufor informacji o czcionkach:

    # fc-cache -f

Wygładzanie sprawia, że brzegi czcionek stają się lekko zamazane, dzięki czemu małe litery są bardziej czytelne, a duże pozbawione efektu “schodków”. Może jednak prowadzić do zmęczenia oczu gdy zostanie użyte w stosunku do liter o normalnej wiekości. By wyłączyć wygładzanie czcionek o rozmiarze mniejszym niż 14 punktów, należy dodać poniższe wiersze do pliku konfiguracyjnego:

            <match target="font">
                <test name="size" compare="less">
                    <double>14</double>
                </test>
                <edit name="antialias" mode="assign">
                    <bool>false</bool>
                </edit>
            </match>
            <match target="font">
                <test name="pixelsize" compare="less" qual="any">
                    <double>14</double>
                </test>
                <edit mode="assign" name="antialias">
                    <bool>false</bool>
                </edit>
            </match>

Korzystając z wygładzania może się okazać, iż również odstępy pomiędzy literami niektórych czcionek o stałej szerokości są niewłaściwe. Ma to miejsce szczególnie w przypadku KDE. Jedynym rozwiązaniem tego problemu jest wymuszenie stałego odstępu o wartości 100 dla danych czcionek. W tym celu musimy wpisać:

           <match target="pattern" name="family">
               <test qual="any" name="family">
                   <string>fixed</string>
               </test>
               <edit name="family" mode="assign">
                   <string>mono</string>
               </edit>
            </match>
            <match target="pattern" name="family">
                <test qual="any" name="family">
                    <string>console</string>
                </test>
                <edit name="family" mode="assign">
                    <string>mono</string>
                </edit>
            </match>

(powyższe deklaruje inne typowe nazwy czcionek o stałej szerokości jako `"mono"`), a następnie:

             <match target="pattern" name="family">
                 <test qual="any" name="family">
                     <string>mono</string>
                 </test>
                 <edit name="spacing" mode="assign">
                     <int>100</int>
                 </edit>
             </match>

Niektóre czcionki, jak np. Helvetica, mogą stwarzać problemy jeśli zostaną poddane wygładzaniu. Z reguły daje to efekt czcionki przeciętej pionowo na pół. W najgorszym wypadku, może prowadzić to do załamania aplikacji typu Mozilla. By tego uniknąć, warto dodać poniższe do pliku `local.conf`:

             <match target="pattern" name="family">
                 <test qual="any" name="family">
                     <string>Helvetica</string>
                 </test>
                 <edit name="family" mode="assign">
                     <string>sans-serif</string>
                 </edit>
             </match>

Skończywszy edycję `local.conf` upewnijmy się, że plik kończy się znacznikiem `</fontconfig>`. Bez tego może się okazać, że nasze zmiany zostaną zignorowane.

Korzystanie z domyślnego zestawu czcionek, dostępnego wraz z X11, nie jest wskazane jeśli chodzi o wygładzanie. Zdecydowanie lepszy zestaw domyślnych czcionek zawiera port `x11-fonts/bitstream-vera`. Port ten zainstaluje również plik `/usr/X11R6/etc/fonts/local.conf` jeśli jeszcze go nie mamy. Jeśli natomiast istnieje już taki plik w systemie, stworzony zostanie plik `/usr/X11R6/etc/fonts/local.conf-vera`. Wystarczy dołączyć zawartość tego pliku do `/usr/X11R6/etc/fonts/local.conf`, by czcionki Bitstream automatycznie zastąpiły domyślne czcionki X11 Serif, Sans Serif i Monospaced.

Na koniec, użytkownicy mogą dodać swoją konfigurację poprzez własny plik `.fonts.conf`. W tym celu każdy użytkownik może stworzyć i zmodyfikować plik `~/.fonts.conf`. Również ten plik wykorzystuje format XML.

Ostatnia rzecz: osoby korzystające z monitorów LCD mogą pragnąć zastosować wygładzanie podpikselowe. W skrócie, w metodzie tej czerwone, zielone i niebieskie komponenty (oddzielone w płaszczyźnie poziomej) traktowane są oddzielnie, co poprawia rozdzielczość poziomą i przynosi radykalne efekty. By włączyć wygładzanie podpikselowe należy dodać poniższy wiersz do pliku `local.conf`:

             <match target="font">
                 <test qual="all" name="rgba">
                     <const>unknown</const>
                 </test>
                 <edit name="rgba" mode="assign">
                     <const>rgb</const>
                 </edit>
             </match>

> Notatka: Zależnie od typu monitora, może się okazać, że będziemy musieli zastąpić `rgb` wartościami `bgr`, `vrgb` lub `vbgr`: poeksperymentujmy i sprawdźmy co da najlepszy efekt.

Wygładzanie powinno być aktywne przy następnym uruchomieniu serwera X. Tym nie mniej, programy muszą zostać poinformowane, by z niego korzystać. W chwili obecnej pakiet narzędzi Qt korzysta z wygładzania czcionek, tym samym również i całe środowisko KDE. GTK+ oraz GNOME również można skonfigurować do pracy z wygładzanymi czcionkami poprzez aplet “Font” (Sekcja 5.7.1.3 zawiera szczegółowy opis). Domyślnie, Mozilla 1.2 i późniejsze będą automatycznie korzystać z wygładzania. By wyłączyć tę opcję, należy ponownie skompilować program z parametrem `-DWITHOUT_XFT`.

Poprzedni | Spis treści | Następny
Konfiguracja X11 | Początek rozdziału | Menedżer pulpitów X

Ten i inne dokumenty można pobrać z ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

W przypadku pytań o FreeBSD prosimy przeczytać dostępną dokumentację przed kontaktem z <questions@FreeBSD.org>.
W sprawie zapytań o tę dokumentację prosimy o kontakt z <doc@FreeBSD.org>.