機種依存文字について

概要
 
 (1)機種依存文字の例
 機種依存文字は、Eメールを出す際などに、しばしば問題となる。Windowsの環境から送ったメールを、Mac環境などで受け取ると、一部の文字は文字化けする。
 たとえば ○と1を合成した文字(まるいち)などがそうであり、アルファベットの iに似た形のローマ数字がそうだ。
 これらは機種依存文字として有名である。
 これら以外にも、機種依存文字はたくさんある。有名なものでは、次の形のものがある。
    (株)  No.  TEL  昭和
 ここでは、普通の文字を複数組み合わせて表示した。(だから、上の例は文字化けしていないはずだ。)一方、こうした字形とそっくりな字形を、1文字にした記号がある。それが機種依存文字である。

 (2)機種依存文字の定義
 では、機種依存文字とは何か?
 それは簡単である。シフトJIS文字のうち、JISでは定義されていない文字のことである。具体的には、後述する。

 (3)注意点
 前述の(1)と(2)を比較すると、重要なことがわかる。
 世間の一部では、しばしば、次のように理解されている。
 「Eメールでは機種依存文字を使ってはいけない。そして機種依存文字とは、特殊な記号である。だから、特殊な記号を使わなければ、大丈夫。つまり、数字・アルファベット・ひらがな・カタカナ・漢字だけを使えば、安心だ。また、普通の記号( ★ や ◎ や 数学記号など)も使ってよい。」
 これは間違いである。
 つまり、特殊な記号以外の文字も、使ってはならないものがある。
 第一に、数学記号である。√ や ∫ など数学記号は、理系の人々の書くEメールでしばしば使われる。「数学記号は使っても問題ない」と思っている人が多い。しかし、これらの数学記号のうちには、使ってよいものと、使ってはいけないものとが、混じっているのだ。つまり、機種依存文字と、通常のJISの文字が、混じっているのだ。
 第二に、漢字である。「漢字ならばすべて安全」というのは間違いである。漢字のうちには、使ってはならないものがある。一部の漢字は、機種依存文字としての漢字、つまり、第一水準・第二水準の外にある漢字である。
  ※ Unicodeの補助漢字もEメールでは使えない。しかしこれらの漢字は、そもそもメール
    ソフトでは表示されないので、とりたてて問題にする必要はなさそうだ。
       (細かく言えば、補助漢字をメールで使う方法は、なくもない。ISO-2022-JP-2
       等で使う方法は、すでに一部で利用されている。
        ただ、普通は、添付ファイルで利用するべきだろう。HTML や doc の形式でな
       ら、一般ユーザでも使える。
        なお、補助漢字について詳しくは、表紙ページにリンクした他のページを参照。)


 (4)他の注意点
 上の(3)以外でも、機種依存文字については、注意すべきことがある。すなわち:
  ・同じ字形の文字について、複数のコードが割り当てられていることがある。
  ・IMEのカナ漢字変換で出力すると、機種依存文字が出ることがある。
  ・IMEの付属機能の文字コード一覧には、問題(設計ミス)がある。
 このような問題があるので、意図しないにもかかわらず、機種依存文字を使ってしまうことがある。

 以上が、このホームページで示すことの概要である。
 以下では、細かく詳述する。



