コードページ437とは、オリジナルのIBM PCパーソナルコンピュータ)の文字セットである。CP437やOEM-US、OEM 437[1]、PC-8[2]、DOS Latin USとしても知られる[3]。32番から126番のASCIIコード、アクセント付き文字(ダイアクリティカルマーク)の拡張範囲のコード、ギリシア文字がいくつか、アイコン、線を引くための記号、これらが含まれている。「OEMフォント」や「high ASCII」、「拡張ASCII[2](同様に互換性のないASCII拡張の1つ)として言及されることもある。

コードページ437
スタンダードVGAを使ってIBM PCで描画したコードページ437
別名 OEM-US
言語 英語
区分 拡張ASCIIOEMコードページ
拡張元 US-ASCII
関連エンコーディング コードページ850CWI-2
テンプレートを表示

この文字セットはEGAおよびVGAに互換性があるグラフィックカードの初期フォントとして残っている。PCが再起動してフォントが記録媒体から読み込まれる前に表示されるテキストは一般的にこの文字セットで描画される[脚注 1]。IBM PCの時代に開発された多くのファイルフォーマットもまたコードページ437がもとになっている。

ディスプレイアダプタ 編集

9×14ピクセルのフォントとしてIBM Monochrome Display Adapter (MDA) のROMに、またColor Graphics Adapter (CGA) カードの8×8ピクセルのフォントとしてこのフォントはオリジナルのIBM PCに含まれていた。

これらのディスプレイアダプタはすべて各文字のセルに8ビット文字のコードポイントが含まれているテキストモードが存在していて(詳細英語版はこちらを参照)、256通りの値が表示可能文字として使えるようになっていた。ASCIIで非表示可能文字として予約されている0番から31番の範囲のコードも含めて、256コードすべてが表示可能文字としてROMに割り当てられた。

東ヨーロッパの様々なPC機種で異なる文字セットが使われていて、ジャンパやCMOSの設定でユーザーが選べるものもあった。現地語のテキストを表示ができるようにしつつもコードポイントを多くの罫線素片で共有するなどして、可能な限りコードページ437と合うようにこれらの文字セットは設計された。

Altコード 編集

Altコード英語版の数字の組み合わせはコードページ437とその他のDOSコードページがもとになっている[4][5][6]Altキーを押しつつテンキーで3桁で十進法のAltキーコードを入力することによってユーザーは文字を入力できる[4]マイクロソフトによって(CP1252などの)専用の文字セットに、後にUnicodeWindowsで切り替えがなされたとき、もとのコードは残された(マイクロソフトはテンキーで数字の前に0を入力することでCP1252など実際の文字セットでコードを入力できるようにした[4][7])。

文字セット 編集

コードページ437は次の表に表される。対応するUnicodeのコードポイントと十進法でのコードポイントが各文字とあわせて表示される。一部のコードポイントには対応するUnicodeのコードポイントが複数あるため下の注記も見ること。十進法のコードはAltコードとして知られてもいる。

256通りすべての8ビットコードにグラフィックがROMで提供されているが、一部のコードポイント、特に1番から31番の範囲と127番のコードは一部のAPIでは表示されない[8]。代わりに制御文字として解釈される。例えばオリジナルのIBM PCでは多くのテキスト出力方法ではそれらのコードはBEL、BS、CR、LFとして解釈される。また多くのプリンタでもこれらの文字は印刷ができなかった。


凡例:

 アルファベット
 制御文字
 数字
 記号
 拡張記号
 図形文字
 国際
 未定義
