CP437
CP437, kódová stránka 437 je znaková sada původních osobních počítačů IBM PC. Znaky s kódy 32–126 jsou shodné s ASCII a jsou doplněny o smajlíky, různé symboly včetně matematických, písmena s diakritikou, některá řecká písmena a symboly pro kreslení rámečků. Bývá nazývána hardwarová kódová stránka, „OEM font“, OEM 437, PC-8,, MS-DOS Latin US nebo prostě „rozšířené ASCII“, protože je jedním z mnoha vzájemně nekompatibilních rozšíření kódu ASCII.

Tato znaková sada nebyla původně navržena jako kódová stránka, jednalo se prostě o repertoár grafických znaků dostupných na původních počítačích IBM PC. Odpovídá hardwarovému fontu adaptérů Monochrome Display Adapter (MDA) a Color Graphics Adapter (CGA) a primárnímu fontu většiny grafických adaptérů kompatibilních s EGA nebo VGA. Texty vypisované po startu PC do okamžiku, kdy je zaveden jiný font načtený z disku, jsou zpravidla vykreslovány znaky z této znakové sady. Mnoho formátů souborů vyvinutých v době IBM PC, jako například .nfo, používá CP437 jako implicitní kódování.

Obrazové adaptéry 

Kódová stránka 437 byla implicitním, hardwarovým (uloženým v pevné paměti), kódováním většiny počítačů IBM PC; některé východoevropské počítače však používaly jako hardwarovou kódovou stránku jiné kódové stránky, které bylo možné u některých počítačů vybrat pomocí přepínačů nebo nastavení CMOS. Arabské a hebrejské počítače a tiskárny dokonce podporovaly více softwarově přepínatelných hardwarových kódových stránek nazývaných .

Původní počítače IBM PC obsahovaly tento font o velikosti 9×14 pixelů uložený v paměti ROM adaptéru Monochrome Display Adapter (MDA) nebo o velikosti 8×8 pixelů v adaptéru Color Graphics Adapter (CGA). Enhanced Graphics Adapter (EGA) obsahoval znaky o velikosti 8×14 pixelů a Video Graphics Array (VGA) o velikosti 9×16.

Všechny uvedené grafické karty mají textové režimy, ve kterých každá znaková buňka obsahuje jeden 8bitový kód znaku (viz detaily), což umožňuje zobrazovat 256 různých znaků. Všech 256 kódů bylo přiřazeno grafickým znakům v ROM, včetně kódů 0 až 31, které jsou v ASCII rezervovány pro negrafické řídicí znaky.

Alt kódy 
Dědictví kódové stránky 437 a jiných kódových stránek používaných v DOSu je sada číselných kombinací používaných v Alt kódy zavedených v první verzi operačního systému MS-DOS. Uživatel může vložit znak tak, že při držení klávesy Alt zadá na numerické klávesnici až tříciferný kód znaku v desítkové soustavě. I když Microsoft přešel ve Windows na standardnější znakové sady (jako například CP1252 a později Unicode), mnoho uživatelů si pamatovalo kódy používané na jejich kódové stránce, takže Microsoft musel tento způsob zadávání znaků zachovat (Microsoft přidal možnost vložit kód v aktuální znakové sadě zadáním 0 na numerické klávesnici před číslicemi).

Znaky 

Následující tabulka ukazuje kódovou stránku 437. U každého znaku je uveden kódový bod ekvivalentního znaku v Unicode a kód znaku v desítkové soustavě. Za tabulkou jsou uvedeny další informace, především pro znaky, které mají více ekvivalentů v Unicode. Desítkové kódy lze používat jako Alt kódy.

Přestože paměť ROM videoadaptéru obsahuje obrazy všech 256 znaků, které lze vybírat pomocí 8bitového kódu, většina funkcí operačního systému zobrazení všech znaků neumožňuje; obvykle se jedná o kódy 1 až 31 a 127, které se interpretují jako řídicí znaky. Základní funkce pro výstup textu na obrazovku v BIOSu původních IBM PC interpretuje kódy pro CR, LF, BS a některé další. Do textových souborů v MSDOSu nelze při zadávání klávesnice vložit kód 26 (^Z), protože má význam konce souboru. Také mnoho tiskáren neumožňuje tisknout tyto znaky.

