記事公開日
最終更新日
富士通メインフレームの文字コード(最終回)

(本記事の情報は、記事の公開日時点での情報であり、その正確性、完全性、最新性等内容を保証するものではありません。)
前回の「富士通メインフレームの文字コード(その2)」では、フォントを切り替えてPCにない文字「つちよし」(土かんむりの吉)を表示する方法を紹介しました。
それは、ライブラリに問い合わせをすると、コードとフォントが指定されるので、
それにしたがって表示するというものでした(このライブラリは、富士通社製「JEF拡張漢字サポート」です)。
そもそも、なんでそんなことをしなければいけないのでしょうか?
PCで使用するJISコードは、
- 非漢字(ひらがな、かたかな、記号など)
- 第1水準漢字(一般日本語表記用漢字)
- 第2水準漢字(地名・人名を含む個別分野用漢字)
富士通メインフレームで使用している文字コードは、JEF(Japanese processing Extended Feature)コードと言います。
このJEFコードには、
- 基本非漢字
- 第1水準漢字
- 第2水準漢字
- 拡張漢字
- 拡張非漢字
- 利用者定義文字
JEFコードの基本非漢字、第1水準漢字、第2水準漢字は、それぞれJISコードの非漢字、第1水準漢字、第2水準漢字に対応しています。
しかし、JEFコードの拡張漢字、拡張非漢字、利用者定義文字は、対応するものがJISコードにはありません。
対応していない文字をどうするかと考えた場合、外字領域に登録すればなんとかなるのでは?と、思われる方もいらっしゃる方もいません。
しかし、これら3つの文字数は、
拡張漢字:4039文字、拡張非漢字:1010文字、利用者定義文字:3102文字となり、合計8,151文字になります。
JISの外字領域の文字数は、1,880文字ですので、拡張文字だけでも不足しています。
そこで、フォントを切り替えることで、全く異なる文字を表示できるように工夫されています。
では、富士通の漢字を表示する方法をまとめると、以下のようになるのでしょうか?
- 基本非漢字・第1水準漢字・第2水準漢字
計算でJISコードに変換して、MS明朝などで表示する - 拡張漢字・拡張非漢字・利用者定義文字
ライブラリに問い合わせして、指定されたフォントとコードで表示する
いえいえ、実は、落とし穴があります。
JEFコードは、78年度に制定された文字コードが基本となっています。いわゆる旧字です。
JISコードと一対一と言っていましたが、正確に言うとJIS78とJEFは一対一なのです。
そのため、JIS83やJIS90が基本となっているWindowsとでは、字体変更文字に違いが出てしまいます。
例えば、唖という文字を例で説明します。
JISコードは、0x3022です。
メインフレームの画面で「唖」を確認すると、以下のように0x47B9ということがわかります。

JISコード+0x8080になっていません。このコードは拡張漢字の範囲になります。
0x8080を加えた0xB0A2も一緒に確認してみましょう。

旧字が表示されていました。
落とし穴と書いたのはこのことで、第一水準の文字だから単純に計算すると、文字が旧字に変わってしまうことがあるのです。
では、どうしましょうか?
両方の文字がエミュレータ画面に表示されていますね。拡張漢字と同じで、ライブラリに問い合わせすると、0x47B9の文字コードであれば「FF特殊112」が指定されますし、0xB0A2であれば「FF特殊111」というフォントが指定されます。
ここで、初登場の「FF特殊111」というフォントですが、JIS78に対応した文字が入っているのです。
指定された場合、旧字ということになりますし、指定されない場合は、MS明朝などのフォントと同じ文字が入っていますので、「FF特殊111」を使っても使わなくても構いません。
富士通の漢字を表示する方法をまとめると、
全ての文字は、ライブラリに問い合わせて、その結果に従ったコードとフォントで表示する
となります。