コードページ437[9]
16進の1の位が_0 16進の1の位が_1 16進の1の位が_2 16進の1の位が_3 16進の1の位が_4 16進の1の位が_5 16進の1の位が_6 16進の1の位が_7 16進の1の位が_8 16進の1の位が_9 16進の1の位が_A 16進の1の位が_B 16進の1の位が_C 16進の1の位が_D 16進の1の位が_E 16進の1の位が_F
(16進の10の位が)0_ NUL
0000
0[注釈 1]

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
(16進の10の位が)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
(16進の10の位が)2_ SP
0020
32[注釈 1]
!
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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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[注釈 2]
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)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
(16進の10の位が)E_ α
03B1
224
ß
00DF
225[注釈 3]
Γ
0393
226
π
03C0
227[注釈 4]
Σ
03A3
228[注釈 5]
σ
03C3
229
µ
00B5
230[注釈 6]
τ
03C4
231
Φ
03A6
232
Θ
0398
233
Ω
03A9
234[注釈 7]
δ
03B4
235[注釈 8]

221E
236
φ
03C6
237[注釈 9]
ε
03B5
238[注釈 10]

2229
239
(16進の10の位が)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[注釈 11]

207F
252
²
00B2
253

25A0
254
NBSP
00A0
255[注釈 1]
_0 _1 _2 _3 _4 _5 _6 _7 _8 _9 _A _B _C _D _E _F

脚注 編集

 
異なるIBMの製品間のE0からEFの範囲の文字の比較

Unicodeに変換するときには一部のコードは一対一にUnicodeで対応するものがないことに気を付けるべきである。何が正しい選択かは状況による。

  1. ^ a b c 0、32 (20hex)、255 (FFhex) ではすべて空白が表示される。IBM PC向けにデザインされたワードプロセッサではU+00A0のノンブレーキングスペース (NBSP) にあたる255が使われている。
  2. ^ ギリシア文字の大文字のデルタ[U+0394, Δ]として127 (7Fhex) も時々使われた。
  3. ^ 225 (E1hex) はIBMによってラテン文字の「小文字の鋭いs[10][U+00DF, ß]として識別されているが、OEMフォントではギリシア文字の小文字のベータとして表示されることがある。
  4. ^ 227 (E3hex) はIBMによってギリシア文字の「小文字のパイ」[U+03C0, π]として識別されているが、OEMフォントではギリシア文字の大文字のパイ[U+03A0, Π]やN項総乗記号[U+220F, ∏]として表示されることがある。
  5. ^ 228 (E4hex) はIBMによってギリシア文字の「大文字のシグマ」[U+03A3, Σ]として識別されているが、N項総和記号[U+2211, ∑]としても使われる。
  6. ^ 230 (E6 hex) はIBMによってギリシア文字の「「小文字のミュー」[U+03BC, μ]として識別されているが、マイクロ記号[U+00B5, µ]として使われることもある。UnicodeやIBMのギリシア文字のGCGID表[11]ではこのコードページのこの文字はこのギリシア文字に対応付けられているが、例えばPythonではマイクロ記号に対応付けられている。
  7. ^ 234 (EAhex) はIBMによってギリシア文字の「大文字のオメガ」[U+03A9, Ω]として識別されているが、オーム 記号[U+2126, Ω]としても使われる。Unicodeではオーム記号は大文字のオメガと同じであるとみなされており、後者をどちらの状況でも使うことを推奨している[12]
  8. ^ 235 (EBhex) はIBMによってギリシア文字の「「小文字のデルタ」として識別されている。また非公式的に小文字のエズ[U++00F0, ð]や偏微分の記号[U+2202, ∂]としても使われた。
  9. ^ 237 (EDhex) はIBMによってギリシア文字の「「小文字の(閉じた形の)ファイ」[U+03D5, ϕ、または斜体の数学用英数字記号であるU+1D719, 𝜙]として識別されているが、 (Pythonのコーデックライブラリなど[13])一部のコーデックは開いた(または緩い)字形[U+03C6, φ]でUnicodeに割り当てられている。IBMのギリシア文字のGCGID表[11]とUnicodeのギリシア文字のチャート[14]を見比べると、Unicodeへの対応付けを行うときにどこで開いた形と閉じた形をIBMは逆にしたかなどが分かる。この文字は空集合の記号[U+2205, ∅]や、直径記号[U+2300, ⌀]、ストローク付きの0[U++00D8, ØとU++00f8, ø]として使われることもある。
  10. ^ 238 (EEhex) はIBMによってギリシア文字の「「小文字のエプシロン」[U+03B5, ε]として識別されているが、OEMフォントでは属する記号[U+2208, ∈]として表示されることがある。後に非公式的にユーロ記号[U+20AC, €]として使われた。
  11. ^ チェックマーク[U+2713, ✓]として251 (FBhex) も時々使われた。