Při implementaci konverzí do Unicode je třeba dát pozor na to, že některé kódy nemají jednoznačný ekvivalent v Unicode, a správný výběr znaku, na který mají být konvertovány, závisí na kontextu:

 0 i 255 (FFhex) se zobrazují jako mezera, stejně jako 32 (20hex). Použití kódu 255 pro nezlomitelnou mezeru (NBSP) U+00A0 má některé předchůdce v slovních procesorech navržených pro IBM PC.
 225 (E1hex) je jak německé ostré S (U+00DF, ß) tak řecké malé písmeno beta (U+03B2, β).
 227 (E3hex) je řecké malé písmeno pí (U+03C0, π), ale starší fonty, například Terminal, používají nejednoznačnou variantu znaku pí, a proto může být použita jak pro řecké velké písmeno pí (U+03A0, Π) tak pro symbol n-árního součinu (U+220F, ∏).
 228 (E4hex) je jak symbol n-árního součtu (U+2211, ∑) tak řecké velké písmeno sigma (U+03A3, Σ).
 230 (E6hex) je jak značka mikro (U+00B5, µ) tak řecké malé písmeno mý (U+03BC, μ).
 234 (EAhex) je jak značka pro Ohm (U+2126, Ω) tak řecké velké písmeno omega (U+03A9, Ω). (Unicode se přiklání k tomu, aby jako značka pro Ohm používalo velké písmeno omega.).
 235 (EBhex) je řecké malé písmeno delta (U+03B4, δ), ale bylo také používáno jako náhrada za islandské malé písmeno eth (U+00F0, ð) a symbol parciální derivace (U+2202, ∂).
 237 (EDhex) by měl být používán jako řecké malé písmeno fí, ale především se používá jako symbol prázdné množiny (U+2205, ) a byl také používány jako řecký symbol fí v kurzívě (U+03D5, ) pro pojmenovávání úhlů, symbol průměru (U+2300, ) a jako náhrada za přeškrtnuté malé písmeno O (U+00F8, ø).
 238 (EEhex) slouží jak jako řecké malé písmeno epsilon (U+03B5, ε) tak jako symbol prvek množiny (U+2208, ∈). Později byl často používán i pro znak Eura (U+20AC, €).

Historie 

Repertoár kódové stránky 437 byl převzat ze znakové sady strojů pro zpracování textů z laboratoří Wang.
Bill Gates a Paul Allen v rozhovoru pro Fortune Magazine 2. října 1995 uvedli:

 „... Byli jsme také fascinováni specializovanými textovými procesory z Wangových laboratoří, protože jsme věřili, že univerzální počítače by mohly plnit tuto úlohu také. Proto když přišel čas na návrh klávesnice pro IBM PC, použili jsme podivnou Wangovu znakovou sadu pro osobní počítače, včetně smajlíků, rámečků, geometrických symbolů a podobně. Domnívali jsme se, že bychom jednoho dne rádi dodávali něco podobného Wangovým strojům na zpracování textů.“

Výběr grafických znaků má určitou vnitřní logiku:
 Symboly z řádků 0 a 1 s kódy 0 až 31 (00hex až 1Fhex), jsou různé symboly dingbat (doplňkové a dekorativní znaky). Do této skupiny patří také izolovaný znak 127 (7Fhex).
 Symboly z řádků 2 až 7 (kromě znaku 127, 7Fhex) s kódy 32 až 126 (20hex až 7Ehex), jsou standardní tisknutelné znaky ASCII.
 Symboly z řádků 8 až 10 (8hex nahex) s kódy 128 až 175 (80hex až AFhex), obsahují výběr národních textových znaků.
 Symboly z řádků 11 až 13 (Bhex na Dhex) s kódy 176 až 223 (B0hex na DFhex), jsou znaky pro kreslení rámečků a blok znaky. Tento blok je uspořádán tak, že znaky 192 až 223 (C0hex na DFhex) obsahují všechny pravé čáry a vpravo vyplněné oblasti. Původní videoadaptér na IBM PC, Monochrome Display Adapter obsahoval obrazy znaků jako bitové mapy široké osm pixelů, ale pro lepší vizuální efekt je zobrazoval na obrazovce se šířkou 9 pixelů. Znaků z tohoto intervalu měly osmý sloupec pixelů zdvojený díky speciálnímu hardwarovému obvodovému řešení, díky čemuž nejsou rámečky a vyplněné oblasti přerušované mezírkou v místě 9 pixelu.
 Symboly z řádků 14 a 15 (Ehex a Fhex) s kódy 224 až 255 (E0hex na FFhex) jsou určeny pro matematické symboly, z nichž prvních dvanáct je výběr řeckých písmen často používaných ve fyzice. Znaky 244 (F4hex) a 245 (F5hex) jsou horní a spodní část kurzívního dlouhého S, které se používá jako symbol integrálu () a mohou být rozšířena o znak 179 (B3hex), vertikální řádek pro kreslení blok. Znak 244 by mohl být používán také jako náhrada za ſ. Znaky 249 (F9hex) a 250 (FAhex) jsou téměř nerozlišitelné: první je nepatrně větší než druhý, který připomíná typografickou střední tečku (·). Znak 255 (FFhex) je pouze prázdný a funguje jako druh nezlomitelné mezery pro vytváření matematických vzorců.

