\"/
\"/ \"/    

Národní prostředí v X-Window systému

Libor Škarvada
Ročník V - číslo 2, listopad 1994
Citace: L. Škarvada. Národní prostředí v X-Window systému. Zpravodaj ÚVT MU. ISSN 1212-0901, 1994, roč. V, č. 2, s. 6-8.
Tematické zařazení: Software obecně - principy, tvorba
 předchozí článek | následující článek 

Vytvořit národní prostředí v operačním systému UNIX znamená "znárodňovat" na více úrovních, od písma a klávesnice, přes pravidla abecedního třídění, formát vypisování času a kalendářního data, až po vypisování chybových hlášení a systémových zpráv v příslušném jazyce. Většina těchto součástí tzv. lokalizace je jednotných pro unixová prostředí a některým z nich se věnovaly příspěvky v minulých Zpravodajích. Tato poznámka bude o tom, co je specifické pro X Window Systém, zejména použití písma (fontů) a klávesnice.

Typy písma - fonty

V našem univerzitním ftp archívu jsou v adresáři

     /pub/UNIX/localization/X11/fonts/

fonty pro X. Fonty jsou v kódování ISO-8859-2 a ve formátu BDF. V sadě jsou zatím jen fonty neproporcionální, to znamená, že všechny znaky mají stejnou šířku. Tato vlastnost je určuje k použití v terminálových emulátorech (XTerm, ...) a v textových editorech (Emacs, ...), tedy v nejpoužívanějších aplikačních programech.

Kódování fontu je zobrazení množiny znaků do množiny {0...255}, tj. předpis, jenž pro každý znak udává, kterým bytem je reprezentován. ISO-8859-2 (ISO-Latin-2) je mezinárodní norma z roku 1987 pro kódování znaků středo- a východoevropských abeced. Tuto normu též doporučuje standard SIS, §2.3.11.

Formát fontu je tvar, v němž jsou uloženy bitové mapy (rastry) obrazu každého znaku. Formát BDF (Bitmap Distribution Format) je textový formát určený především pro distribuci fontů, ale všechny novější verze X Window Systému jej umějí používat i přímo. Systém X11 zná i jiné formáty, např. binární PCF (Portable Compiled Format - jeho použití je efektivnější než u BDF), nebo starší SNF (Server Natural Format), ten používají hlavně starší X terminály. Pro převod fontů ze tvaru PCF resp. SNF jsou k dispozici konverzní programy bdftopcf resp. bdftosnf.

Aby se aplikační program (X klient) mohl na font odkazovat, musí být font takzvaně instalován v X serveru. Každý instalovaný font má své jméno, kterým na něho voláme. Jméno fontu je dlouhý řetězec obsahující až 16 údajů o typu písma, jeho velikosti, tučnosti, maximální i průměrné šířce znaků, sklonu, rozlišení, proporcionalitě, kódování, názvu autorské firmy a registrační instituce. Například -misc-fixed-medium-r-normal-14-130-75-75-c-80-iso8859-2 označuje font pevné šířky, který má střední tučnost, je neskloněný, vysoký 14 pixelů, tj. zhruba 130 desetin typografického bodu - při rozlišení 75 dpi krát 75 dpi, neproporcionální, široký 80 desetin typografického bodu (což při daném obrazovém rozlišení odpovídá šířce 8 pixelů), v kódování ISO-8859-2.

Jak instalovat nové fonty? Při instalaci nových fontů je nutno:

  1. tyto fonty uložit do adresáře, o němž X server ví, že v něm fonty najde, například do /usr/X11/lib/fonts/iso8859-2
  2. vytvořit v tomto adresáři soubor fonts.dir se jmény fontů; to se provede příkazem
         mkfontdir adresář
  3. říci serveru, aby si aktualizoval svou databázi:
         xset fp rehash

Tyto akce může samozřejmě provést jen systémový administrátor, který má oprávnění zasahovat do systémového adresáře s fonty.

Ale i běžný uživatel si může instalovat vlastní fonty tak, že si je uloží do svého adresáře (např. $HOME/xfonts) a po provedení

     mkfontdir $HOME/xfonts

oznámí X serveru novou cestu:

     xset +fp $HOME/xfonts

Volba +fp znamená, že cesta k fontům se má přidat na začátek seznamu cest do adresářů, v nichž X server fonty hledá. Jiné možnosti voleb jsou fp+ (přidání cesty na konec seznamu) nebo -fp (odebrání cesty ze seznamu cest).

Aplikačnímu programu lze říci, aby použil nové fonty, třeba na příkazovém řádku. Například

     xterm -fn "-misc-fixed-*-14-*-c-80-iso8859-2" &

spustí terminálový emulátor XTerm s dříve zmíněným fontem (hvězdičky označují vynechané části jména). Chceme-li však font používat často, je pohodlnější jeho jméno zapsat do tzv. seznamu atributů (viz odstavec Klávesnice).

Jedna věc je na dlouhých jménech fontů nepohodlná: jejich délka. Existuje však způsob, jak si usnadnit život. V adresáři s fonty můžeme vytvořit soubor fonts.alias, který pro každý font definuje přezdívku. Tento soubor přezdívek obsahuje řádky tvaru

     přezdívka   dlouhé_jméno

Když zvolíme přezdívku šikovně (tj. kratší než dlouhé jméno), ušetříme si pozdější psaní. Například XTerm pak spouštíme příkazem

     xterm -fn 7x14 &