歴史 編集

ビル・ゲイツは1995年10月2日号のFortune Magazineのビル・ゲイツとポール・アレンとのインタビューの中でワングのワードプロセッサの文字セットからコードページ437の範囲はとられたと述べている。

"... We were also fascinated by dedicated word processors from Wang, because we believed that general-purpose machines could do that just as well. That's why, when it came time to design the keyboard for the IBM PC, we put the funny Wang character set into the machine—you know, smiley faces and boxes and triangles and stuff. We were thinking we'd like to do a clone of Wang word-processing software someday."
「...汎用マシンでワードプロセッサと同じ役目が果たせると考えていたため、ワングの専用ワードプロセッサにわたしたちも夢中になりました。IBM PCのキーボードをデザインすることになったときに、お知りの通り笑顔や四角形や三角形など、ユーモアのあるワングの文字セットをマシンに取り入れたのはこれが理由です。」

デイビッド・J・ブラッドリー(PCのBIOSの開発者)のインタビューによると、Andy Saenz(ビデオカードの責任者)、Lew Eggebrecht(PCの主任技術者)、また彼自身によってシアトルからアトランタへの飛行機に乗っているときの4時間の会議中にこれらの文字は定められた[15]

表示文字の選ばれ方に関する内部規則がある。

  • 表の0番目と1番目の行、0番から31番 (00hexから1Fhex) までのコードは装飾記号(補足や装飾用の文字)に分類される。127 (7Fhex) 番と離れている文字もこのグループに属する。
  • 表の2番目から7番目の行、(127 (7Fhex) 番の文字を除いて、)32番から126番 (20hexから7Ehex) までのコードはASCII印字可能文字になる。
  • 表の8番目から10番目 (8hexからAhex )の行、128番から175番 (80hexからAFhex) までのコードは国際的なテキスト文字を収録している。
  • 表の11番目から13番目 (BhexからDhex)、176番から223番 (B0hexからDFhex) までのコードは罫線素片ブロック文字になる。右側に線がある文字や右側を塗りつぶすための文字は全て192番から223番 (C0hexからDFhex) までの文字に含まれるように、このブロックは配置されている。オリジナルのIBM PCMDAではこのコードページの437グリフは8ピクセルの幅のビットマップとして保持されていたが、見た目をよくするために画面上では9ピクセルごとに表示された。この範囲の文字における各文字の8番目のピクセル列は特殊なハードウェア回路によって重複して表示され[16]、各行の隙間、特に塗りつぶしを行った際の隙間をなくすために使われた。
  • 表の14番目から15番目 (EhexからFhex) の行、224番から255番 (E0hexからFFhex) までのコードは数学記号にあてられていて、最初の12コードは物理でよく使われるギリシャ文字を収録している。244番目 (FAhex) と245番目 (FBhex) は積分記号(∫)として使われる記号である斜体の長いsの上の部分、下の部分になっていて、179 (B3hex) 番の文字である罫線素片の縦線で伸ばせるようになっている。244 (F4hex) 番目の文字は長いs (ſ) の代替として使うこともできる。249番目 (F9hex) と250番目 (FAhex) は、前者が印刷上の中黒 (·) に似た後者を少し大きくしたものであり、ほとんど区別がつかない。255 (FFhex) 番目の文字はただ空白であり、数式を整えるためのノーブレークスペースのようなものとして働く。