Většina fontů pro Microsoft Windows zahrnuje speciální grafické znaky v Unicode indexech, protože jsou součástí sady WGL4, kterou Microsoft doporučuje, aby ji návrháři fontů podporovali. (Neproporcionální rodina rastrových fontů Terminal obsahovala všechny znaky z kódové stránky 437, alespoň v některých rozlišeních.) Pro nakreslení těchto znaků přímo z těchto kódových bodů slouží v Microsoft Windows font nazývaný MS Linedraw obsahuje všechny znaky z kódové stránky 437, a tak poskytuje způsob, jak s určitými omezeními zobrazit texty z DOSu na současných počítačích s Windows.

Internacionalizace 

Přestože kódová stránka 437 obsahuje řadu národních znaků, především s kódy 128 až 175 (80hex až AFhex), chybí v ní mnoho znaků potřebných pro významné západoevropské jazyky:
 Znaky Á, Í, Ó, Ú pro španělštinu, À, Â, È, Ê, Ë, Ì, Î, Ï, Ô, Œ, œ, Ù, Û pro francouzštinu, Á, À, Â, Ã, ã, Ê, Í, Ó, Ô, Õ, õ, Ú pro portugalštinu a À, È, Í, Ï, Ò, Ó, Ú pro katalánštinu.
 Kód 225 (E1hex) se používá pro řecké písmeno beta (β) i pro německé ostré S (ß), což je sice použitelné v nízkém rozlišení na původních adaptérech CGA, ale ve vyšších rozlišeních je to těžko přijatelné. Většina novějších sad glyfů pro kódovou stránku 437 včetně sad vestavěných ve videoadaptérech IBM EGA a VGA, dává na této pozici přednost německému ostrému S.
 Přeškrtnuté 'Ø' a 'ø' pro skandinávské jazyky. Jako náhrada by mohl být použit symbol prázdné množiny s kódem 237 (EDhex), ale mezery okolo tohoto znaku způsobují, že jeho použití ve slově je ošklivé. Kódové stránky pro dánštinu/norštinu a islandštinu (865 a 861), nahrazují znak cent (¢) znakem 'ø' a yen (¥) znakem 'Ø'.
 Většina symbolů řecké abecedy byla vynechána, a použita pro základní matematické symboly. (Řecké znaky jsou obsaženy v kódových stránkách 737 a 869 pro řecký jazyk.)

Spolu se symboly měn cent (¢), libra šterlinků (£) a japonský jen/čínský yuan (¥) obsahuje několik hlavních evropských symbolů měn: nizozemský gulden (ƒ) a španělská peseta (₧). Vzhledrem k tomu, že španělské peseta nikdy neměla vlastní symbol a byla zkracována různými způsoby jako „Pt“, „Pta“, „Pts“ nebo „Ptas“, je přítomnost znaku pro pesetu neobvyklá. Pravda je, že španělské modely elektrických psacích strojů IBM také měly pro znak pesety vyhrazený kód.

Pozdější znakové sady pro MS-DOS, jako například CP850 (PC Latin-1), CP852 (PC Latin-2) a CP737 (PC řečtina), vyplnily mezery pro mezinárodní použití některými stránkami kompatibilními s kódovou stránkou 437 s tím, že zachovaly znaky pro jednoduché a dvojité rámečky, ale vypustily jejich kombinace (například vodorovné dvojité/svislé jednoduché). Pro všechny znaky z kódové stránky 437 existují podobné glyfy v Unicode a ve fontech obsahujících Windows glyph list 4 (WGL4) firmy Microsoft, a proto jsou dostupné ve většině fontů v Microsoft Windows; jsou také obsaženy v implicitním VGA font Linuxového jádra a ISO/IEC 10646 fontech pro X11.

Odkazy

Poznámky

Reference

Související články 

 Alt kódy
 ANSI
 ANSI art
 ASCII
 ASCII art
 Dwarf Fortress
 .nfo formát souboru, který používá CP437
 Semigrafické znaky
 Kódování pro západoevropské jazyky
 Terminal (font)
 Nibble

Externí odkazy 
 IBM Code Page 437 reference chart
 IBM PC memory-mapped video graphics to Unicode Kódy znaků z CP437 v Unicode na oficiálním WWW Unicode konsorcia

437