kde 7x14 je přezdívka dříve zmiňovaného fontu.

Klávesnice

Špatná zpráva na začátek: V X Window Systému verze R5 (tj. právě té, která se u nás provozuje) není možno definici české klávesnice řešit na úrovni X serveru čistě a uspokojivě. Důvodem je skutečnost, že při návrhu rozhraní pro vstup z klávesnice se neuvažovaly tzv. mrtvé klávesy (na české klávesnici "čárka nad písmenem", "háček nad písmenem"). Neuspokojivých řešení obcházejících tento problém vzniklo několik, vesměs byla taková, že se mrtvých kláves vzdala a vstup písmen s diakritikou řešila různými funkčními klávesami mimo hlavní pole klávesnice.

Jiný přístup využívá toho, že co neumí X server, umějí někteří X klienti, a tak nadefinuje každému takovému X klientu klávesnici zvlášť. Uvážíme-li, že běžný uživatel u nás většinou používá jen jeden až dva X klienty ke vstupu českých textů z klávesnice, pak toto řešení, ač nedokonalé, vcelku vyhovuje.

Nejčastěji používaným aplikačním programem - X klientem, je emulátor alfanumerického terminálu. Pro mnohé uživatele (ty, kteří píší texty editorem vi) je to také jediný klient, kterého používají pro vstup českého textu. Nejrozšířenějším terminálovým emulátorem je XTerm.

V nasem ftp archívu v adresáři

     /pub/UNIX/localization/X11/keymaps/

je soubor s tzv. atributy pro XTerm, které předefinují klávesnici tak, aby se dala použít pro psaní textů v češtině i slovenštině. Jeho autorem je Petr Mejzlík, který podstatně zdokonalil původní řešení autora příspěvku.

Co je to soubor atributů? Většině programů lze nastavit různé parametry, které pak ovlivňují jejich chování. Kromě známého způsobu jejich nastavení na příkazovém řádku existuje pro X klienty možnost zavést parametry ze zvláštního souboru jako tzv. atributy (resources). Atributům pro X klienty bude věnován článek Michala Brandejse v příštím čísle Zpravodaje.

Abychom zajistili předefinování klávesnice pro XTerm, musíme:

  1. soubor xterm.ad zkopírovat z ftp archívu do vhodného adresáře; systémový administrátor může např. do adresáře /usr/X11/lib/X11/app-defaults, běžný uživatel do svého domovského adresáře
  2. do scriptu prováděného při startu X přidat řádek, který zajistí načtení atributů ze souboru xterm.ad do databáze atributů X serveru:
         xrdb -merge /...cesta.../xterm.ad
    (tímto scriptem může být např. globální /usr/X11/lib/X11/xinit/xinitrc nebo uživatelský $HOME/.xinitrc)

Když po instalaci atributů spustíme XTerm, interpretuje se klávesnice jako americká (tj. znaky se přijímají tak, jak jsou) kromě klávesy Pause. Ta přepíná mezi původní a českou mapou klávesnice. Vlastně ne českou, ale "pseudočeskou" - klávesnicí, která se od původní americké liší jen vhorní řadě kláves. Toto rozložení kláves samozřejmě není žádným standardem (je dáno pouze osobní preferencí jeho autora) a uživatel si je může předefinovat podle vlastních potřeb.

A dobrá zpráva nakonec: Už existuje nová verze X11R6, která údajně podporuje mrtvé klávesy na úrovni serveru. S ní bude možno přemapovat klávesnici globálně, takže pak dostaneme národní znaky "zadarmo" ve všech aplikacích.

Atributy pro XTerm

Soubor xterm.ad

Po zavedení do databáze atributů každý spuštěný XTerm reaguje na stisk klávesy Pause přepnutím mezi standardní "us-klávesnicí" (všechny klávesy kromě Pause interpretovány standardně) a "pseudočeskou" klávesnicí (horní řada kláves interpretována odlišně a přidána mrtvá klávesa).

Tzv. "pseudočeská" klávesnice není žádným standardem a její rozložení kláves je dáno pouze osobní preferencí člověka, který sice občas potřebuje psát česky, ale chce, aby interpretace kláves byla co nejbližší tomu, co je na klapkách napsáno. V případě potřeby lze soubor xterm.ad modifikovat podle vlastních požadavků.

V pseudočeské klávesnici je změněna pouze horní řada

     + ě š č ř ž ý á í é - 1 2 3 4 5 6 7 8 9 0 -
totéž se Shiftem      1 2 3 4 5 6 7 8 9 0 -
totéž s Altem         ! @ # $ % ^ & * ( ) _

a další klávesa napravo (=) slouží jako mrtvá:

     =                     mrtvá čárka
se Shiftem (+)        mrtvý háček
s Altem               mrtvá přehláska (diaeresis)

Mrtvý háček má v kombinaci s u význam kroužku, v kombinaci s o má význam stříšky, a v kombinaci s a má význam přehlásky. Rovnítko se získá napsáním dvou rovnítek ("čárkovaná čárka"), plus se získá napsáním dvou plusů ("háčkovaný háček"). Klávesa Pause přepíná zpět do us-klávesnice.

setting
1 Standard státního informačního systému z roku 1992, který předepisuje způsob kódování textových informací v češtině a slovenštině.
... zpět do textu
Zpět na začátek
ÚVT MU, poslední změna 14.11.2011