úvod do ucw - znakové sady


To "'czdebian-l zavinac pvt bod net'" <czdebian-l zavinac pvt bod net>
From Pavel Makovec <pavelm zavinac terminal bod cz>
Date Tue, 21 Apr 1998 02:05:20 +0200

martin mareš, http://atrey.karlin.mff.cuni.cz/~mj/linuxcs/#keymaps píše:
> Znakové sady
> 
> Již od malička Linux podporuje vyměnitelnou znakovou sadu pro konzoli.
> A od nepaměti to mělo nějaké háčky: hlavní problém je v tom, ze když
> panove od IBM (Institute of Black Magic?) vyvíjeli svoji VGA kartu, 
> rozhodli se, že implementují 9-pixelový font, který by vypadal o něco 
> estetičtěji než původní 8-pixelový, co měla EGA, nicméně nechtělo se 
> jim ukládat někam onen devátý bit. Vyřešili to tedy velice šalamounsky: 
> do devátého pixelu dávali hardwarově barvu pozadí, ovšem aby to 
> nerozbořilo rámečkové znaky, u znaků s kódy 0xb0 až 0xdf se použije 
> barva pixelu předchozího.

tomu moc nerozumím, ale dávno před vga vznikla 437, která obsahuje
grafické znaky včetně rámečků jednoduchých, dvojitých a kombinovaných.
(o vt100 a dalších znakových sadách pro sálové počítače ani nemluvě)

> Aby se Linux mohl s tímto šílenstvím vyrovnat (uznejte, že většina 
> kódování znaků používaných v nedosovském světě - jako například 
> ISO-8859-cokoliv - má v této zóně normální znaky a případnou grafiku 
> má zcela jinde), musely být zavedeny mapovací tabulky konvertující 
> kódy znaků na jejich pozice ve fontu (viz příkaz mapscrn). 

iso-8859-2 grafické znaky nedefinuje. snahy tyto znaky přidat
je nutně nestandardní a vede k problémům z toho vyplývajících.

> Ovšem Linuxová implementace VT100 podporuje hned několik 
> různých mapování - například VT100-grafiku, IBM-grafiku apod., 
> přičemž před chvílí popsané překódovávání se děje pouze pro jeden 
> z těchto módů. Tudíž aby fungovala grafika, musí se poměrně 
> nechutným způsobem modifikovat termcap, terminfo a kdo ví, 
> co ještě všechno, a přemapovat grafické znaky ve všech těchto 
> souborech. I to ovsem občas nepřinese kýžené ovoce (tedy ono 
> přinese, ale poněkud zkažené), jelikož se tak grafika většinou 
> přemapuje do oblasti 0x80 až 0x9f, již vetšina programů považuje 
> za znaky řídící, a tudíž nezobrazitelné. 

americký soft má rámečky z 437, které nejsou v iso-8859-2. buď
bude u.s. soft iso (bez rámečků), nebo nemůžeme být iso my...

> Naštestí se během vývoje Linuxu 1.3.X objevilo řešení nové všech 
> těchto problémů prosté: kernel začal podporovat mapování znaků 
> přes 16-bitový kód UniCode. Zkrátka a dobře, pro každý 
> z popisovaných módů konzole existuje převodní tabulka do 
> UniCode, plus ještě jedna definovatelná uživatelem (tu ostatně 
> nakonec pro češtinu využijeme) a pak je ještě definována konverzní 
> tabulka z UniCode do kódování fontu, čímž se všechny konverze 
> dají provést jednoduše a docela rychle.

ideální by asi bylo nemít žádné převodní tabulky a používat jen
unikód. to je ale asi zatím jen čirá utopie pro počítačové laiky...

pavel makovec

<<application/ms-tnef>>


Partial thread listing: