機種依存文字
機種依存文字(きしゅいそんもじ、きしゅいぞんもじ)または環境依存文字(かんきょう - )とは、電子的に扱う文字データのうち、処理系(ソフトウェアおよびハードウェア)によって違う文字に表示されたり、全く表示・印刷できなかったりするものの慣用的な総称である。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)の役割となっており、使用するフォントセットによって拡張文字の表示は変化するため、「機種依存文字」の呼称は正確性を失うものとなった。また、機種依存文字の代表格だった丸囲い数字、ローマ数字などはUnicodeに収録され規格内のコードとなった。
しかし、歴史的な経緯から、表示に関してフォントセットに依存する文字の総称として使用されることがある。ただし、同じ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等、一部の機種に限られてしまうという実情がある。
[編集] 機種依存などの理由による文字の誤表示の各ケース
文字が正しく表示できないことについては、「どのように(How)表示出来なかったのか」という観点と、「なぜ(Why)表示出来なかったのか」という観点の二種類から語ることが出来る。
- 「How」の2種類
- 「Why」の3種類
- 表示しようとしている文字がフォントセットの中に用意されていない。
- データ自体と表示設定とで文字符号化方式(エンコーディング)が違う。
- システム固有の登録文字を他システムで表示しようとしている。
「〓(ゲタ)」「・(中黒)」「□(四角、豆腐)」等の文字に置換されて表示された場合というのは、大抵の場合、エンコーディングは一致しているものの、フォントセットを表示側のシステムが用意していない時である。
別の文字として表示(文字化け)された場合というのは、エンコーディングが違うか、システム固有の登録文字を他システムで表示しようとしている時である。
この中で、「フォントセットを表示側のシステムが用意していない」場合と「特定のシステムに固有の登録文字を他システムで表示しようとしている」場合が「機種依存」であるとされる。
詳細は「文字化け」を参照
[編集] 機種依存文字問題の現在
OSとしてMicrosoft Windowsがシェアとして非常に多い状況であるため、他のOSを使用したことがなく、別のOSでテストする環境が一切ない人も少なくない。そのため、コンピュータの初心者のみならず上級者でも、いわゆるコンピュータ会社や工学部のある大学、インターネットサービスプロバイダのウェブページ、またそこから送信される電子メールの文章等に、公然とNEC特殊文字やIBM拡張文字が含まれていることも往々にして存在する。
このような現象が起こる理由として、Microsoft Windowsの電子メールクライアントが扱う文字符号化方式は純然たるISO-2022-JPではなく、それを拡張したCP50220であることが多い事が挙げられる。同様にそれを閲覧する側も、CP50220をサポートした電子メールクライアントを利用している人が多いため、それを意識する必要が無い場合も多く、しばしば放置されている。
[編集] 機種依存文字の将来
OSの内部コードでUnicodeが採用されて以降、機種依存文字は解消されつつある。しかし、Unicodeに対応していないソフトウェア、ウェブサイトは今でも多く、標準化にはしばらく時間がかかると推測される。
Unicodeでは順次文字を追加しており、追加された時期が新しい場合、フォントが対応しておらず表示出来ないことが多い(各文字の追加された時期についてはUnicode一覧表で確認できる)。また、基本多言語面にない文字や合成が必要な文字はOSやアプリケーションがそれらに対応している必要があり、対応していない場合はそれらの文字を含むフォントがあっても表示できない。
[編集] 使用するフォントに依存する場合
使用するフォントの相違によって、テキストデータ中の特定の文字が意図しない字形として表示されたり、全く表示・印刷できなくなる場合もある。
- かつてオペレーティングシステムごとに標準規格の未定義コードポイントなどに独自の文字を定義していたが、オープン化によって共通の文字集合を利用するようになると既存のテキストの一部の文字が全く表示・印刷できない事態が発生する。たとえばUnicodeに対応した結果、標準規格になかった文字がUnicodeに収録されず、表示・印刷ともできなくなる。
- 標準規格の私用領域 (いわゆる外字の領域) を用いて特定の処理系やアプリケーションのための文字や字形を表現したため、異なるシステムでは異なる文字として表示される。たとえば、マイクロソフトの韓国語版ウィンドウズではUHCからUnicodeへのマッピングに際して古ハングルなどの字形を私用領域に割り当てていたが、私用領域を別の用途に使っているシステムでは正しく表示できない。
- 文字コード規格の改訂によって、例示字形があらためられたもの。たとえば、JIS X 0208の第2次規格 (1983年) では複数の異体字関係にある文字同士のコードポイントが入れ替えられた。またJIS X 0213の第2次規格 (2004年) では一部の文字の例示字形が印刷標準字体にあらためられた。いずれも、テキストデータとフォントの双方で前提とする規格を一致させなければ意図した表示にならない。
- フォント製造者の実装によって異なる字形が表示されるもの。例として円記号問題がある。
[編集] 脚注
- ^ “5. Apple にまつわる歴史”. 機種依存文字の歴史. 2009年1月3日閲覧。
[編集] 関連項目
- Suisui/機種依存文字テスト - 各環境での表示状況
- Microsoftコードページ932 - NEC特殊文字とIBM拡張文字に関する詳しい説明
- Help:特殊文字
- 文字化け