ARIBコードへまたはARIBから各種の文字コードを変換するOSSの文字コード変換ツールは、今までいくつか存在していましたが、汎用性と機能が不十分でした。
しかしながら、LinuxTVにおいて、Linuxの各ディストリビューションの標準的パッケージとして含まれるiconvコマンドおよびglibc内の文字変換モジュールiconvに対応した、
ARIB 8単位コードに対応させる拡張モジュールがAkihiro TSUKADA氏により開発、公開されました。
http://git.linuxtv.org/cgit.cgi/v4l-utils.git/tree/contrib/gconv
このページでは、上記のコードを単独のgconvモジュールとしてRHELまたはCentOS用にインストールするためのRPMを公開しています。
これはLGPLに基づくものです。
iconvは最初にHP-UXで開発され、後にPOSIX規格として標準化されました。
GNUのCライブラリにはフリー版のiconvが含まれ、Linuxディストリビューションは、GNUのCライブラリを標準で利用しているため、通常、新たな設定なしでiconvが利用できます。
また、iconvは、コマンドラインユーティリティも存在し、nkfに代わり利用することができます。iconvは変換に際して、各文字コードを内部コードに変換するgconv モジュール (動的にロードされる共有ライブラリ)を順次呼び出し、所定の文字コード間の変換を行います。
つまり、対象の文字コードの変換を行うgconvモジュールを追加することで、容易に変換対象の文字コードを拡張することができます。
LinuxTVコミュニティは、Linuxベースのセットトップボックスや携帯電話などの組み込み機器に向けて、Linuxカーネルメディア・サブシステムやユーザ空間ライブラリ、アプリケーションを開発およびメンテナンスを行っています。
この中で、日本のデジタル放送およびヨーロッパのデジタル放送で使用する文エンコーディングをサポートするgconvモジュールが開発、公開されています。
これらのgconvモジュールをLinuxに組み込むことで以下の文字コードのサポートが追加されます
- ARIB-STD-B24(ARIB-B24) 日本のデジタル放送の文字コード
- EN300-468-TAB00 ヨーロッパのデジタル放送の文字コード
なお、LinuxTVコミュニティが開発した上記のgconvモジュールはLinuxのメインストリームへのマージが提案されましたが、却下されており、各Linuxディストリビューションに包含される予定はありません。
RHELまたはCentOSにおいて、上記のgconvモジュールを単独でインストール、利用するために以下のRPMを用意しました。
OS RPM RHEL5
CentOS5i386 gconv-digital-tv-1.0.0-3.EL5.i386.rpm &ref(): File not found: "gconv-digital-tv-1.0.0-3.EL5.i386.rpm" at page "ARIB STD-B24用iconv(gconv)モジュール"; x86_64 gconv-digital-tv-1.0.0-3.EL5.x86_64.rpm gconv-digital-tv-1.0.0-3.EL5.x86_64.rpm RHEL7
CentOS7i686 gconv-digital-tv-1.0.0-3.EL7.i686.rpm gconv-digital-tv-1.0.0-3.EL7.i686.rpm x86_64 gconv-digital-tv-1.0.0-3.EL7.x86_64.rpm &ref(): File not found: "gconv-digital-tv-1.0.0-3.EL7.x86_64.rpm" at page "ARIB STD-B24用iconv(gconv)モジュール"; armv7hl*1 gconv-digital-tv-1.0.0-3.el7.centos.armv7hl.rpm &ref(): File not found: "gconv-digital-tv-1.0.0-3.el7.centos.armv7hl.rpm" at page "ARIB STD-B24用iconv(gconv)モジュール"; Source RPM gconv-digital-tv-1.0.0-3.src.rpm gconv-digital-tv-1.0.0-3.src.rpm
文字コードとして下表の文字セットを使用します。ただし、モザイク集合はサポート対象外とします。また字幕のための制御コード は無視されます。
文字符号集合 記事 漢字系集合 ARIB STD-B24 JIS 互換漢字 1 面( 2 バイト符号) JIS X0213:2004 JIS 互換漢字 2 面( 2 バイト符号) JIS X0213:2004 英数( 1 バイト符号) ARIB STD-B24 平仮名( 1 バイト符号) ARIB STD-B24 片仮名( 1 バイト符号) ARIB STD-B24 JIS X0201 片仮名 外字符号集合 ARIB STD-B24 マクロ符号集合 ARIB STD-B24 追加記号( 2 バイト符号) ARIB STD-B24
符号化はARIB8単位文字符号に準じ符号化します。
下図に示す符号体系により符号化を実施します。
固定的に割り振られる制御コードと、GR/GLであらわされる割り当てがエスケープシーケンスにより変更されるコード(1バイトもしくは2バイト文字)により符号化されます。
また、GR/GLにマッピングされるコードは中間バッファ(G0~G3)に一旦マッピングされた後、再度GR/RLにマッピングされる仕組みを有します。
UCS(国際符号化文字集合:Universal multi-octet coded Character Set)コードとARIB8単位コードとの対応については、ARIB STD-B62の
第1編 データ符号化方式
第5章 文字符号化
表5-2 追加する記号・文字
を参照ください。
操作 符号面 初期値 指示 G0 JIS互換漢字面 G1 英数集合 G2 平仮名集合 G3 片仮名集合 呼び出し GL LS0(G0) GR LS2R(G2) 文字サイズ NSZ
呼び出し制御 呼び出し制御
符号化表現制御の内容 符号集合 呼び出し先 呼び出し形態 LS0 0x01 G0 GL ロッキングシフト LS1 0x0E G1 GL ロッキングシフト LS2 ESC 0x6E G2 GL ロッキングシフト LS3 ESC 0x6F G3 GL ロッキングシフト LS1R ESC 0x7E G1 GR ロッキングシフト LS2R ESC 0x7D G2 GR ロッキングシフト LS3R ESC 0x7C G3 GR ロッキングシフト SS2 0x19 G2 GL シングルシフト SS3 0x1D G3 GL シングルシフト
指示制御の
符号化表現制御の内容 文字集合の分類 指示先 ESC 0x28 F 1バイトGセット G0 ESC 0x29 F G1 ESC 0x2A F G2 ESC 0x2B F G3 ESC 0x24 F 2バイトGセット G0 ESC 0x24 0x29 F G1 ESC 0x24 0x2A F G2 ESC 0x24 0x2B F G3 ESC 0x28 0x20 F 1バイトDRCS G0 ESC 0x29 0x20 F G1 ESC 0x2A 0x20 F G2 ESC 0x2B 0x20 F G3 ESC 0x24 0x28 0x20 F 2バイトDRCS G0 ESC 0x24 0x29 0x20 F G1 ESC 0x24 0x2A 0x20 F G2 ESC 0x24 0x2B 0x20 F G3
文字符号集合 F(終端符号) 文字コード 漢字 0x42 2バイト符号 英数 0x4A 1バイト符号 平仮名 0x30 1バイト符号 片仮名 0x31 1バイト符号 プロポーショナル英数 0x36 1バイト符号 プロポーショナル平仮名 0x37 1バイト符号 プロポーショナル片仮名 0x38 1バイト符号 JIS X0201 片仮名 0x49 1バイト符号 JIS 互換漢字 1面 0x39 2バイト符号 JIS 互換漢字 2面 0x3A 2バイト符号 追加記号 0x3B 2バイト符号
文字符号集合 F(終端符号) 文字コード DRCS-0 0x40 2バイト符号 DRCS-1 0x41 1バイト符号 DRCS-2 0x42 1バイト符号 DRCS-3 0x43 1バイト符号 DRCS-4 0x44 1バイト符号 DRCS-5 0x45 1バイト符号 DRCS-6 0x46 1バイト符号 DRCS-7 0x47 1バイト符号 DRCS-8 0x48 1バイト符号 DRCS-9 0x49 1バイト符号 DRCS-10 0x4A 1バイト符号 DRCS-11 0x4B 1バイト符号 DRCS-12 0x4C 1バイト符号 DRCS-13 0x4D 1バイト符号 DRCS-14 0x4E 1バイト符号 DRCS-15 0x4F 1バイト符号 マクロ 0x70 1バイト符号
gconv-digital-tvでは、以下の固有の符号化を実施しています。
エンコード動作において、以下の動作を行います。
・GL符号領域は、G0/G1集合のみ指定します。
・GR符号領域は、G2/G3集合のみ指定します。
・G0集合は漢字系集合に固定指定します。
・G1集合はASCII(1バイトGセット)に固定指定します。
・G2集合は平仮名集合およびJIS 互換漢字1/2面に使用します。
・G3集合は片仮名集合、JIS X0201 片仮名集合および追加記号に使用します。
・G2集合にJIS 互換漢字1/2面を指示する場合およびG3集合に追加記号を指示する場合は、シングルシフトにより指示します。
入力文字コードをUCSコード(UTF-8)として場合、UCSでは未定義の文字や、Restricted領域(外字等を含む限定使用領域)は正しく変換されません。
Restricted領域の文字はRestricted領域以外の文字に変換しておく必要があります。
追加記号において、一部の文字(「氏」「副」「元」等のサイズの小さい文字や、楽器の記号等)については、類似の文字があり、
そのサイズを指定することで代替可能との理由でUCS符号には含まれていません。
そのため、あらかじめこれらの文字は類似文字に変換しておく必要があります。