Nejsnazší cesta k TrueType fontům

24. 3. 1999on-line nové okno domů předchozí článek následující článek

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

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

Autor: 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


on-line nové okno domů předchozí článek následující článek