本論

 《1》 機種依存文字とは
 機種依存文字を正式に定義するには、文字コード表が必要である。
 表紙ページ(http://hp.vector.co.jp/authors/VA011700/moji/code00.htm)には、資料として「文字一覧」を掲げた。これをダウンロードして、見てほしい。

 (i)
 区点コードで、00840以降、 01600以前の領域がある。(たいてい空白の領域)
 そのうちの 01300以降、 01392以前の領域には、(空白ではなく)記号がある。これらは機種依存文字である。(13区の機種依存文字
 (ii)
 区点コードで、08500以降、11500以前の領域がある。(たいてい空白の領域)
 そのうちの、08901から09295までの領域と、11501から11912までの領域には、(空白ではなく)記号がある。つまり、89区から92区までの機種依存文字と、115区から119区までの機種依存文字である。

 《2》 機種依存文字の領域
 上に三種類の機種依存文字を述べた。
 これらには、次のような名称が付けられている。まとめると:
  [A] NEC特殊文字  ……………… 13区の機種依存文字
  [B] NEC選定IBM拡張文字 …… 89区から92区までの機種依存文字
  [C] IBM拡張文字 ………………… 115区から119区までの機種依存文字

 ここで注意するべきことがある。
  [A] と [B](およびその前後の領域)は、JIS( ISO-2022-JP )とも対応する領域である。
  [C](およびその前後の領域)は、JISとは対応しない領域である。つまり、シフトJISのみで用いられる領域である。
 以上の点に留意すべきである。

  [A] と[B]については、先の「ほら貝」のページ(code2.htm)にも記述がある。以下、引用してみる。(一部改変)
“ 非漢字と漢字の境界にあたる09区から15区の空白域、および、漢字の終わる84区以降(85区から94区)は、自由領域とされてきた。(1997年3月から、この名称はなくなる)。
 JIS X 0208-1983の解説によると、「この領域は、情報交換当事者の協定によって、一時的・局所的に文字を割り当てて利用しても構わない」となっている。これが、正式のコードポイントをもたない規格外の文字、いわゆる外字を使用する根拠となっている。”

 さて、注意すべきことがある。Eメールとの関係である。   New !
 Eメールは一般に、JIS( ISO-2022-JP )で送信される。しかるに95区以降はJISの領域からはずれている。というわけで、[C] ( 115〜119区 )の機種依存文字は、Eメールでは送信できない。単純に文字化けするのではなくて、そもそも送信がまったくできない。(その部分が送信データから欠落する。さらに、その前後の文字が奇妙に文字化けする。) 
 一方、 [A] [B] の機種依存文字は、送受信可能である。(ただし相手環境によっては文字化けする。) 
 なお、Windows のユーザ外字は、115〜119区の機種依存文字と同様である。

 《3》 機種依存文字の根拠
 上の[A][B][C]の機種依存文字は、どのようにして定められたか? 
 私ははっきりとした資料は持ち合わせていないのだが、その名称から、次のようにして定められたと推定される。
 ・最初にJIS X 208-1978があった。(1978)
 ・次に、シフトJISコードが合意された。(1983)
 ・このころ、すでにNECやIBMのパソコンが存在していた。そこでは文字不足が
  痛感されていた。そこで、不足している文字を、それぞれの自社パソコン専用の
  文字セットとして配置した。具体的には、NECは13区に数学記号とローマ数字
  置き、IBMは115〜119区にローマ数字と漢字を置いた。
 ・後年、NECは、IBMの文字セットを採用した。ただし、その際、あえて、元の
  IBMの領域(115〜119区)とは別の領域(89〜92区)に配置した。
 ・さらに後年、Windowsは、NECとIBMの文字セットを、すべて採用した。
  ([A] [B] [C]すべて)
  そのため、115〜119区の文字セットと、89〜92区の文字セットが、同じ字形である
  にもかかわらず、ダブって採用されることとなった。( [B] と [C] )

 以上のように考えると、つじつまが合う。

 《4》 同じ字形での混乱
 すでに示したように、機種依存文字にはダブりがある。つまり、89〜92区の領域と、115〜119区の領域で、同じ字形なのに別のコードが割り当てられていることがある。このことは当然、混乱を生じる。
 第一に、その文字が機種依存文字であるか否か、わからないことがある。一つの字形に対して、それが機種依存文字のこともあり、機種依存文字でないこともある。
 第二に、その文字が機種依存文字であるとわかっていても、どの領域の機種依存文字かわからないことがある。

 このダブりの問題については、以下 (ア)(イ)(ウ)で、詳しく述べることにする。

(ア)漢字
 89〜92区と115〜119区に、機種依存文字としての漢字がある。これらの漢字はすべて同じ字形らしい。つまり、いずれの漢字についても、同じ字形で二つの文字コードが存在する。
 さらに、これらの機種依存文字と、第一水準漢字・第二水準漢字との間でも、ダブりがあることもある。たとえば、区点11650の文字に対して、同じ字形の文字が区点 02523にある。(「昂」という文字)

(イ)ローマ数字
 ローマ数字の小文字(i,iiのように見える)は、92区と、 115区にある。
 ローマ数字の大文字(I,IIのように見える)は、13区と、 115区にある。
 つまり、小文字と大文字は、一方では115区にまとまって置かれているが、他方では13区と92区に分かれて置かれている。
 これを見ると、一つの疑問が解決する。
 89〜92区と、115〜119区とでは、文字群はまったく同じように見えるが、そうではなくて、前者には大文字のローマ数字がない。なぜなのか、という疑問である。
 その答えはもはや明らかだろう。大文字のローマ数字は、すでにNEC拡張の13区にある。だからNECは、115〜119区の文字を89〜92区に取り込むに当たって、大文字のローマ数字を省いたのだ。(すでにあるものは不要なので。)
 
(ウ)数学記号
 数学記号については、事情はより複雑になる。
 先の(ア)(イ)の文字(漢字とローマ数字について)は、同じ字形の二つの文字は、ともに機種依存文字だった。(一部は例外)
 しかるに、数学記号の場合は、そうではない。数学記号を見てみると、一部は機種依存文字であり、一部はJISの領域内の文字である。両者が混じっているのだ。
 具体的に言おう。2区と13区の両方に、数学記号がある。前者(2区)はJISの領域内にあり、後者(13区)はJISの領域外にある。(つまり機種依存文字である)
 ユーザが数学記号を用いる際、その文字が、2区の文字か、13区の文字かは、文字コード表でいちいちコードを確認して使いさえすれば、問題はない。しかし、いちいちコードを確認するのは面倒である。そこで、IMEのカナ漢字変換機能を使うことがある。つまり、適当な読みとカナ漢字変換で、数学記号を出すことがある。すると、この場合、IMEが機種依存文字を勝手に出力することがある。これは問題である。
 このことは太田純氏が各種IMEについて、可能性を示している。
   ( http://www3.justnet.ne.jp/~s_kishimoto/fj/misc/hankana.htm )
 
 たとえば、カナ漢字変換により、次のような字形の機種依存文字が出力される可能性がある。 
  (株)  …… かぶ
   cm   …… せんちめーとる
     [ ただし、上の2例では、JISの記号を組み合わせて字形を表示した。]
 
 これらの記号は、特別な記号なので、機種依存文字であることが容易に推測がつく。その点では問題は少ない。問題なのは、数学記号である。数学記号にはJISの文字が多い。そこで、世間では、数学記号は機種依存文字ではない、と信じられていることもある。実際、理系の人々の間では、√ や ∫ や ≒ などの記号が、Eメールでしばしば使われる。しかしここには問題があるのだ。間違って 13区の文字が使われる可能性があるのだ。
 数学記号を出力するカナ漢字変換については、成田良一氏がMS-IME95において、実際の確認を行なった。(MS-IME98ではなくMS-IME95の方。)
 成田氏の調査によれば、次の通り。

 MS-IME95の場合、IMEでカナ漢字変換すると、2区の文字ではなく、同じ字形の13区の文字が出ることがある。
 数学記号と、対応する読みは、順に、次の通り。
 
  [記号]   ∪ , ∩ , ∠ ,  ⊥  , ≡  , ≒ , √ ,  ∵   ,  ∫
  [読み]   おあ,あんど,かく,すいちょく,ごうどう,きんじ,るーと,なぜならば,いんてぐらる
 
 これらはいずれも13区の文字である。
 なお、カナ漢字変換の際に、変換候補がいくつか表示されることも考えられる。しかし実際には、変換候補は一つだけである。つまり、2区の変換候補は現れず、13区の変換候補だけが現れる。

 一方、「きごう」という読みでカナ漢字変換した場合には、変換候補は一つだけでなく、いくつも現れる。そのうち、数学記号は、次のようなものがある。
 
          ∪ ∩ ∠ ⊥ ≡ ≡ ≒ √ ∵ ∫
 
 ここで示したように、 には二つの候補がある。そのうち一つは2区の文字であり、もう一つは13区の文字である。
 後者( ≡ のうちの一つ)以外のものは、すべて2区の文字である。(つまり、「きごう」という読みで出す場合は、危険は比較的少ない。)

 成田氏はさらに次のことも示している。
 2区と13区で、数学記号の文字群は、まったく同じである(同じ字形なら漏れなくダブっている)のではなくて、一部は欠落している。列挙すると、次のようになる。(欠落部は _ で示す。)
 
  13区の文字     ≒ ≡ ∫ 刀@煤@√ ⊥ ∠  凵@∵ ∩ ∪
   2区の文字     ≒ ≡ ∫ _ _ √ ⊥ ∠ _ _ ∵ ∩ ∪
 
     ※ 同じ字形でそろえる。文字コードは異なる。
       上の 13区 の行は、機種依存文字を用いているので、環境によっては見えない。

 
 以上が成田氏の調査である。

 《5》  IMEのツールの問題
 IMEのカナ漢字変換機能を使うと、問題を生じる可能性がある。このことを先に示した。
 一方、カナ漢字変換機能以外でも、文字を出力する方法はある。それはIMEに付属する、記号出力用の専用ツールを使う方法である。
 ATOKには「クリックパレット」「文字パレット」というものがある。この二つのツールについて、順に述べることとしよう。(具体的な使い方は、ヘルプ参照。)

 (i)クリックパレット
 「クリックパレット」(ATOK11のマニュアルではなぜか「クイックパレット」)というツールがある。マウスでクリックすると記号を出せる、というツールである。
 調べたところ、これが出力する記号は、特に問題はなかった。具体的にいえば、次の通り。
 「記号2」のところにある文字は、すべて2区の文字である。たとえば次の文字だ。
      ≒ ∵ ≡ ∠ ⊥ √ ∫ ∪ ∩
 「記号4」のところにある文字は、すべて13区の文字である。たとえば次の文字だ。
      刀@煤@凵@
 以上のように、「記号2」「記号4」というふうに、別々のところ(タブシート)にある。両者は混じってはいない。だから、「記号2」のところにある文字だけ使えば、機種依存文字は使わずに済む。というわけで、特に問題はない。(ただし、「記号4」は機種依存文字だ、と覚えておく必要がある。)

 (ii)文字パレット
 「文字パレット」の方には、問題がある。これを起動して、「通常記号」−「学術記号」により出力される文字を見ると、上の例で示した2グループの文字がともに収められている。つまり、2区の文字と13区の文字がともに置かれている。両者はごちゃまぜで、区別がつかない。というわけで、かなり問題のある状況である。(たとえば、普通の記号を使ったつもりでも機種依存文字を使ってしまった、という事件が発生しやすい。)
 一方、数学記号ではなく、ローマ数字ではどうだろうか? 
 文字パレットで上記の方法により出力される文字を見ると、大文字は13区の文字であり、小文字は115区の文字である。
 これはまた、ずいぶんとチャンポンなことをしているものだ。13区と92区はJISの領域内にあり、NEC系である。115区はJISの領域外にあり、IBM系である。両者は区別される。なのに文字パレットは、双方から半々で取っているのだ。NEC系にそろえて、「13区の大文字と92区の小文字を取る」ならばわかる。あるいは、IBM系にそろえて、「115区の大文字と小文字を取る」でもわかる。しかしそうはしていないのだ。
 ※ いずれにしても、ローマ数字はすべて機種依存文字である。

 (iii) ATOKの文字パレットとMS-IME98のIMEパッド
 ATOKの文字パレットとMS-IME98のIMEパッドでは、両者に共通する問題がある。
 89〜92区の文字を文書中に出力しようとすると、実際にはそうならなくて、115〜119区の文字が文書中に出力されてしまうのだ。(ローマ数字も含めて。)
 これはまた、おかしな話だ。いったい何のために、ツールとして文字コードを示しているのだろうか?

 《6》 ATOKとWord95の記号表
 IMEのカナ漢字変換機能を使っても、IMEに付属のツールを使っても、問題を生じる可能性がある。そういったことを先に示した。
 結局、文字コード表を使うのが最善である。しかしながら、この場合も、問題が生じる可能性がある。
 文字コード表といっても、いろいろあるが、正しい文字コード表を使う限りは問題ない。たとえば、このホームページの表紙ページからダウンロードされる「文字一覧」がそうである。ただしこれは、単なる文字とコードの羅列なので、初心者には使いにくい。
 そこで、初心者にも使えるようなものが用意されてある。ATOKとWord95に用意されている、文字コード表(のようなもの)がそうである。
  ※ 詳しくいうと:
    ATOKの文字パレットの文字一覧がある「和文コード表」などのタブシートがそうである。
    Word95では、メニューの「挿入」の項から使える「記号と文字」という機能がそうである。
 ところが、これには問題があるのだ。

 以下では、具体的に述べよう。
 機種依存文字はJIS第二水準漢字ではない。(JIS第二水準漢字は、48〜84区のみである。)
 しかし、にもかかわらず、ATOKとWord95では、そう表示されないのである。つまり、機種依存文字が「JIS第二水準漢字である」と表示されることがある。
 89〜92区の文字は、もちろん、機種依存文字である。しかし次のソフトでは、これらの文字は第二水準であると記される。
 ・ATOKの「文字パレット」
   ……右の方にコード番号の欄があり、その下に「漢字の種類」という欄がある。
     ここに「第二水準」と表示される。
 ・Word95のメニューで「挿入」→「記号と文字」
   ……ここで見ると、右の欄に「第二水準(10画)」と表示される。

 こうしたことは、本質的な問題ではなくて、一種のバグである。メーカが修正してくれれば、問題はない。とはいえ、このような問題があるので、ユーザは注意せねばならない。

 《7》 MS-IME97,98のIMEパッド
 ATOKやWord95の文字コード表(のようなもの)では、おかしな現象(一種のバグ)が現れる、と先に示した。一方、これとは別のおかしな現象(一種のバグ)が、MS-IME98のIMEパッドで現れる。
 具体的には、次のような現象である。
 MS-IME98のIMEパッドを起動して、左上の「シフトJIS/Unicode」の切り替えのところで「シフトJIS」に設定する。次に、その右で「漢字3」を設定する。
 すると、小文字のローマ数字がずらりと表示される。これらの下に「TEL」というような字形の文字が現れる。さらにその下に、「イ」+「王」というような字形の文字がある。これについて文字コードを調べると、次のように表示される。(冒頭の 0x は省略して読むとよい)




 
 Unicode 0x4efc
 JIS  -
 シフトJIS 0x6afa
 区点  -



 

 ここでは、JISと区点は 「 - 」となっている。つまり、文字コードがない。
 JISや区点のコードがないことは、特に問題にすることはなさそうだ。この文字は機種依存文字であって、JISの対応領域外にあるからだ。

 さて、この文字(「イ」+「王」というような字形)の文字の2行下の左方に、「 宜 」に似た字形の文字が現れる。(「 宜 」の一番上の点を除いた字形:「 宜 」の異体字)
 この文字については、JISと区点のコードが「 - 」でなく、具体的に表示されている。ところがそれが、間違った文字コードとなっているのである。

 この間違いをわかりやすくするために、表の形で示すと:
 



 
  MS-IME98 ATOK 「壊」
 JIS 0x3275 9361 0x3275
 シフトJIS 0xfa81 FA81 0x89f3
 区点 01885 11565 01885



 

 (一番左を 0列目とすると)
 1列目が、MS-IME98のIMEパッドで調べた文字コードである。(「 宜 」の異体字 )
 2列目は、ATOKの文字パレットで調べたコードである。(「 宜 」の異体字 )
 3列目は、MS-IME98のIMEパッドで調べたコードである。(「 壊 」という字 )

 これらを比べてみると:
 ATOKの文字コード(2列目)は、正しい値となっている。
 MS-IME98の文字コード(1列目)は、シフトJISのコードは正しい値だが、JISと区点のコードが間違った値になっている。(115区の文字なのに、18区の文字のコードが示されている。)
 そこで、この間違った値について調べてみると、その文字コードに相当する18区の文字は、「壊」という文字であった。この文字のコードと、「 宜 」の異体字のコードを、あらためて比べてみると、JISと区点では同じになっている。
 同じ文字コードに二つの文字が割り当てられているのはおかしい。では、どちらが間違っているのか? 
 実は、3列目(「壊」の文字コード)は、間違っていない。間違っているのは、1列目(「 宜 」の異体字 )の方である。MS-IME98は、このような誤ったJISおよび区点のコードを出す。(これは一種のバグである。)
 ただし、ここで話が終わってしまっては、つまらない。そもそも、この奇妙なバグは、なぜ生じたのか? この誤った文字コードは、いったいどんな根拠に基づいているのか? 
 これについては、太田純氏の綿密な調査により、判明した。以下に太田氏の報告を示す。

 結論から言えば、この誤った文字コードは、JIS補助漢字(JIS X 0212)のコード番号であるようだ。
 補助漢字を使える環境(Windows98環境、または、一太郎9のJSフォントをインストールした環境)において、ATOKの文字パレットを起動する。そして、「和文コード」のタブシートで「補助漢字」にチェックを入れると、JISコード3275のところに、この文字が出てくる。

 以上が太田氏の調査報告である。
 これでバグの理由(設計ミスの理由)は、推察がついた。つまり、JIS補助漢字というのは、JIS漢字(第一、第二水準)に置き換えて使うコード表なので、コード番号が重複しているとしても、あながち不思議ではない。(太田氏の指摘)
 ただ、少し不思議に思えることもある。「MS-IME98はこの文字をどうしてIBM拡張文字でなくJIS補助漢字と認識したのか」ということである。
 だが、これについても、推測はつく。補助漢字はUnicodeの文字である。(JISやシフトJISの文字ではない)そして、Word97,98 は内部コードが Unicode になっている。また、機種依存文字は使うべきでない、ということがあちこちで言われている。だから、
   Unicode(補助漢字) > シフトJIS(機種依存文字)
 という優先順があっても不自然ではない。そこでこういう優先順が取られた。
 とはいえ、不自然ではないとしても、間違ったことである。シフトJISの範囲内の文字に補助漢字のコードを示すというのは、好ましくないことである。特に、補助漢字のコードを示すのなら、それが補助漢字のコードであることを明示するべきであろう。(これもまた、太田氏の指摘)

 さて、以上では、IMEパッドのバグを示した。その具体例は、115区にある「 宜 」の異体字などについて示した。
 では、このような問題が起こるのは、どの領域の文字についてだろうか? 115区以外にもあるのだろうか? 
 すぐに推測のつくとおり、次の領域の文字は、いずれも問題が起こる。
  ・89〜92区の機種依存文字
  ・115〜119区の機種依存文字
 では、これら両者の前後にある未定義領域(85〜120区)はどうだろうか? 調べてみると、次のように判明した。
  (i)  84〜94区と、119区以降の未定義領域の文字は、中黒「・」で表示される。
  (ii) それ以外の未定義領域の文字は、大きな中黒で表示される。
     (中黒よりも大きな黒点。未定義であることを示す記号)
  (iii) ただし (i)の領域内でも、文字が空欄となる位置では、(ii)の記号で表示される。

 これらについて、文字コードはもちろん次のようになる。
  (i) は、JIS=「0x2126」区点=「00106」と表示される。(中黒「・」の文字コード)
  (ii)と(iii)は、JIS=「 - 」区点=「 - 」と表示される。つまり、コードなし。

 《8》 MS-IME98のコード変換
 上のIMEパッドの問題に関連する話として、次の事実がわかった。(これは私の調査したことではなくて、すでに世間で知られていることである。)
 MS-IME98で、「コード変換」を実行すると、エラーが生じるのである。
 コード変換は、初期設定では「F5」キーに割り当てられている。たとえば「00106」と5桁で区点コードを入力して(あるいは4桁でJISコードを入力して)、「F5」キーを押すと、IMEパッドが起動して、そのコードの文字がIMEパッドで選択される。(そのあと文中に出力できる。)
 そうなるはずなのだが、しかしながら、機種依存文字(115〜119区)については、エラーが生じるのだそうだ。
 実際に調べてみたところでは、115〜119区の機種依存文字だけでなく、それ以降の未定義領域でも、同じエラーが生じる。
 ただし、114区以前では、エラーは生じない。
 これはこれで、バグである。しかし、先に示したバグとは、対象の領域が異なる。とすると、原因は別にあるかもしれない。

《9》 一太郎と機種依存文字
 一太郎でも、機種依存文字に関しては、ちょっと気にかかる点がある。次の (i)(ii)の点である。
 (i) Shuriken
 一太郎9には Shuriken というメールソフトが付属している。これはOutlook Expressなんていうソフトとは違って、なかなかまともなメールソフトである。(いささか不満な点もなくはないが)
 ところで、これのヘルプを見ると、「目次」の「付録」に「インターネットメールのマナー」という項目がある。
 ここを開いて、「第一・第二水準以外の漢字」という箇所をクリックすると、漢字の一覧が表示される。
 調べてみると、ここで表示されるのは、区点 11529〜11633の機種依存文字だけである。つまり、区点11634〜11912の文字が抜けている。 
  ※ なお、ソフト上で表示されるのは、字形のみである。 (画像で表示される。) 
     だから、「115〜119区」と言っても、「89〜92区」と言っても、同じことである。 
     ただ、上では文字を示す必要上、便宜的に、115〜119区のコードを用いた。

 このように機種依存文字のうち一部しか表示しないわけだが、これは、おかしなことである。
 とはいえ、まあ、「抜けている」と見なせば、それでいいのかもしれない。抜けているのは、文字なのか、「間」なのか、そいつは少々問題だが。……

 (ii) Just Meddler
 ATOKには、Just Meddlerというツールがある。これは「入力支援ツール」という位置づけである。
 このツールを使うと、機種依存文字が出力される場合、「機種依存文字がありますよ」と指摘してくれる。(カナ漢字変換のとき)
 たとえば、「 (株) 」という字形の機種依存文字を単語登録しておいて、「かぶ」という読みにより、カナ漢字変換で出力すると、「《機種依存文字》 」と警告してくれる。(これはこれで、なかなか便利な機能である。なお、 Meddlerとは、でしゃばり・おせっかい、の意。言い得て妙。)
 ただし、このせっかくの機能だが、働いてくれるのは、カナ漢字変換のときだけである。文字パレットから記号を出したときには、この警告は出ないのだ。というわけで、先に述べたような、文字パレットから記号を出す場合には、役立たずである。
 働いてほしいときには働かず、働かなくてもいいときには働く。……おせっかいのおせっかいたるゆえんであろう。
  ※ Just Meddler で機種依存文字を指摘させるには、そう設定する必要がある。
     初期状態では、指摘しない。 なお、設定方法は、ヘルプ参照。 
 
  ※ おかしな現象を発見した。   New !
    「機種依存文字の警告」を、ON に設定したとする。すると、機種依存文字だけでなく、 
    補助漢字についてまで、「機種依存文字ですよ」と警告するのだ。まったく珍妙である。  

 
《10》 一太郎とUnicode
 機種依存文字の話はこれで終わりにする。さて今度は、一太郎の話のついでに、一太郎のバグの話をしよう。
 一太郎はVer9から、補助漢字が使えるようになった。(これはUnicodeの補助漢字を用いる。)
 ところで、一太郎9でUnicodeの補助漢字を使うと、異常が発生するのだ。以下のように。
 
 (i) Unicode文字のフォントを変更しようとしても、変更できない。
 たとえば、ATOKの文字パレットで「補助漢字」のチェックを入れて、適当な補助漢字を、一太郎の文書中に出力する。次いで、その文字を適当なフォントに変更する。(たとえばMS明朝からMSゴシックに変更する。ただしWindows98環境で。)……こうしてみても、実際には、フォントは変更されないのだ。補助漢字以外ならば、フォントは変更されるが、補助漢字だけは、変更されない。 
   ( ※ この問題は、Word98では生じない。)
 
 (ii) その後に異常終了する。
 さらに、上の操作を「イメージ画面」で行なったあと、画面を「印刷イメージ画面」に変更してから、画面上にカーソルを置いて、少し動かした。すると次の表示が出た。
  「システムのリソースが少なく、危険な状態です。速やかにアプリを終了してください」云々。
 そして文書データがすべて消失した。
 
 (iii) スクロール時に異常終了する。
 ATOKの文字パレットで、「Unicode表」タグを表示させる。そしてフォントを「MSゴシック」にしたまま、画面を次々とスクロールしていく。すると突如、一般保護違反が起こり、ATOKが異常終了する。
 
 ……ともあれ、まとめていえば、一太郎9はUnicode環境にはうまく適応していないようだ。
 ユーザとしては、一太郎9でUnicodeを使うときは、こまめにバックアップを取っておいた方が良さそうだ。さもないと、作成中の文書がいつ消失するか、わかったものではない。

《11》 特殊な記号とUnicode
 トランプ記号や論理学記号などの特殊な記号がある。
 トランプ記号などは、ワープロ専用機ではしばしば使われるが、パソコンではあまり使われない。使いたくても、使い方が理解されていないようだ。
 通常は、これらの記号は、フォントの変更で対応する。
 つまり、本来は別の記号や文字(アルファベット・漢字など)を表示するべき文字コードを、特定のフォントを使うことで、トランプなどの記号に変更するわけだ。
 この方法では、フォントが異なれば、文字化けすることになる。あまりお勧めできる方法ではない。とはいえ、他に方法がないようなので、仕方ない。個人的に印刷する場合などには、この方法が使われる。
 この方法にも、原則として、二種類がある。2バイトの文字を使う方法と、1バイトの文字を使う方法である。
 2バイトの文字を使う方法は、特に問題はない。CD-ROM辞書などでは、特殊な漢字を表示するために、この方法をよく使う。そのソフト上で見る限りは、特定のフォントがいちいち指定されているわけだし、特に問題はない。
 2バイトの文字を使う方法は、1バイトの文字を使う場合(欧文)では、もちろん使えない。この場合は、1バイトの文字を使うことになる。
 ところが、1バイトの文字を使った場合には、以下のような問題が生じる。

 これらの特殊な記号を出すフォントとして、Symbolというフォントが用意されている。(Windows98に標準で備わっている) このフォントに関して、少し奇妙な現象が生じる。
 JISの2区に、⇒ ⇔ ∧ ∨ などの全角記号(2バイト)がある。これとそっくりの半角記号が Symbolフォント(1バイト)にもある。しかし、これらのSymbolフォントを、ATOKの文字パレットから出そうとすると、アプリによっては、おかしなことが起こる。
 特に、Wordでは、これらの記号のかわりに、妙な記号が出る。(文字化けする)。 
 具体的に言えば:
  ・Word95では、半角英字の U が出る。
  ・Word98では、U に飾りのついた欧文特殊文字が出る。
  ・一太郎では、特に問題はない。

 これについて詳しく調べてみると、次のことがわかる。
 (1) ATOKの文字パレットでは、Symbolというフォントは、通常のフォントではなく、Unicodeのフォントとなる。 
   ※ つまり、Symbolというフォントは、文字パレットのタブシートが「記号表」「欧文コード表」
     のところにはなく、「Unicode表」のところにある。また、「欧文コード表」のタブシートの
     ところには「Symbol」というチェック欄がある。これは「欧文コード表」の「補助漢字」という
     チェック欄と同様である。とすると、Symbolフォントというのは、補助漢字に相当するもの
     であるらしい。)
 
 (2) 一般に、半角カタカナについては、ワープロ上で文字を選択したあと、フォントを欧文フォントに変更しても、実際には変更されない。
   ※ このこと自体は、仕様であろう。文句はない。
   ※ このことは、一太郎でもそうだし、Wordでもそうである。たとえば半角カタカナの文字を
     「Symbol」や「Century」にしようとしても、そうはならない。しかるに、メモ帳(または他の
     エディタ)で、全体のフォントを「courier」などの英文フォントにすると、これらの半角カタ
     カナは欧文特殊文字に化ける。( Windows95版のワードパッドも、エディタと同様。ただし
     Windows98版のワードパッドは先の一太郎やWordと同様。)

 (3) 以上のことからわかるのは、半角カタカナ領域と、欧文特殊文字の領域は、重なるということである。
 (4) 一方、調べてみると、Symbolフォント(Unicode)における ⇒ ⇔ ∧ ∨ などの字形の記号(ただし全角ではなく半角)の領域もまた、この領域に重なる。
 (5) これらの論理記号を、ATOKの文字パレットやMS-IME98のIMEパッドから、Word上に出そうとすると、文字化けが生じる。つまり、それらの論理記号が出ず、別の文字が出てしまう。ただし、その別の文字とは、半角カタカナではなく、欧文文字である。その欧文文字は、Word95とWord98とでは、いくらか異なる。(先にも示した。)
 Word95上でこれらの論理記号を出そうとすると、欧文文字が出る。その欧文文字は、入力状態では「U」の飾り文字となるのだが、確定状態では「U」そのものとなる。
 Word98では、同様にして、入力状態では「U」の飾り文字となるのだが、確定状態でもまた「U」の飾り文字となる。

 ともあれ、Word95にしても、Word98にしても、いずれにせよ、ATOKの文字パレットやMS-IME98のIMEパッドからは、Symbolフォントの論理記号を出せない場合がある。つまり、「Unicode」のSymbolフォントを出そうとしても、結果として、和文コードや欧文コードが出てしまうことがある。
 こうしたことは、おそらく、「和文コード」「欧文コード」「Unicode」の切り替えが、うまく行かないからだろう。

 Symbolフォントの特殊文字は、以上に述べたように、IMEのツールからは正常に出せない場合がある。しかも、それだけではない。さらに奇妙な問題が生じる。
 (i) 上のように文字化けする文字は、一群の文字のうちのすべてではなくて、とびとびのものである。たとえば、トランプ記号のうち、スペード、クローバ、ダイヤについては文字化けするが、ハートについては文字化けしないで出せる。( Word98+ATOK )
 (ii) これらの一群の文字について、フォントを解除する(プログラムによって書式なしの文字だけ出力する)と、やはりとびとびのものだけが文字化けするが、これは(i)とは少し異なる。たとえば、トランプ記号のうち、クローバ、ダイヤについては文字化けするが、ハート、スペードについては文字化けしないで出せる。( Word98 )
 (iii) これらの一群の文字について、フォントの変更をしても、効果はない。つまり、他のフォント(たとえばUnicodeの補助漢字をもつMS明朝)に設定しても、設定は無効であり、Symbolフォントのままである。

 以上はまったく奇妙に思える。おそらく、何らかの理由があるのだろうが、判明していない。
 また、ATOKの文字パレットから出力した場合、Symbol フォントの特殊記号のはずが、ただの半角カタカナになってしまう場合もあったように記憶している。ただ、再現できていないので、記憶違いかもしれない。
 ともあれ、このあたりについては、わからないことが多い。


参考資料

 【 資料1 】 JISの正式名の表記   Up !
 JIS X 0208-1997 という表記は JIS X 0208:1997 という表記が正しい。(ISOの表記法が変更された。)
 ただし、1997 より前の 1983 などでは、JIS X 0208-1983 のように記す。
 なお、 208 ではなく 0208である。注意。

 【 資料2 】 文字コードの切り替え
 文字コードの切り替えは、パソコンが内部処理している。その詳細は、表紙ページにリンクを記した、安岡氏や伊藤氏のホームページを参照。
 異なる文字コードの文書を受け取って、読み込めない場合がある。たとえば ISO-2022-JP の文書は、Windowsの通常のエディタでは読みとれない。
 これを読み取るのに手っ取り早い方法は何か? それは、インターネットのブラウザ(MS-IEやネットスケープ)で、そのファイルを開くことである。こうすれば、文字コードを切り替えて表示することができる。あとは、その全文を選択してコピーして、エディタなどに貼りつけて、保存すれば、シフトJISの txtファイルができる。(単純に別名保存しただけではダメ。注意。)
 ブラウザでは自動的に文字コードを判別することができる。ただ、ブラウザは、ISO-2022-JP のコードで書かれたファイルを、シフトJISと誤認することもある。 [ブラウザの機能未熟のせいで]
 なお、このような文字化けを防ぐには、HTMLファイルのソースで、文字コードセット(charset)を指定しておけばよい。
 ※ この問題について、詳細な情報が下記にある。
     http://www.cup.com/negi/tips/mojibake.html

 【 資料3 】 78JISと83JIS(または90JIS)
 JIS X 0208 の78年版と83年版(または90年版)とでは、数学記号に差がある。78年版では、次の数学記号が2区には存在しない。

   ∈ ∋ ⊆ ⊇ ⊂ ⊃ ∧ ∨ ⇒ ⇔ ∀ ∃ ⌒ ∂ ∇ ≪ ≫ ∽ ∝ ∬

 確認するには、上の文字列を78年版のフォントで表示してみてほしい。次に、83年版(または90年版)で表示してみてほしい。
 ちなみに、78年版のフォントでは、上は表示されないが、90年版のフォントでは、上はすべて表示される。(NECの「FA明朝」フォントで、双方のコードセットで確認済み。)

 【 資料4 】 JIS第三,第四水準   New !
 JIS第三,第四水準については、表紙ページにリンクを記したJCSのページから情報を得られる。
 ただ、JCSの公開レビューで示されるのは、 pdf ファイルで、一般的には読み取りにくい。そこで、以下に、機種依存文字に関する情報を抜粋して記す。 
※ 元の情報は「シフト符号化に関する追加情報」という箇所から得られる。 
  このファイルを読むには、 Adobe Acrobat Reader[日本語版]というソフトが必要。
  これは、雑誌( INTERNET magazine など)の付録 CD-ROM に含まれることもある。
  また、WWW からも入手可能。ただし 6.6MBもある。URLは下記。
    http://www.adobe.co.jp/product/acrobat/readstep.html 

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

  JCSの新JIS案  (「index.htm」 より 一部抜粋)
 
 既存の実装とも最大限互換性を保ち,速やかに普及させることを考慮に入れ,検討しています。具体的には,NEC98拡張の記号類で,Windows標準文字セットにも入っている13区の記号類は,83JIS拡張記号類との重複を除き,そのままの面区点位置で収録しています。  

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  JCSの新JIS案  (「符号化方法についてのQ&A」 より 一部抜粋)
 
Q. Shift-JISの0xFA40〜0xFC4B(南堂注:115〜119区のこと)には、すでに文字が入っているはずですが? 
 
A. メーカーがシフトJISの外字に独自のコードを割り当てているものがありますが、文字コードを工業規格として制定する本来の意味は、各社が共通のコードを利用することにより情報交換を円滑に出来るようにするということです。したがって、特定の会社に配慮することは出来ません。しかしながら、既に独自のコードを組み込んで、広く利用されているという実態も考慮しつつ、現在、規格内容を検討中です。  

  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

  JCSの新JIS案  (「シフト符号化に関する追加情報」 より 一部抜粋)

(1) Windows上で既に文字が割り当てられている以下の領域が、本シフト符号化表現(案)では、新JIS拡張漢字集合の文字によって使われます。

   NEC選択IBM拡張文字が定義されたED40からEEECまでの360文字分の領域
   NEC特殊文字が定義されたEEEFからEEFCまでの14文字分の領域
   IBM選択IBM拡張文字が定義されたFA5CからFC4Bまでの360文字分の領域
   IBM特殊文字が定義されたFA40からFA5Bまでの28文字分の領域
   ユーザ定義文字用に確保されたF040からF9FCまでの1880文字分の領域
   
(2) 13区には、NEC98拡張で、Windows標準文字セットにも入っている記号類の一部が同じ符号位置に収録されていますが、それら以外のNEC98拡張の文字は、83JIS拡張記号類と重複していますので、13区には収録されていません。
 但し、互換性のためそれらの文字の符号位置は保留されています。
 以下は、NEC98拡張の記号類のうち、83JIS拡張記号類と重複している文字の一覧です。

  ──── 以上、JCSの新JIS案の一部抜粋 ──── 


 【 資料5 】 Mac の機種依存文字   New !

 Mac の機種依存文字については、本文書では述べていない。
 WWW上にある、他の人のページでも見てほしい。
 さしあたっては、次のページなどに、初歩的な情報がある。Windows のユーザとしても、Mac にある機種依存文字とはどんなものか、知ることができて、興味深い。

   http://www.age.ne.jp/x/kensuke/majime/izon.html  ……リンク切れ

   http://www.nets.ne.jp/~keio/let_table/for_win.html

 【 資料6 】 機種依存文字の自動チェックソフト   New !

 Windows で、文書中の機種依存文字を自動的にチェックしてくれるソフトがある。
 すぐ上(7行上)に記したページを参照。
 そこにリンクが記してある。   <現在、リンク切れ>



謝辞
 
 この原稿を記すに当たっては、諸氏のご協力をいただいた。
 謹んで、厚い感謝を表したい。




 最後に

 いろいろと駄弁をつらねてきたが、浅学非才の身ゆえ、間違いがあるかもしれない。
 もし間違いを見つけたら、ご教示をくださるよう、お願いします。 

  作 者 名  南堂久史
  Eメール  nando@js2.so-net.ne.jp




          「文字コードをめぐって」表紙ページ  へ戻る