機種依存文字
テンプレート:複数の問題 機種依存文字(きしゅいそんもじ、きしゅいぞんもじ)または環境依存文字(かんきょういぞんもじ)とは、電子的に扱う文字データのうち、処理系(ソフトウェアおよびハードウェア)によって違う文字に表示されたり、全く表示・印刷できなかったりするものの慣用的な総称である。JEFやJIPS等のようなメインフレーム/汎用機用の符号化文字集合については、文字コード体系そのものが機種依存するという前提があるため、本項では扱わない。
不特定多数との情報通信で機種依存文字を使用すると文字化けの原因にもなる。
目次
機種依存文字に関する歴史
初期
日本語の文字コード体系は、JIS C 6226-1978によって第1水準漢字、第2水準漢字、非漢字として規格化されたが、これらは実際の文書作成の際に必要となる記号や組文字を十分に組み込んだものではなかった。そして、コード空間の空き領域(09区-15区)は「一時的・局所的に文字を割り当てて使用しても構わない」自由領域とされた(この規定は1997年のJIS X 0208-1997から削除)。
そのため、コンピュータメーカー各社はそれぞれ独自に拡張した記号類をこの領域に収録し、外字領域として扱われることになった。また、ユーザーもこの領域に独自に文字を登録(外字登録)できることが一般的になった。コンピュータの機種によって違う文字が表示されるコード領域となった。
問題の表面化
1986年頃から主要なパソコン通信サービスが開始されるようになった。多くのパソコンがホスト局に接続され、電子掲示板や電子メールなどで文章のやり取りが行われるようになると、特に問題となったのがPC-9800シリーズとMacintosh・DOS/V間での表示の相違だった。このことから、これらのコードをパソコン通信等の世界では「機種依存文字」と呼ぶようになった。
また、当時PC-9800シリーズのシェアが多かったために、PC-9800(あるいはエプソンのPC-9800互換機)シリーズでしか表示できない文字として「98文字」(キューハチ文字)と呼ぶようになった。
Macintosh が機種依存文字で不利な立場に立たされたのは、シェアの低さだけでなく、Microsoft Windowsが1992年という早い段階から Windows 標準システム外字に統一されたのに対して、Macintosh は二転三転を繰り返してきたことも指摘されている[1]。
現在
現在では、文字表示はオペレーティングシステム(以下OS)の役割となっており、使用するフォントセットによって拡張文字の表示は変化するため、「機種依存文字」の呼称は正確性を失うものとなった。また、機種依存文字の代表格だった丸囲い数字、ローマ数字などは テンプレート:ルビに収録され規格内のコードとなった。
しかし、歴史的な経緯から、表示に関してフォントセットに依存する文字の総称として使用されることがある。ただし、同じOS上で複数の異なるフォントセットを使えるため、機種という言葉の意味は失われている。
なお、機種依存文字の定義があいまいになった現在においても、典型的な機種依存文字であると言えるのが、携帯電話のインターネット接続サービス(NTTドコモのiモードなど)対応電話機で使用される「携帯電話の絵文字」である。これらの文字は Shift_JIS のユーザ拡張領域や Unicode の私的領域に登録されており、他の機種においては別の実装をされている可能性が著しく高いからである。
なお、上記の領域はCP932においてユーザ拡張領域と定められているに過ぎず、JIS X 0208:1997においては拡張そのものが禁止されている。
機種依存文字の定義
1980年代
1980年代においては、以下の理由により、ベンダ定義文字(各コンピュータメーカーが、公的規格には無い文字を独自に拡張して搭載した文字)が、機種依存文字であるという定義が成り立っていた。
- 日本語文字コードの公的規格はJIS X 0201とJIS X 0208だけだった。
- 各メーカーのパソコンごとに搭載されているフォントセットの文字集合がまちまちだった。
ただし、公的規格であっても、以下のような文字は、規格が普及・定着するまでは機種依存文字とされることがあった。
- JIS X 0208 第2水準
- 新JIS (JIS C 6226-1983) で追加もしくは字形が変更された文字
2000年代以降
以下の理由により2000年代以降では、機種依存文字について、「どんな機種でも表示できるとは言えない文字」、もしくは「異機種間のデータ交換の際に文字化けする確率が高い文字」という程度の定義しか出来ない。
- Microsoft WindowsにおいてShift_JISに独自拡張された文字は全て Unicode に登録されている。
- 現在、日本で使われる符号化文字集合の公的規格は以下のように何種類も存在する。またそれぞれの規格が改正された場合には有効とされる規格は最新版だけであるが、過去の版の規格に基づいたシステムも存在する。
- JIS X 0201.:51655
- JIS X 0208:1997
- JIS X 0212:1990
- JIS X 0213:2004
- JIS X 0221:2001(≒ ISO/IEC 10646-1:2000 ≒ Unicode3.0)
- 現在のほぼすべてのOSでは、フォントセットの切り替えによって、表示に使う文字集合を切り替えられる。
- 現在のほぼすべてのOSでは、さまざまな文字符号化方式(エンコーディング)に対応している。
- Microsoft WindowsのShift_JISの独自拡張だったNEC特殊文字は、現在ではJIS X 0213:2000において、同一面区点の位置に登録されている。また、iモードのShift_JISにおいてはNEC特殊文字は Microsoft Windows の Shift_JIS と同様のコードポイントで利用可能である。
- JIS X 0213:2004の一部の文字などは公的規格の文字にもかかわらず、使える機種が Windows Vista 以降搭載のPC等、一部の機種に限られてしまうという実情がある(この中には常用漢字の一部も含まれる)。
機種依存などの理由による文字の誤表示の各ケース
文字が正しく表示できないことについては、次の二つの観点で語ることが出来る。
- どのように表示されたか
- 「〓(ゲタ)」「・(中黒)」「□(四角、豆腐)」等の文字に置換されて表示された。
- 全く異なる別の文字として表示(文字化け)された。
- なぜ表示出来なかったのか
- 表示しようとしている文字がフォントセットの中に用意されていない。
- データ自体と表示設定とで文字符号化方式(エンコーディング)が違う。
- システム固有の登録文字を他システムで表示しようとしている。
「〓(ゲタ)」「・(中黒)」「□(四角、豆腐)」等の文字に置換されて表示された場合というのは、大抵の場合、符号化方式は一致しているものの、フォント集合を表示側のシステムが用意していない時である。
別の文字として表示(文字化け)された場合というのは、符号化方式が違うか、システム固有の登録文字を他システムで表示しようとしている時である。
この中で、フォント集合を表示側のシステムが用意していない場合と、特定のシステムに固有の登録文字を他システムで表示しようとしている場合が「機種依存」であるとされる。 テンプレート:Main
機種依存文字の将来
OSの内部コードで Unicode が採用されて以降、機種依存文字は解消されつつある。しかし、Unicode に対応していないソフトウェア、ウェブサイトは今でも多く、標準化にはしばらく時間がかかると推測される。
Unicode では漸進的に文字を追加しており、追加された時期が新しい場合、フォントが対応しておらず表示出来ないことが多い(各文字の追加された時期についてはUnicode一覧表で確認できる)。また、基本多言語面にない文字や合成が必要な文字はOSやアプリケーションがそれらに対応している必要があり、対応していない場合はそれらの文字を含むフォントがあっても表示できない。
使用するフォントに依存する場合
使用するフォントの相違によって、テキストデータ中の特定の文字が意図しない字形として表示されたり、全く表示・印刷できなくなる場合もある。
- かつてオペレーティングシステムごとに標準規格の未定義コードポイントなどに独自の文字を定義していたが、オープン化によって共通の文字集合を利用するようになると既存のテキストの一部の文字が全く表示・印刷できない事態が発生する。たとえば Unicode に対応した結果、標準規格になかった文字が Unicode に収録されず、表示・印刷ともできなくなる。
- 標準規格の私用領域(いわゆる外字の領域)を用いて特定の処理系やアプリケーションのための文字や字形を表現したため、異なるシステムでは異なる文字として表示される。たとえば、マイクロソフトの韓国語版WindowsではUHCから Unicode へのマッピングに際して古ハングルなどの字形を私用領域に割り当てていたが、私用領域を別の用途に使っているシステムでは正しく表示できない。
- 文字コード規格の改訂によって、例示字形があらためられたもの。たとえば、JIS X 0208の第2次規格(1983年)では複数の異体字関係にある文字同士のコードポイントが入れ替えられた。またJIS X 0213の第2次規格(2004年)では一部の文字の例示字形が印刷標準字体にあらためられた。いずれも、テキストデータとフォントの双方で前提とする規格を一致させなければ意図した表示にならない。
- フォント製造者の実装によって異なる字形が表示されるもの。例として円記号問題がある。
使用するソフトウェアに依存する場合
使用するソフトウェアによって、同じフォントを使用しても特定の文字が意図しない字形として表示される場合がある。主に文字合成を必要とするものに見られ、例えばアイヌ語のカタカナの1つ「[[小書きプ|テンプレート:JIS2004フォント]]」などが挙げられる。