
Xfstt - fontserver pre TrueType fonty
Pre zdokonalenie vizuálneho výstupu v prostredí XFree86 je potrebné často siahnuť popri bitmapových fontoch, ktoré sú štandardne používané aj k škálovateľným fontom, z ktorých najrozšírenejšiu skupinu tvoria fonty typu TrueType. Existuje viacero spôsobov, ako je možné dosiahnuť ich používanie v prostredí XFree86, my sa dnes pozrieme na možnosť, ktorú nám prináša špecializovaný daemon xfstt určený pre takéto nasadenie.
1. Predstavenie
Projekt xfstt je k dispozícii pod licenciou LGPL už od počiatku svojho vzniku v roku 1997. Jeho vývoj bol zahájený na základe viacerých požiadaviek sprístupniť TrueType fonty, ktoré sú v súčasnosti najvýhodnejšie pre výstupné zariadenia s nízkym rozlíšením, pre zlepšenie čitateľnosti a výstupnej kvality aplikácií, hlavne Gimpu, Netscapu a Javy vzhľadom na nie veľmi dobrú situáciu dovtedy používaných fontov v prostredí X11. Ako sa zdá, požiadavky boli plne splnené, takže sa pozrieme na proces inštalácie a konfigurácie.
2. Inštalácia
Zdrojový kód projektu je k dispozícii na adrese http://developer.berlios.de/projects/xfstt/ v súčasnej verzii 1.3, ktorá poskytuje dostupné možnosti nasadenia v súlade so súčasnou architektúrou fontového subsystému, ktorá vzhľadom na situáciu z vyplývajúcu z minulosti a pôvodných zámerov poskytuje pomerne obmedzené možnosti. Ako je zvykom po stiahnutí zdrojového kódu pristúpime k dekomprimácii.
tar xzvf xfstt_1.3.tar.gz
cd xfstt_1.3
Keďže na linuxových systémoch nie je potrebná žiadna predkompilačná konfigurácia, smelo sa môžeme pustiť do kompilačného procesu s následnou distribúciou bináriek pomocou
make
make install
Výsledkom je daemon samotný s názvom xfstt uložený v adresári /usr/X11R6/bin/, ktorý pre uloženie žiadaných fontov využíva adresár s možným členením do skupín prostredníctvom vytvorených podadresárov v základnej štruktúre /usr/share/fonts/truetype, pričom sú jednotlivé indexové súbory a databáza fontov štandardne uložené v adresári /var/cache/xfstt.
3. Inštalácia fontov a vytvorenie indexu
Ďalšou úlohou je umiestnenie požadovaných TrueType fontov do určeného dátového adresára. Keďže jednotlivé fonty podliehajú rôznym licenčným politikám, je potrebné vopred sa presvedčiť o možnosti ich voľného používania, k dispozícii je však množstvo zdrojov poskytujúcich fonty tohto druhu, či už distribuovaných prostredníctvom CD nosičov obsahujúcich jednotlivé kolekcie, alebo priamo z internetových zdrojov zo širokej ponuky, napríklad
- http://www.hooked.net/~flubble/typography.html
- http://home1.gte.net/tiaralyn/pctt.htm
- http://www.homunculus.com/access/CustomDirs/Fonts.html
- http://indigo.simplenet.com/fontz
- http://www.pagesz.net/~mhare/fonts/index.htm
- http://klink.net/~rcklueg/font1.html
- http://www.fonthead.com/main.html
Žiadané fonty nakopírujeme do adresára /usr/share/fonts/truetype, alebo jednoducho vytvoríme symbolický link smerujúci na ich základňu, ktorá môže v mnohých prípadoch predstavovať fontový adresár namountovaného filesystému obsahujúceho inštaláciu Microsoft Windows.
ln -s /mnt/windisk/windows/fonts /usr/share/fonts/truetype/winfonts
Jednotlivé fonty je možné rozčleniť do skupín reprezentovaných na úrovni Foundry príslušným vytvorením adresárov, ako v predchádzajúcom prípade s názvom winfonts, ale rovnako aj na základe vlastného triedenia, kde si pre rýchle overenie funkčnosti môžeme vytvoriť skupinu test, čo nám zabezpečí jednoznačnú identifikáciu.
Po umiestnení jednotlivých fontov pristúpime k inicializácii s vytvorením indexov pomocou
xfstt --sync
xfstt: sync in directory "/usr/share/fonts/truetype/."
xfstt: sync in directory "/usr/share/fonts/truetype/test"
xfstt: sync in directory "/usr/share/fonts/truetype/winfonts"
Found 31 fonts.
a v prípade potreby vytvorenia indexu pre ghostscript prostredníctvom
xfstt --gslist --sync
s príslušným výstupom
(Lucida Bright Demi) (//usr/share/fonts/truetype/./LucidaBrightDemi.ttf);
(Symbol) (//usr/share/fonts/truetype/./symbol.ttf);
(Arial Narrow Bold Italic) (//usr/share/fonts/truetype/./Arialnbi.ttf);
...
4. Inicializácia daemonu
Po prípravných prácach sa môžeme presunúť k samotnému spusteniu daemonu. Pre typické spustenie postačí jednoducho realizovať aktiváciu prostredníctvom
xfstt --notcp --daemon
pre nastavenie jednotlivých parametrov však využijeme príslušné parametre. Parameter --port umožňuje špecifikovať príslušný port, na ktorom bude daemon aktívny, čo implicitne predstavuje port 7101, v prípade obsadenosti však môžeme určiť náhradnú hodnotu. Ak služba bude poskytovaná výhradne lokálne pre daný host, bez možnosti prístupu zo siete využijeme parameter --notcp.
Samotný beh môže byť realizovaný v daemon móde reprezentovaným direktívou --daemon pri behu s určeným efektívnym UID --user s možnosťou implementácie do systému inetd parametrom --inetd.
xfstt --daemon --user xfstt
Alternatívne je možné špecifikovať aj adresáre, v ktorých sa nachádzajú poskytované dáta.
xfstt --daemon --notcp --dir /usr/share/fonts/truetype \
--cache /var/cache/xfstt
Keďže sa jedná o škálovateľné fonty, ktoré budú prevádzané do bitmapového tvaru, dôležitú úlohu popri automatickom vyhladzovaní technikou grayscaling bude zohrávať aj správne určenie rozlíšenia, ktoré je implicitne prezentované hodnotou 72 s možnosťou nastavenia jednotlivých enkódovaní pre príslušné stránky, čo realizujeme nasledovne
xfstt --daemon --notcp --res 86 --encoding iso8859-2,koi8-r,windows-1251
Po zvážení príslušnej vyhovujúcej konfigurácie je potrebné zabezpečiť automatický štart daemona pri inicializačnom procese úpravou inicializačných skriptov, pričom je potrebné zaistiť spúšťanie pred inicializáciou systému X11, najlepšie spolu so štandardným xfs.
5. Konfigurácia X11
Pre vyžiadanie prístupu k poskytovaným fontom je možné zvoliť dva prístupy. Prvým, ktorý bude výhodný pri testovaní implementácie bude ručná špecifikácia nového zdroja prostredníctvom nástroja xset. V prípade --notcp behu inicializujeme spojenie prostredníctvom
xset fp+ unix:/7101
na systémoch ktoré umožňujú pripojenie výhradne spojením mimo socketov, bude potrebné využiť nasledujúcu možnosť
xset fp+ inet/127.0.0.1:7101
Po finálnom otestovaní je možné definovať priamo v konfiguračných súboroch zdroj fontov jednoduchou úpravou konfigurácie v /etc/X11/XF86Config v sekcii "Files",
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "unix/:7100"
FontPath "unix/:7101"
EndSection
čo nám zabezpečí automatický prístup k zdroju bez nutnosti ručnej definície, alebo prostredníctvom štartovacích skriptov. Treba si však uvedomiť, že v tomto prípade je nutné, aby daemon bežal ešte pred inicializáciou.
6. Skontrolovanie funkčnosti
Pre zistenie dispozície jednotlivých fontov využijeme nástroj xlsfonts, prostredníctvom ktorého vyhľadáme fonty, ktoré sme si uložili do pripravenej skupiny test pomocou
xlsfonts | grep test
-test-verdana-bold-i-normal-bold italic-0-0-0-0-p-0-iso8859-2
-test-verdana-bold-r-normal-bold-0-0-0-0-p-0-iso8859-2
-test-verdana-medium-i-normal-italic-0-0-0-0-p-0-iso8859-2
-test-verdana-medium-r-normal-regular-0-0-0-0-p-0-iso8859-2
a vizuálne skontrolujeme situáciu príslušným výberom ľubovoľného fontu z Foundry ttf pomocou nástroja xfontsel
7. Záver
Po úspešnej konfigurácii a sprístupnení zdroja máme žiadané TrueType fonty k dispozícii s možnosťou takmer bezproblémového využívania v rámci možností v systéme. Niektoré aplikácie majú problémy s proporcionálnymi fontami, ako napríklad xterm, takže je potrebné pre ne vyberať fonty s jednotným rozostupom znakov, v prípade nesprávnej veľkosti je potrebné explicitne daemonu špecifikovať požadované DPI, pre ktoré sa fonty majú renderovať. V niektorých implementáciách X11 existuje limit pre fontové bloky o kapacite 256kb čo sa môže prejaviť väčších veľkostiach písma, takže v týchto prípadoch je vhodné pre správny chod s rozdelením požiadaviek na viacero blokov zabezpečiť spustením X servera s parametrami -deferglyphs 8 -deferglyphs 16, čo by malo situáciu k spokojnosti vyriešiť. Vo väčšine prípadov však na žiadne problémy nenarazíte a prevádzka bude bezproblémová.
|