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