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,[1] PC-8,[2] MS-DOS Latin US[3] nebo prostě „rozšířené ASCII“,[2] 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.[Pozn 1] 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
editovatKó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 anglicky font pages.
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
editovatDě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
editovatNá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[4], 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.
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0_ |
☺ 263A 1 |
☻ 263B 2 |
♥ 2665 3 |
♦ 2666 4 |
♣ 2663 5 |
♠ 2660 6 |
• 2022 7 |
◘ 25D8 8 |
○ 25CB 9 |
◙ 25D9 10 |
♂ 2642 11 |
♀ 2640 12 |
♪ 266A 13 |
♫ 266B 14 |
☼ 263C 15 | |
1_ |
► 25BA 16 |
◄ 25C4 17 |
↕ 2195 18 |
‼ 203C 19 |
¶ 00B6 20 |
§ 00A7 21 |
▬ 25AC 22 |
↨ 21A8 23 |
↑ 2191 24 |
↓ 2193 25 |
→ 2192 26 |
← 2190 27 |
∟ 221F 28 |
↔ 2194 29 |
▲ 25B2 30 |
▼ 25BC 31 |
2_ |
SP 0020 32 |
! 0021 33 |
" 0022 34 |
# 0023 35 |
$ 0024 36 |
% 0025 37 |
& 0026 38 |
' 0027 39 |
( 0028 40 |
) 0029 41 |
* 002A 42 |
+ 002B 43 |
, 002C 44 |
- 002D 45 |
. 002E 46 |
/ 002F 47 |
3_ |
0 0030 48 |
1 0031 49 |
2 0032 50 |
3 0033 51 |
4 0034 52 |
5 0035 53 |
6 0036 54 |
7 0037 55 |
8 0038 56 |
9 0039 57 |
: 003A 58 |
; 003B 59 |
< 003C 60 |
= 003D 61 |
> 003E 62 |
? 003F 63 |
4_ |
@ 0040 64 |
A 0041 65 |
B 0042 66 |
C 0043 67 |
D 0044 68 |
E 0045 69 |
F 0046 70 |
G 0047 71 |
H 0048 72 |
I 0049 73 |
J 004A 74 |
K 004B 75 |
L 004C 76 |
M 004D 77 |
N 004E 78 |
O 004F 79 |
5_ |
P 0050 80 |
Q 0051 81 |
R 0052 82 |
S 0053 83 |
T 0054 84 |
U 0055 85 |
V 0056 86 |
W 0057 87 |
X 0058 88 |
Y 0059 89 |
Z 005A 90 |
[ 005B 91 |
\ 005C 92 |
] 005D 93 |
^ 005E 94 |
_ 005F 95 |
6_ |
` 0060 96 |
a 0061 97 |
b 0062 98 |
c 0063 99 |
d 0064 100 |
e 0065 101 |
f 0066 102 |
g 0067 103 |
h 0068 104 |
i 0069 105 |
j 006A 106 |
k 006B 107 |
l 006C 108 |
m 006D 109 |
n 006E 110 |
o 006F 111 |
7_ |
p 0070 112 |
q 0071 113 |
r 0072 114 |
s 0073 115 |
t 0074 116 |
u 0075 117 |
v 0076 118 |
w 0077 119 |
x 0078 120 |
y 0079 121 |
z 007A 122 |
{ 007B 123 |
| 007C 124 |
} 007D 125 |
~ 007E 126 |
⌂ 2302 127 |
8_ |
Ç 00C7 128 |
ü 00FC 129 |
é 00E9 130 |
â 00E2 131 |
ä 00E4 132 |
à 00E0 133 |
å 00E5 134 |
ç 00E7 135 |
ê 00EA 136 |
ë 00EB 137 |
è 00E8 138 |
ï 00EF 139 |
î 00EE 140 |
ì 00EC 141 |
Ä 00C4 142 |
Å 00C5 143 |
9_ |
É 00C9 144 |
æ 00E6 145 |
Æ 00C6 146 |
ô 00F4 147 |
ö 00F6 148 |
ò 00F2 149 |
û 00FB 150 |
ù 00F9 151 |
ÿ 00FF 152 |
Ö 00D6 153 |
Ü 00DC 154 |
¢ 00A2 155 |
£ 00A3 156 |
¥ 00A5 157 |
₧ 20A7 158 |
ƒ 0192 159 |
A_ |
á 00E1 160 |
í 00ED 161 |
ó 00F3 162 |
ú 00FA 163 |
ñ 00F1 164 |
Ñ 00D1 165 |
ª 00AA 166 |
º 00BA 167 |
¿ 00BF 168 |
⌐ 2310 169 |
¬ 00AC 170 |
½ 00BD 171 |
¼ 00BC 172 |
¡ 00A1 173 |
« 00AB 174 |
» 00BB 175 |
B_ |
░ 2591 176 |
▒ 2592 177 |
▓ 2593 178 |
│ 2502 179 |
┤ 2524 180 |
╡ 2561 181 |
╢ 2562 182 |
╖ 2556 183 |
╕ 2555 184 |
╣ 2563 185 |
║ 2551 186 |
╗ 2557 187 |
╝ 255D 188 |
╜ 255C 189 |
╛ 255B 190 |
┐ 2510 191 |
C_ |
└ 2514 192 |
┴ 2534 193 |
┬ 252C 194 |
├ 251C 195 |
─ 2500 196 |
┼ 253C 197 |
╞ 255E 198 |
╟ 255F 199 |
╚ 255A 200 |
╔ 2554 201 |
╩ 2569 202 |
╦ 2566 203 |
╠ 2560 204 |
═ 2550 205 |
╬ 256C 206 |
╧ 2567 207 |
D_ |
╨ 2568 208 |
╤ 2564 209 |
╥ 2565 210 |
╙ 2559 211 |
╘ 2558 212 |
╒ 2552 213 |
╓ 2553 214 |
╫ 256B 215 |
╪ 256A 216 |
┘ 2518 217 |
┌ 250C 218 |
█ 2588 219 |
▄ 2584 220 |
▌ 258C 221 |
▐ 2590 222 |
▀ 2580 223 |
E_ |
α 03B1 224 |
ß 00DF 225 |
Γ 0393 226 |
π 03C0 227 |
Σ 03A3 228 |
σ 03C3 229 |
µ 00B5 230 |
τ 03C4 231 |
Φ 03A6 232 |
Θ 0398 233 |
Ω 03A9 234 |
δ 03B4 235 |
∞ 221E 236 |
φ 03C6 237 |
ε 03B5 238 |
∩ 2229 239 |
F_ |
≡ 2261 240 |
± 00B1 241 |
≥ 2265 242 |
≤ 2264 243 |
⌠ 2320 244 |
⌡ 2321 245 |
÷ 00F7 246 |
≈ 2248 247 |
° 00B0 248 |
∙ 2219 249 |
· 00B7 250 |
√ 221A 251 |
ⁿ 207F 252 |
² 00B2 253 |
■ 25A0 254 |
NBSP 00A0 255 |
_0 | _1 | _2 | _3 | _4 | _5 | _6 | _7 | _8 | _9 | _A | _B | _C | _D | _E | _F |
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.[6]).
- 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
editovatRepertoá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í,[7] 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[8] 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.[9]
Internacionalizace
editovatPř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
editovatPoznámky
editovat- ↑ Některé počítače dostupné ve východoevropských, arabských a asijských zemích používaly jiné sady. Označení „OEM“, pro „výrobce původního zařízení“, signalizuje, že „nativní“ hardwarová znaková sada dodávaná v ROM může být změněna výrobcem, aby vyhovovala různým trhům.
Reference
editovatV tomto článku byl použit překlad textu z článku Code page 437 na anglické Wikipedii.
- ↑ OEM 437 [online]. Microsoft [cit. 2011-09-22]. Dostupné v archivu pořízeném dne 2016-06-09.
- ↑ a b OEM font [online]. PCmag.com [cit. 2011-11-15]. Dostupné v archivu pořízeném dne 2012-10-13.
- ↑ Code Page 437 MS-DOS Latin US [online]. Microsoft [cit. 2011-11-14]. Dostupné online.
- ↑ 00437 [online]. IBM [cit. 2011-11-14]. Dostupné v archivu pořízeném dne 09-06-2016.
- ↑ cp437_DOSLatinUS to Unicode table [TXT]. Unicode Consortium [cit. 2011-11-14]. Dostupné online.
- ↑ Unicode Consortium, Unicode Standardní 4.0, Chapter 7, "European Alphabetic Scripts", p176. PDF verze
- ↑ Richard Wilton, Programmer's Guide to PC & PS/2 Video Systems, 1987, Microsoft Press.
- ↑ Staff. MS LineDraw - Version 2.00 [online]. 2012 [cit. 2012-07-01]. Dostupné online.
- ↑ Staff. WD97: MS LineDraw Font Not Usable in Word [online]. Microsoft, 2007-01-22 [cit. 2012-07-01]. WD97 Dostupné online.
Související články
editovat- 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
editovat- IBM Code Page 437 reference chart[nedostupný zdroj]
- IBM PC memory-mapped video graphics to Unicode Kódy znaků z CP437 v Unicode na oficiálním WWW Unicode konsorcia