オリジナルのIBM PCの文字セット
コードページ437 ( CCSID 437 )は、 初代 IBM PC (パーソナルコンピュータ)の 文字セットです。 [2] CP437 、 OEM-US 、 OEM 437 、 [3] PC-8 、 [4] または MS-DOS Latin US とも呼ばれます 。 [5] このセットには、すべての印刷可能な ASCII 文字に加え、一部のアクセント付き文字( 分音記号 )、ギリシャ文字、アイコン、線描画記号が含まれています。「 OEMフォント 」や「 高ASCII 」、あるいは「 拡張ASCII 」 [4] (互いに互換性のない多くのASCII拡張機能の1つ)と呼ばれることもあります。
この文字セットは、 EGA および VGA 互換のグラフィックカード のコアにおいて主要な文字セットとして今も使用されています。そのため、PCの再起動時、フォントが読み込まれレンダリングされる前に表示されるテキストは、通常この文字セットを使用してレンダリングされます。 [注 1] IBM PCの時代に開発された多くのファイル形式も、コードページ437に基づいています。
ディスプレイアダプター
オリジナルの IBM PC には、 IBM モノクロ ディスプレイ アダプタ (MDA) の ROMに格納された 9×14 ピクセル/文字のフォントと、 カラー グラフィックス アダプタ ( CGA ) カード の 8×8 ピクセル/文字のフォントとしてこのフォントが含まれていました。 [ 引用が必要 ] IBM 拡張グラフィックス アダプタ (EGA) には 8×14 ピクセル/文字のバージョンが含まれ、 VGA には 9×16 バージョンが含まれていました。 [ 引用が必要 ]
これらのディスプレイアダプタはすべてテキストモードを備えており、各文字セルには 8ビットの 文字 コードポイント ( 詳細を 参照)が含まれ、グラフィック文字には256通りの値があります。256通りのコードすべてにROM内でグラフィック文字が割り当てられており、ASCIIでは非グラフィック制御文字用に予約されている0から31までのコードも含まれます。
東ヨーロッパの様々なPC ( どのPC? ) は異なる文字セットを使用しており、ジャンパーやCMOS設定でユーザーが選択できるものもありました。これらの文字セットは、例えば多くの線描画文字のコードポイントを共有するなど、可能な限り437に一致するように設計されていましたが、それでも現地の言語のテキストを表示できました。
Altコード
コードページ437の遺産として、Windowsの Altコード で使用される数字の組み合わせがあります。 [6] [7] [8] DOSユーザーは、 Altキー を押しながら テンキー で文字コードを入力することで文字を入力できました。 [6]多くのユーザーはCP437(または同様の CP850 )に必要な数字を記憶していました。Microsoft Windowsは CP1252 などの異なる文字セットを使用していましたが 、元の数字がエミュレートされていたため、ユーザーは引き続き使用できました。Microsoftは、数字の前に0を入力することでWindowsの文字セットからコードを入力できる機能を追加しました。 [6] [9]
文字セット
以下の表はコードページ437を示しています。各文字は、対応する Unicode コードポイント(文字コードと一致しない場合)とともに表示されます。 ツールチップ (通常は文字のすぐ左をポイントした場合にのみ表示されます)には、Unicodeコードポイント名と10進数の Altコード が表示されます。一部のコードポイントには、対応するUnicode文字が複数存在するため、以下の注記も参照してください。
ROMは256通りの8ビットコードすべてに対応するグラフィックを提供していますが、一部の APIは 一部のコードポイント、特に0~31の範囲と127のコードを印刷しません。 [10] 代わりに、これらのコードを制御文字として解釈します。例えば、オリジナルのIBM PCでは、テキスト出力の多くの方法では、 16進 コード07、08、0A、0Dをそれぞれ BEL 、 BS 、 LF 、 CR として解釈していました。また、多くのプリンタでもこれらの文字を印刷できませんでした。
記号と句読点
Unicode に変換する場合、一部のコードには一意の単一の Unicode 相当値が存在しないため、正しい選択はコンテキストによって異なる場合があります。
^ 0 は空白を描画しますが、 Cの文字列終端文字として使用する場合、より正確にはNULとして解釈されます。Star Micronicsの プリンタは、コードページ437ベースのC0領域グラフィックス実装において、このコードを スラッシュ付きゼロ として再利用しています 。 [15]
^ 14 (E hex ) 図のように、 8分音符 の連桁[U+266B, ♫] へのマッピングは、 Unicodeコンソーシアム によって提供されたデータに従っています。 [16] IBMのGCGID (Graphic Character Global IDentifier) 文字IDシステムでは、これはSM910000であり、単に「2つの音符」と注釈されています。 [12] [13] しかし、参照グリフでは、2つの 16分音符 の連桁[U+266C, ♬] が示されています。 [12] IBM日本語ホストコード の仕様では、SM910080 (つまり、 全角 属性が設定されたSM910000 ) は明示的にU+266Cにマッピングされており、それに応じて2つの16分音符が表示されます。 [17]
^ 124 (7C hex ) この位置の実際のグリフは、 オリジナルの IBM PC および 互換機 フォントでは、オリジナルの MDAでレンダリングされた 破線 [U+00A6, ¦]です。このレンダリングは後に CGA 、 EGA 、 VGA に採用されました(記事冒頭の画像を参照)。しかし、ほとんどすべてのソフトウェアはこのコードをASCII文字[U+007C, |]であると想定しています。例えば、プログラミング言語ではこれを「または」として使用します。1990年代初頭に、この位置には ASCII の縦棒があり、破線記号はASCIIの一部ではないことが [ 誰によって? ] 明確にされました。
^ 127(16 進数 の7F )は「家」ですが、ギリシャ語の首都 デルタ [U+0394, Δ]としても使用されることがあります。
^ 179 (B3 hex ) IBMのフォントでは整数拡張 [U+23AE, ⎮] としても機能する可能性があります。
^ さまざまな IBM 製品における E0 から EF までの範囲の文字の比較。 225(16 進数 のE1 )はIBMではラテン文字の「 シャープs 小文字」 [13] [U+00DF, ß]として識別されていますが、 OEMフォントではギリシャ文字の小文字 ベータ [U+03B2, β]として表示されることがあります 。このラテン文字がギリシャ文字の中に配置されていることから、多目的使用が意図されていると考えられます。
^ 227 (E3 hex ) は、IBM ではギリシャ語の「小文字の 円周 率」 [U+03C0, π] として識別されますが、OEM フォントではギリシャ語の大文字の円周率 [U+03A0, Π] または n 項積 記号 [U+220F, ∏] として表示されることがあります。
^ 228 (16 進数の E4 )は、IBMではギリシャ語の「 シグマ大文字」[U+03A3, Σ]として識別されていますが、 n進数の 加算 記号としても使用されます [U+2211, ∑]。
^ 230(16 進数 E6 )はIBMによってギリシャ語の「小文字 ミュー 」[U+03BC, μ]として識別されていますが、 マイクロ記号 [U+00B5, µ]としても使用されています。IBMのギリシャ語GCGIDテーブル [18]では、 このコードページの文字はギリシャ文字にマッピングされていますが、cp437_DOSLatinUSからUnicodeへのテーブル [11] では、マイクロ記号にマッピングされています。
^ 233(16 進数の E9 )はIBMによってギリシャ語の「 シータ 大文字」[U+0398, Θ]として識別されています。 [12] [13] しかし、これらの記号は数学と物理学のためのもので、小文字のシータの方がはるかに一般的に使用されています(例:極座標)。
^ 234(EA hex )はIBMによってギリシャ語の「 オメガ 大文字」[U+03A9, Ω]として識別されていますが、 オーム 記号[U+2126, Ω]としても使用されています。Unicodeではこれらの文字は同等とみなされており、U+03A9は両方の文脈で使用すべきであると推奨されています。 [19]
^ 235(EB hex )は、IBMによってギリシャ語の「 デルタ小文字」[U+03B4, δ]として識別されています。また、小文字の eth [U+00F0, ð]や 偏微分 記号[U+2202, ∂] にも非公式に使用されていました。
^ 237 (ED hex ) はIBMによってギリシャ語の「 ファイ 小文字(閉じた形)」[U+03D5, ϕ; または、斜体で書かれた数学記号セットではU+1D719, 𝜙]として識別されますが、Unicodeではcp437_DOSLatinUSテーブルでこれを開いた(または「ループ」する)形 [U+03C6, φ] にマッピングします。 [11] IBMのギリシャ語GCGIDテーブル [18] とUnicodeのギリシャ語コードチャート [20] を比較すると、例えばIBMがUnicodeにマッピングする際に開いた形と閉じた形を逆にした箇所がわかります。この文字は 空集合 記号 [U+2205, ∅]、 直径 記号 [U+2300, ⌀]、 ストローク付きラテン文字のO [U+00D8, Ø; およびU+00F8, ø]としても使用されます。
^ 238(EE 16進数 )はIBMによってギリシャ文字の「 小イプシロン 」[U+03B5, ε]として識別されていますが、OEMフォントでは 要素記号[U+2208, ∈]として表示されることがあります。これは ユーロ記号 [U+20AC, €] としてよく使用されていました。
^ 244 (F4 hex ) と 245 (F5 hex ) は 積分記号 (∫)の上部と下部であり 、ボックス描画ブロックの垂直線である文字 179 (B3 hex )で拡張できます 。244 は長い s 文字 [U+017F, ſ] にも使用できます。
^ 249(F9 hex )と 250(FA hex )はほとんど区別がつかない。最初のドットは 2 番目のドットよりもわずかに大きく、どちらも 中点 、 中点 、 乗算ドット として使用された[U+2219, ∙]
^ 251 (FB 16進数) は チェックマーク としても使われることがあった [U+2713, ✓]。
^ 255 (FF hex ) は空白を描画します。IBM PC 用に設計された ワードプロセッサでは、非改行スペース (NBSP) として使用した前例があります。
歴史
1995 年 10 月 2 日発行のフォーチュン誌に掲載されたビル・ゲイツとポール・アレン のインタビューで ビル・ゲイツが語ったところによると、コード ページ 437 のレパートリーは、 Wang ワードプロセッサ の文字セットから取得 されたものである 。
「…私たちはWang社の専用ワードプロセッサにも魅了されていました。汎用機でも同じように使えると信じていたからです。だからこそ、IBM PCのキーボードを設計する段階で、Wang社の面白い文字セットをマシンに採用したのです。スマイリーフェイスや四角形、三角形などです。いつかWang社のワードプロセッサのクローンを作りたいと考えていました。」
PCの ROM-BIOS開発者である David J. Bradley へのインタビューによると、 キャラクターはシアトルからアトランタへの飛行機の中で、ビデオカードの責任者であるAndy Saenz、PCの主任エンジニアであるLew Eggebrecht、そして彼自身による4時間にわたる会議で決定されたという。 [21]
グラフィック文字の選択には、いくつかの内部ロジックがあります。
表の行0と1、コード0から31(16 進数 で00から1F ) は、様々な ディンバット (補完文字および装飾文字)です。単独文字127(16 進数で 7F )もこのグループに属します。
表の行 2 ~ 7、コード 32 ~ 126 (16 進数の 20 ~ 16 進数 の 7E ) は、標準の ASCII 印刷可能文字です。
表の行 8 ~ 10、コード 128 ~ 175 (16 進数の80 ~ 16 進数 の AF ) は、国際テキスト文字の選択です。
表の11行目から13行目、コード176から223( 16進数 でB0からDF ) は、 ボックス描画 文字と ブロック 文字です。このブロックは、文字192から223( 16進数 でC0からDF ) がすべての右辺と右塗りつぶし領域を含むように配置されています。オリジナルの IBM PC MDA ディスプレイアダプタは、コードページ437の文字 グリフを 8 ピクセル幅の ビットマップ として保存していました が、視覚的な強調のため、画面上では9ピクセルごとに表示していました。この範囲の文字では、8番目のピクセル列が特殊なハードウェア回路によって複製され、 [22] 行の隙間や塗りつぶし領域が埋められていました。VGAアダプタでは、この動作をオン/オフにすることができます。 [23]
表の行 14 と 15、コード 224 から 254 ( 16 進数の E0 から 16 進数 の FE ) は数学記号専用で、最初の 12 文字は物理学でよく使用されるギリシャ文字から選択されています。
Microsoft Windows のフォントのほとんどには 、Microsoftがフォントデザイナーにサポートを推奨している WGL4 セットの一部であるため、Unicodeインデックスの特殊グラフィック文字が含まれています。(等幅ラスターフォントファミリの Terminalは 、少なくとも一部の解像度では、コードページ437のすべての文字を再現した初期のフォントでした。)これらの文字をこれらのコードポイントから直接描画するために、 Microsoft Windows フォントのMS Linedraw [24] はコードページ437のすべての文字を再現します。これにより、DOSテキストを現代のWindowsマシンでDOSで表示したのと同じように、制限付きで表示できる1つの方法が提供されます。 [25]
コードページ1055 (HPシンボルセット0Lとも呼ばれる )[26] は、ボックス描画、ハーフブロック、黒丸(黒丸は、このコードページでは中点を置き換える黒丸に置き換えられる)、および黒四角形を含み、それらを上半分に移動したサブセットであり、スペースも含まれています。 [27]
国際化
コードページ437には、主に128から175(16 進数で80から 16進数 でAF )の値を持つ一連の国際文字が含まれています。しかし、 英語 、 ドイツ語 、 スウェーデン語 など、 西ヨーロッパの主要言語の一部のみを完全にカバーしており [注 2] 、多くの西ヨーロッパの主要言語で重要ないくつかの文字(主に大文字)が欠けています。
スペイン語 :Á、Í、Ó、Ú
フランス語 : À、Â、È、Ê、Ë、Î、Ï、Ô、ā、œ、Ù、Û、Ÿ
ポルトガル語 : Á、À、Â、Ã、ã、Ê、Í、Ó、Ô、Õ、õ、Ú
カタロニア語 : À、È、Í、Ï、Ò、Ó、Ú
イタリア語 : À、È、Ì、Ò、Ù
アイスランド語 : Á、Ð、ð、Í、Ó、Ú、Ý、ý、Þ、þ
デンマーク語 / ノルウェー語 : Ø と ø。文字番号 237 (ED 16 進数 ) の小文字ファイ (閉じた形式) は、適切にレンダリングされない可能性があるものの、代替文字として使用できます (さらに、この文字は Unicode にマッピングされ、Unicode フォントでは、ストローク付きの O からさらに離れた、開いた形式のファイまたは閉じた垂直形式のファイとしてレンダリングされる傾向があります)。これを補うために、 デンマーク語 / ノルウェー語 と アイスランド語の コード ページ ( 865 と 861 ) では、セント記号 (¢) を ø に、円記号 (¥) を Ø に置き換えました。
基本的な数学記号を除き、ギリシャ語アルファベットの 記号の ほとんどは省略されました。(これらの記号はギリシャ語のコード ページ 737 と 869 に含まれていました。コード ページ 437 に既に含まれていたギリシャ語記号の一部は、ギリシャ語での実際の使用に合わせて、数学的または科学的形式からグリフが変更されました。)
セント (¢)、 スターリング・ポンド (£)、 円 / 元 (¥)に加え 、かつてのヨーロッパ通貨である フローリン (ƒ、オランダ)と ペセタ (₧、スペイン)も採用されている。ペセタの存在は異例である。スペインのペセタは国際的に通用する通貨ではなく、独自の通貨記号も存在しなかったため、ペセタは単に「Pt」、「Pta」、「Pts」、または「Ptas」と略されていた。しかし、 IBM電気タイプライター のスペイン版には、ペセタ専用のポジションが1つ設けられていた。
後の DOS 文字セット、たとえば コード ページ 850 (DOS Latin-1)、コード ページ 852 (DOS 中央ヨーロッパ言語)、 コード ページ 737 (DOS ギリシャ語) などは、単一および二重のボックス描画文字を保持し、混合文字 ( 例: 水平二重/垂直単一) を破棄することで、コード ページ 437 との互換性を保ちながら国際使用のギャップを埋めました。コード ページ 437 のすべての文字は、 Unicode および Microsoft の WGL4 文字セットで同様のグリフを持っているため、 Microsoft Windowsのほとんどのフォントで使用でき、 Linux カーネルのデフォルト VGA フォント や X11の ISO 10646 フォントでも使用できます 。
参照
注記
^ 東ヨーロッパ、アラブ諸国、アジア諸国で利用可能なシステムでは、異なるセットが使用されていることがよくあります。しかし、これらのセットは437に可能な限り一致するように設計されています。「OEM」(Original Equipment Manufacturer)という表記は、メーカーが様々な市場に合わせてセットを変更できることを示しています。
^また、 バスク語 、 マレー語 、1999年以前の トルクメン 語ラテンアルファベット など、それほど主要でない西ヨーロッパ言語やその他の言語も完全にカバーしています が、これは意図されたものではなかったようです。
参考文献
^ 文字セット、 インターネット割り当て番号機関 (IANA)、2018年12月12日
^ “CCSID 437 情報文書”. 2016年3月27日時点のオリジナルよりアーカイブ。
^ “OEM 437”. Go Global Developer Center . Microsoft . 2016年6月9日時点のオリジナルよりアーカイブ。 2011年 9月22日 閲覧 。
^ ab “OEMフォント”. 百科事典 . PCmag.com. 2020年11月27日時点のオリジナルよりアーカイブ 。 2021年 10月19日 閲覧。
^ Kano, Nadine. 「付録H コードページ」. グローバリゼーションとローカリゼーション: コードページ 437 MS-DOS Latin US. Microsoft . 2016年3月17日時点のオリジナルよりアーカイブ。 2025年 2月6日 閲覧 。
^ abc 「このサイトで使用されている用語集」 Microsoft . (「Alt+Numpad」という用語の説明をご覧ください)。2012年9月8日時点のオリジナルよりアーカイブ。 2018年 8月17日 閲覧 。
^ マレー・サージェント. 「Unicode文字の入力 - マレー・サージェント:オフィスでの数学」 . 2018年 8月17日 閲覧 。
^ 「ALT+NUMPAD ASCIIキーの組み合わせ:わかりにくいパスワードを作成する際のαとΩ」 。 2018年 8月17日 閲覧 。
^ 「ASCIIまたはUnicodeのラテンベースの記号と文字を挿入する - Officeサポート」。Microsoft 。 2018年 8月17日 閲覧 。
^ 「SBCSコードページ情報文書 CPGID 00437」。 コード化文字セットと関連リソース 。IBM 。 1986 年[1984年5月1日]。2016年6月9日時点のオリジナルよりアーカイブ。 2011年 11月14日 閲覧 。
^ abc Steele, Shawn (1996年4月24日). 「cp437_DOSLatinUS to Unicode table」 (TXT) . 2.00. Unicode Consortium . 2016年6月9日時点のオリジナルよりアーカイブ。 2011年 11月14日 閲覧 。
^ abcd コードページ CPGID 00437 (PDF) 、IBM
^ abcd "Code Page (CPGID): 00437". コード化文字セットと関連リソース . IBM . 1984. 2023年 8月3日 閲覧 。
^ International Components for Unicode (ICU), ibm-437_P100-1995.ucm, 2002年12月3日
^ 「付録D:文字セット(§ IBM特殊文字セット)」 (PDF) . ユーザーズ・マニュアル:LC-8021ドットマトリックス・プリンター . Star Micronics . 1997年. p. 55. 2004年9月8日時点のオリジナルよりアーカイブ (PDF) . 2024年 4月25日 閲覧 。
^ Whistler, Ken (1999年7月27日). 「IBM PCのメモリマップドビデオグラフィックスからUnicodeへ」. Unicodeコンソーシアム .
^ 「IBM 日本語グラフィック文字セット、漢字:DBCS–ホストおよびDBCS-PC」 (PDF) IBM 2002 年 CH 3-3220-024 2002年11月。
^ ab 「グラフィック文字識別子:アルファベット、ギリシャ語」。コード化 文字 セットと関連リソース 。IBM 。 2017年 2月25日 閲覧 。
^ Unicodeコンソーシアム (2003年5月21日)「第7章:ヨーロッパのアルファベット文字」Unicode標準4.0 (PDF) Addison -Wesley (2003年8月発行)176ページ ISBN 0-321-18578-1 . 2016年 6月9日 閲覧 。
^ 「ギリシャ語とコプト語:範囲:0370~03FF」 (PDF) . Unicode標準バージョン9.0 . Unicodeコンソーシアム. 2017年 2月25日 閲覧 。
^ Edwards, Benj (2015年11月6日) [2011]. 「ASCII スマイリー文字の起源:David Bradley博士とのメール交換」。2016年11月28日時点のオリジナルよりアーカイブ 。 2016年 11月27日 閲覧。IBM PC 文字セットの最初の32文字を見ると 、スマイリー、音符、トランプのマークなど、風変わりな文字がたくさん含まれていることに気づくでしょう。これらは文字ベースのゲーム用に用意されていました [...] 8ビット文字を使用していたため、128個の新しいスペースを埋める必要がありました。そこに、 データマスターの 経験に基づき、外国語文字を3列配置するという、本格的な文字を配置しました。ブロック体のグラフィック文字を3列配置すると [...] モノクロディスプレイアダプターをお使いの多くのお客様には、グラフィックが全く表示されませんでした [...] 数学記号、ギリシャ文字(数学用)、その他が2列配置されました [...] 最初の32文字(x00~x1F)についてはどうでしょうか? [...] これらの文字はテレタイプ送信に由来するものです。しかし、文字ベースの画面で表示することは可能でした。そこで、「あまり重要ではない」文字セットを追加しました。これらは表示専用であり、送信や保存には使用されませんでした。最も可能性の高い用途は、文字ベースのゲームです。[...] IBM PCの多くのものと同様に、1年間の開発スケジュールでは、検討や修正のための時間はほとんどありませんでした。[...] 文字セットは3人で4時間にわたる会議で開発され、私もシアトルからアトランタへの飛行機に同乗していました。会議の後、いくつかの小さな修正がありましたが、他にも設計、修正、決定すべきことがたくさんあったので、それだけでした。[...] その飛行機旅行には、ビデオカード担当のアンディ・サエンツと、PCのチーフエンジニアであるルー・エッゲブレヒトが同乗していました。
^ ウィルトン、リチャード(1987年12月)。 『PCおよびPS/2ビデオシステムプログラマガイド:EGA、VGA、HGC、MCGAによるビデオパフォーマンスの最大化』 ( 第1版)。 マイクロソフトプレス 。ISBN 1-55615-103-9 。
^ Joshua D. Neal、属性コントローラ レジスタ: 属性モード制御レジスタ、ハードウェア レベル VGA および SVGA ビデオ プログラミング情報ページ: ビット 2 はライン グラフィックス イネーブルです。
^ Mike Jacobs. 「MS LineDraw フォント ファミリ - タイポグラフィ | Microsoft Docs」. Microsoft タイポグラフィ 2.00. Microsoft Corporation . 2018年 8月17日 閲覧 。
^ スタッフ (2013年10月26日). 「WD97: MS LineDraw フォントが Word で使用できない」. Microsoft . 2.0. Microsoft . KB179422, Q179422. 2016年3月24日時点のオリジナルよりアーカイブ。 2012年 7月1日 閲覧 。
^ 「HP シンボル セット」。
^ 「コードページ1055」 (PDF) 。2013年1月21日時点のオリジナル (PDF) からのアーカイブ。
外部リンク
IBM PC のメモリマップビデオグラフィックスを Unicode 公式サイトで Unicode に変換