Nejsnazší cesta k TrueType fontům
Každý kdo má co do činění s kombinací XFree86 a Linux asi ví, že fonty, které jsou přibaleny přímo v distribuci se sice dobře hodí na tlačítka, popisky nebo záhlaví oken, ale třeba v prohlížeči www stránek už je to slabší, o použití v grafických programech typu Gimp ani nemluvě. Font server sice umí pracovat s postscriptovými fonty Type1, ale těch je zase v kódování ISO8859-2 po čertech málo. Jak z toho tedy ven?
Celkem snadno: použitím font serveru s podporou TrueType fontů, které se běžně používají ve Windows. Možná vůbec nevíte, že to jde, možná jste jenom příliš pohodlní (jako já :) na to, abyste patchovali zdrojáky Xek. Pokud tomu tak je, je tento článek určen přesně vám.
Popíšu zde asi nejjednodušší postup, jak zabudovat podporu TrueType fontů do Xek s minimálními zásahy do systému. Sluší se ovšem říct, že tento postup je v podstatě pouze překladem dokumentu TrueType for XFree86 Mini-Howto, jehož autorem je Ying Zhang. Ve snaze zvýšit svoje zásluhy jsem doplnil několik poznatků z praxe :)
Co budete potřebovat
- XFree86 3.3.x (ověřeno s 3.3.2 a 3.3.3, starší verze by měly rovněž fungovat)
- freetype 1.2 (případně ještě freetype-devel při použití rpm balíků)
- xfsft 1.0.3
- ttmkfdir
- a samozřejmě nějaké TrueType fonty
Všechny uvedené programy v rpm jsem umístil sem. Pokud nepoužíváte RedHat, hledejte na domovských stránkách jednotlivých programů.
Instalace
V případě použití rpm balíků je instalace snadná:
rpm -Uvh freetype-1.2-i386.rpm
rpm -Uvh freetype-devel-1.2-i386.rpm
rpm -Uvh xfsft-1.0.3-1.i386.rpm
Pokud použijete zdrojové kódy, bude nutné programy a knihovny zkompilovat. Popis kompilace by byl ovšem nad rámec tohoto dokumentu.
Dalším krokem, už opět společným pro všechny distribuce, je kompilace programu ttmkfdir. Ta se provádí pomocí jediného povelu:
make FREETYPE_BASE=/usr
parametr FREETYPE_BASE určuje základní adresář, kde je knihovna FreeType nainstalována. Při ruční kompilaci knihovny půjde pravděpodobně o adresář /usr/local
Vytvoření adresářů s fonty
Nyní je již vše potřebné připraveno a tak můžeme přikročit přímo k instalaci fontů. Pokud chcete sdílet stejné fonty s Windows, je možné udělat pouze symbolický odkaz na adresář z Windows
ln -s /mnt/c/windows/fonts /usr/X11R6/lib/X11/fonts/ttf
V případě, že instalujete nové fonty pouze pro Linux, vytvořte si pro ně adresář a tam je zkopírujte.
Ať už jste adresář pouze přilinkovali z Windows nebo založili nový, je nyní třeba vytvořit dva soubory s informacemi o fontech: fonts.scale a fonts.dir. To provedeme pomocí programů ttmkfdir, který jsem si zkompilovali již dříve, a mkfontdir, který je součástí XFree86:
cd /usr/X11R6/lib/X11/fonts/ttf
ttmkfndir >fonts.scale
mkfontdir
Konfigurace programu xfsft
Důležitý je obsah dvou souborů. Prvním z nich je soubor /usr/etc/xfsft.conf, který vypadá přibližně takto:
clone-self = off
client-limit = 20
catalogue = /usr/X11R6/lib/X11/fonts/Type1,
/usr/X11R6/lib/X11/fonts/misc,
/usr/X11R6/lib/X11/fonts/Speedo,
/usr/X11R6/lib/X11/fonts/75dpi,
/usr/X11R6/lib/X11/fonts/ttf
/usr/X11R6/lib/X11/fonts/100dpi
use-syslog = off
error-file = /var/log/xfsft-errors.log
default-point-size = 120
default-resolutions = 100,100,75,7
Podstatné jsou cesty k jednotlivým adresářům s fonty v parametru catalogue.
Druhý soubor je vlastní konfigurace XFree86 (/etc/X11/XF86Config). V něm je třeba zakomentovat všechny existující řádky FontPath a přidat jednu novou řádku dle příkladu. Definice cest k fontům by po těchto úpravách měla vypadat přibližně následovně:
FontPath "tcp/localhost:7100"
#FontPath "/usr/X11R6/lib/X11/fonts/Type1"
#FontPath "/usr/X11R6/lib/X11/fonts/Speedo"
#FontPath "/usr/X11R6/lib/X11/fonts/75dpi"
#FontPath "/usr/X11R6/lib/X11/fonts/100dpi"
Moudrý čtenář již jistě pochopil, že se všechny cesty k fontům přesunuly do režie xfsft, který se o ně už postará tak, jak to doposud dělal interní font server z XFree. Asi namítnete, že to byla zbytečná práce. Nebyla. Xfsft má totiž jednu geniální vlastnost. Umí provádět překódování za běhu, což v praxi znamená, že lze font, který je v kódování CP1250 nebo Unicode použít jako by byl v kódování ISO8859-2. A tahle báječná funkce není limitovaná jenom na TT fonty, ale funguje i s Type1 (vyzkoušeno) a Speedo fonty.
Pokud jste toto všechno provedli, spusťte program xfsft. Při použití rpm
/etc/rc.d/init.d/xfsft start
případně ručně
/usr/X11R6/bin/xfsft -port 7100 -config /usr/etc/xfsft.conf
Program xfsft musí vždy běžet před startem Xek. Pak už stačí jenom spustit (nebo restartovat) Xka a to je vše.
Ještě jedna praktická rada: pokud je instalovaný font prokazatelně český a přesto česky nepíše (nebo třeba píše místo všech znaků čtverečky), pomůže upravit soubor fonts.scale tak, že na pro inkriminovaný font změníte kódování na iso8859-2. Kódování je úplně poslední údaj na řádce a těsně mu obvykle předchází sekvence znaků -0-
Po této úpravě je nutné spustit znovu mkfontdir a restartovat xfsft i Xka.
Neposlušné fonty se pak umoudří.
A úplně na závěr snad už jenom pár odkazů na fonty ke stažení:
Microsoft Free TTF
Acid Fonts
The Font RingAutor: Michal Krause (jiné články tohoto autora)
Sekce: Software
Diskuse
19. 2. 2000 23:44:09 - Zajimalo by me jakym zpusobem ... (David Belohrad)
Zajimalo by me jakym zpusobem lze vyrobit soubory
fonts.alias a fonts.dir. Zkousel jsem s tim experimentovat
a nejak se mi zadarilo par souboru spatne prepsat
a nevim jak to vratit zpet. Take by me zajimalo,
ve kterem souboru je ulozeno ktere fonty se pouzivaji
napr na napisy tlacitek apod.
Diky