ARIB文字コードをJISコードに変換する計算方法

ARIB文字コードARIB STD-B24)はISO/IEC 2022を元に改変したもののようで、21〜FEと21〜FEの2バイトでJIS漢字コードの漢字を表すだけでなく、A1〜FEの1バイトでJIS漢字コードのひらがなを表すことができる(第1バイトの24は省略されており、第2バイトはA1〜FEから80を引いた21〜7Eになる)。
ただし、これは初期状態で21〜7Eに漢字が、A1〜FEにひらがなが割り当てられているからであって、1Bで始まる数バイトで21〜7EとA1〜FEに漢字、英数字、ひらがな、カタカナ、追加記号など32種類の文字セットを割り当てることができる。
実際には文字を割り当てるグループのG0〜G3があって、初期状態ではG0に漢字が、G1に英数字が、G2にひらがなが、G3にカタカナが割り当てられており、21〜7EにはG0が、A1〜FEにはG2が割り当てられている。尚、ARIB STD-B24ではISO/IEC 2022と同様に21〜7Eの領域をGL、A1〜FEの領域をGRと呼んでいる。

GL(21〜7E)やGR(A1〜FE)にG0〜G3を割り当てるコードは以下の通り。

コード 内容
0F GL(21〜7E)にG0を割り当てる
0E GL(21〜7E)にG1を割り当てる
1B 6E GL(21〜7E)にG2を割り当てる
1B 7F GL(21〜7E)にG3を割り当てる
1B 7E GR(A1〜FE)にG1を割り当てる
1B 7D GR(A1〜FE)にG2を割り当てる
1B 7C GR(A1〜FE)にG3を割り当てる
19 GL(21〜7E)にG2を割り当てて1文字処理したら元に戻す
1D GL(21〜7E)にG3を割り当てて1文字処理したら元に戻す

G0〜G3に文字セットを割り当てるコードは以下の通り。(xxには文字セットの種類を表すコードが入る。)※DRCSは動的再定義キャラクタセットの略で、外字の割り当て等に使われる。

コード 内容
1B 28 xx G0に1バイトの文字セットを割り当てる
1B 29 xx G1に1バイトの文字セットを割り当てる
1B 2A xx G2に1バイトの文字セットを割り当てる
1B 2B xx G3に1バイトの文字セットを割り当てる
1B 24 xx G0に2バイトの文字セットを割り当てる
1B 24 29 xx G1に2バイトの文字セットを割り当てる
1B 24 2A xx G2に2バイトの文字セットを割り当てる
1B 24 2B xx G3に2バイトの文字セットを割り当てる
1B 28 20 xx G0に1バイトのDRCSを割り当てる
1B 29 20 xx G1に1バイトのDRCSを割り当てる
1B 2A 20 xx G2に1バイトのDRCSを割り当てる
1B 2B 20 xx G3に1バイトのDRCSを割り当てる
1B 24 28 20 xx G0に2バイトのDRCSを割り当てる
1B 24 29 20 xx G1に2バイトのDRCSを割り当てる
1B 24 2A 20 xx G2に2バイトのDRCSを割り当てる
1B 24 2B 20 xx G3に2バイトのDRCSを割り当てる

1バイトの文字セットの種類を表すコードは以下の通り。モザイクA〜Dは8ビットPCで良く見られたグラフィック文字。プロポーショナルはプロポーショナルフォントを使った表示の指定。JIS X0201片仮名はいわゆる半角カナ(シフトJIS等でA1〜DFに割り当てられている)だが片仮名と並びが違うだけで文字の大きさ(半角/全角)は変わらない。

コード 内容
4A 英数
30 平仮名
31 片仮名
32 モザイクA
33 モザイクB
34 モザイクC
35 モザイクD
36 プロポーショナル英数
37 プロポーショナル平仮名
38 プロポーショナル片仮名
49 JIS X0201片仮名

2バイトの文字セットの種類を表すコードは以下の通り。漢字とJIS互換漢字1面はほぼ同じだが、前者は第3水準の漢字などを含まず追加記号を含んでいる。JIS互換漢字2面は第4水準の漢字。追加記号は漢字とほぼ同じだが一部記号がさらに追加されている。

コード 内容
42 漢字
39 JIS互換漢字1面
3A JIS互換漢字2面
3B 追加記号

1バイトのDRCSの種類を表すコードは以下の通り。マクロは単純に定義されたコードが展開されるだけのもので、初期状態で既に定義されているものもある。95で始まる数バイトで定義が行える。

コード 内容
41 DRCS-1
42 DRCS-2
43 DRCS-3
44 DRCS-4
45 DRCS-5
46 DRCS-6
47 DRCS-7
48 DRCS-8
49 DRCS-9
4A DRCS-10
4B DRCS-11
4C DRCS-12
4D DRCS-13
4E DRCS-14
4F DRCS-15
70 マクロ

2バイトのDRCSの種類を表すコードは以下の通り。

コード 内容
40 DRCS-0

これらはARIB STD-B24 第一編 第2部の「表7-1 符号の呼び出し」、「表7-2 符号の指示制御」、「表7-3 符号集合の分類と終端符号」を元にまとめたもので、「01/11」のような2つの10進数の数字を「/」で区切った表記は、上位4ビットと下位4ビットを「/」で区切った値のことなので、「01/11」は16進数にすると「1B」になる。他にESCは1B、Fは文字の種類ごとに決まっている値となっている。