マイクロソフトによってフォントのデザイナーにサポートすることが推奨されているWGL4セットの一部として、Windowsの多くのフォントはこれらの特別な表示文字は示したUnicodeのインデックスに含まれている。(少なくとも一部の解像度において、等幅のラスターフォントファミリであるTerminalはコードページ437の文字すべてを持つ初期のフォントである。)これらの文字をコードページ437のコードポイントから直接表示するためにMS Linedraw[17]というWindowsのフォントはコードページ437の文字すべてを持ち、制限付きながらも、DOS向けのテキストをDOSで表示したように今のWindowsマシンで表示できるようにしている[18]

国際化 編集

大体128から175の数値で国際文字が一続きにコードページ437に存在する。しかしながら多くの西洋の言語に大切ないくつかの文字が欠けている。

セント(¢)、ポンド(£)、/(¥)の通貨記号といっしょに以前使われていたヨーロッパの通貨記号がいくつかある。フローリン(ƒ、オランダ)やペセタ(₧、スペイン)である。スペインのペセタは国際的な通用力を持っていたわけでもなく、また「Pt」、「Pta」、「Pts」、「Ptas」のように省略されていただけであってそれ自体の記号はなかったため、後者の存在は異例である。ただしIBM Electric typewriterのスペインモデルでもその記号に独立した位置づけがされていた。

コードページ850(DOS Latin-1)やコードページ850(DOS 中央ヨーロッパ)、コードページ737(DOS ギリシア語)のような後にできたのODS用の文字セットでは、混ぜ合わせた文字( 二重線の横線/単線の縦線)は無くしつつも、単線および二線の罫線素片を残してコードページ437との互換性を部分的に保ちつつ国際的な使用をするために隙間がなくなっている。UnicodeとマイクロソフトのWGL4の文字セットに似ている字形がコードページ437の文字すべてにあり、そのためWindowsのほとんどのフォントで、またLinuxカーネルの標準VGAフォントで、X11ISO 10646フォントで使うことができる。

関連項目 編集

脚注 編集

  1. ^ 西ヨーロッパやアラブ、アジアの国でのシステムでは異なる文字セットがよく使われる。「OEM」という名称は「他社ブランドの機器製造メーカー」を意味し、ROMで提供される「ネイティブ」なハードウェア文字セットは製造メーカーによって異なる市場に沿うように変えられるということを示す。

