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 Ring