Nejsnazší cesta k TrueType fontům

24. 3. 1999
Doba čtení: 4 minuty

Sdílet

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/window­s/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/mis­c,
      /usr/X11R6/lib/­X11/fonts/Spe­edo,
      /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/XF86Con­fig). 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/localhos­t:7100“
#FontPath „/usr/X11R6/lib/­X11/fonts/Type1“
#FontPath „/usr/X11R6/lib/­X11/fonts/Spe­edo“
#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

Autor článku