参考文献 編集

  1. ^ OEM 437”. Go Global Developer Center. マイクロソフト. 2016年6月9日時点のオリジナルよりアーカイブ。2011年9月22日閲覧。
  2. ^ a b OEM font”. Encyclopedia. PCmag.com. 2011年11月15日閲覧。
  3. ^ Kano, Nadine. “Appendix H Code Pages”. Globalization and Localization : Code Page 437 DOS Latin US. マイクロソフト. http://msdn.microsoft.com/en-us/library/cc195060.aspx 2011年11月14日閲覧。 
  4. ^ a b c Glossary of Terms Used on this Site”. マイクロソフト. 2018年8月17日閲覧。
  5. ^ Murray Sargent. “Entering Unicode Characters – Murray Sargent: Math in Office”. 2018年8月17日閲覧。
  6. ^ ALT+NUMPAD ASCII Key Combos: The α and Ω of Creating Obscure Passwords”. 2018年8月17日閲覧。
  7. ^ Insert ASCII or Unicode Latin-based symbols and characters - Office Support”. マイクロソフト. 2018年8月17日閲覧。
  8. ^ SBCS code page information document CPGID 00437”. Coded character sets and related resources. IBM (1986年). 2016年6月9日時点のオリジナルよりアーカイブ。2011年11月14日閲覧。
  9. ^ Steele, Shawn (1996年4月24日). “cp437_DOSLatinUS to Unicode table” (TXT). Unicodeコンソーシアム. 2011年11月14日閲覧。
  10. ^ Code Page (CPGID): 00437” (TXT). Coded character sets and related resources. IBM (1984年). 2017年2月25日閲覧。
  11. ^ a b Graphic character identifiers: Alphabetics, Greek”. Coded character sets and related resources. IBM. 2017年2月25日閲覧。
  12. ^ Unicodeコンソーシアム (2003-05-21). “Chapter 7: European Alphabetic Scripts” (PDF). The Unicode Standard 4.0. Addison-Wesley (2003-8発行). p. 176. ISBN 0-321-18578-1. https://www.unicode.org/versions/Unicode4.0.0/ch07.pdf 2016年6月9日閲覧。 
  13. ^ cpython/cp437.py at master · python/cpython · GitHub”. 2018年8月17日閲覧。
  14. ^ Greek and Coptic: Range: 0370–03FF” (PDF). The Unicode Standard, Version 9.0. Unicodeコンソーシアム. 2017年2月25日閲覧。
  15. ^ Origins of the ASCII Smiley Character: An Email Exchange With Dr. David Bradley” (2015年11月6日). 2016年11月27日閲覧。 “[…] If you look at the first 32 characters in the IBM PC character set you'll see lots of whimsical characters — smiley face, musical notes, playing card suits and others. These were intended for character based games […] Since we were using 8-bit characters we had 128 new spots to fill. We put serious characters there — three columns of foreign characters, based on our Datamaster experience. Three columns of block graphic characters […] many customers with Monochrome Display Adapter would have no graphics at all. […] two columns had math symbols, greek letters (for math) and others […] about the first 32 characters (x00-x1F)? […] These characters originated with teletype transmission. But we could display them on the character based screens. So we added a set of "not serious" characters. They were intended as display only characters, not for transmission or storage. Their most probable use would be in character based games. […] As in most things for the IBM PC, the one year development schedule left little time for contemplation and revision. […] the character set was developed in a three person 4-hour meeting, and I was one of those on that plane from Seattle to Atlanta. There was some minor revision after that meeting, but there were many other things to design/fix/decide so that was about it. […] the other participants in that plane trip were Andy Saenz — responsible for the video card, and Lew Eggebrecht — the chief engineer for the PC.”(訳注: 引用の翻訳: [...]IBM PCの文字セットの最初の32文字を見たらスマイリーフェイスや音符、トランプのスートなど、たくさんの変わった文字があることがわかります。これらは文字ベースのゲームに使うためのものでした。[...]8ビット文字を使っていたため新たに128この空きがありました。データマスターでの経験をもとにして重要な文字、外国語の文字を三桁にわたりいれました。ブロックの表示文字を三桁にわたりいれました。[...]MDAを持っている多くの顧客はグラフィックはまったく使えなかったでしょう。[...]残りの2桁には数学記号や(数学用の)ギリシア文字などがありました。[...]最初の32文字(x00からx1F)はどうしましょうか。[...]これらの文字はテレタイプの送信から来ていますが、文字ベースの画面に表示できました。なので「重要ではない」文字を加えました。文字を表示するためであって通信や保管のためではありませんでした。一番ありそうな使い方は文字ベースのゲームでしょう。[...]IBM PCに関してほとんどのことはそうでしたが、1年間の開発スケジュールではよく考えたり、修正を行う時間はほとんどありませんでした。[...]その文字セットは3人での4時間の会議中に開発されました。またそのシアトルからアトランタへの飛行機の中で会議を行った人の1人は私です。会議の後ちょっとした改訂のようなものがありましたが、そのために設計や修正、決定することがほかにもたくさんありました。[...]その飛行機に乗っているときにいたほかの関係者としてビデオカードの責任者のAndy Saenz、そのPCの主任技術者のLew Eggebrechtがいました。)
  16. ^ Programmer's Guide to PC & PS/2 Video Systems: Maximum Video Performance Form the EGA, VGA, HGC, and MCGA (1st ed.). Microsoft Press. (1987-12). ISBN 1-55615-103-9. 978-1-55615-103-3 
  17. ^ Mike Jacobs. “MS LineDraw font family - Typography | Microsoft Docs”. Microsoft typography. マイクロソフト. 2018年8月17日閲覧。
  18. ^ Staff (2013年10月26日). “WD97: MS LineDraw Font Not Usable in Word”. Microsoft. マイクロソフト. 2016年3月24日時点のオリジナルよりアーカイブ。2012年7月1日閲覧。

外部リンク 編集