日本語

12.4.2. 日本語

各国語を扱うためには、文字集合、文字エンコーディングについて共通の了解と、適切なフォントの準備が必要です。 日本語を例に説明します。

以下のように文字と符号に関する概念を分割して考えます。

文字集合と字形
文字集合は対象とする文字の集合です。日本ではJISが制定しています。 国際的にはISOなど標準化団体が決めます。企業が制定したものが事実上の標準として先行することもあります。 文字集合を規定する前提は、文字の同一性や文字の形 (字形) に共通の了解があることです。
文字エンコーディング (文字コード、テキストエンコーディング)
文字集合に対する符号化 (encode) 方法です。日本語の文字コードについては漢字コードと呼ばれることもあります。 文字エンコーディングや文字集合を取り違えると、表現した文字とは別の文字が表示されます(文字化け)。
フォント
文字に対応する画像を用意します。コンピュータが文字を正しく扱っていても、フォントが用意されていなければ文字を表示できません。そのような表示の欠落を、俗に豆腐と呼ぶこともあります。
これまでのASCIIなど1byte文字の説明では、文字集合と文字エンコーディングを分けずに紹介しました。同じ文字文字集合に対するエンコーディングが複数考えられる場合に、両者を区別しておくと理解しやすいです。

日本語の文字集合 #

日本語の標準的な文字集合には、 現在では約1万の文字が標準化され規定されています。 たくさんの文字を使うためには、符号化方式やフォントの対応など準備も必要です。 そのため使用できる漢字の種類は、時代とともに段階的に増えました。 過渡期には、企業独自の文字集合 (機種依存文字) もありました。

JIS 基本漢字 #

JIS 基本漢字 (JIS X 0208) は約7000文字を規定し、1978 年から使われてきた文字集合です。 仮名・漢字の他、 数字・英文字・記号類・ギリシャ文字・キリル文字なども収録されています。 漢字の第 1 水準や、第 2 水準という分類はここで定められています。 何度か改訂され最新の 90JIS/97JIS では、6879 字です。

JIS 拡張漢字 #

JIS X 0213 は、JIS 基本漢字 (JIS X 0208) の拡張して2000年に制定され、現在は計 11233 字を定めます。 第3水準第4水準の漢字が追加されています。

現在はほとんどの環境でJIS X 0213が利用可能です。

1byte文字は 16x16 の表で表現できましたが、これらは文字数が多いので 94x94の表を複数枚使って定義します。 表番号を面、縦軸を「区」、横軸を「点」といいます。例えば「区」は(第1面) 22 区 72 点です。

JIS2004 での字形変更 #

字形を変更すると、コンピュータの認識では同じ文字でも、表示される画像は変わります。 JIS2004 の改正で、168 字の例示字形が変更されました。

これにより、JIS2004 の字形に対応したフォントと過去のフォントで、差が生じます。 例えば、「MS 明朝」「ヒラギノ明朝 ProN」といったフォントは、JIS2004 字形になっています。一方、「ヒラギノ明朝 Pro」などは、旧来の 90JIS 字形のままです。

地域名などの固有名詞にも影響があり、 葛城市と葛飾区の「葛」の字は同じですが正式名称に使われる字形は異なったものになっています。

奈良県葛城市 東京都葛飾区

似た文字の認識と使い分け #

様々な文字を使う際の注意点の一つは「紛らわしい文字」が発生することです。 同じ文字か異なる文字か、コンピュータの認識とユーザの認識に齟齬がおこるとトラブルになります。

互換性が大切な、あるいはリスクを避けたい状況では、HWBは以下の方針を勧めます:

  • ASCIIにある文字はそちらを使う。
  • カナはいわゆる半角カナ (JIS X 0201)ではなくJIS X 0208の文字を使う。

見た目を整えたいときは (文字の変更ではなく) フォントの指定で行う
HWBのお勧め 他の候補 違い
英数字 Aa1 Aa1 ASCII v.s. 全角
空白文字   ASCII v.s. 全角
省略記号 (株), kg, キロ ㈱、㎏、㌔ 分解 v.s. 合成
ローマ数字 II 英字I2文字 v.s. 1文字
丸括弧 ( ASCII v.s. 全角
カギ括弧 ハイパー ハイパー 全角 v.s. 半角カナ
カギ括弧 全角 v.s. 半角カナ
円記号 ¥ 全角 v.s. iso-8859-1

A は見た目は似ていますが、別の文字番号を持ち、コンピュータにとっては別の文字です。 正確な表現ではありませんが、慣習として縦長長方形(1:2)・正方形(1:1)の字形が使われる文字を、それぞれ半角・全角と呼びわけています。

コマンドやプログラミングなど、コンピュータに文字で指示を与える状況では、これらの文字の区別は必須です。 一方、親切なアプリケーションソフトウェアでは (追加の計算コストをかけて)、A で検索したら も見つけてくれるかもしれません。 そのような状況に限定すれば使い分けは不要です。
参考情報

参考情報 #

以下は情報処理学会 情報規格調査会が公開しているPDFへのリンクで、 90JIS/97JIS 規格における区点と文字との対応表、 JIS2004 第 1 面の区点と文字との対応表、JIS2000/JIS2004 第 2 面の区点と文字との対応表です。

Japanese Graphic Character Set for Information Interchange Japanese Graphic Character Set for Information Interchange, Plane 1 Japanese Graphic Character Set for Information Interchange — Plane 2
1byteでの表現と限界 日本語 多言語環境とUnicode