ARIBコードへまたはARIBから各種の文字コードを変換するOSSの文字コード変換ツールは、今までいくつか存在していましたが、汎用性と機能が不十分でした。
しかしながら、LinuxTVにおいて、Linuxの各ディストリビューションの標準的パッケージとして含まれるiconvコマンドおよびglibc内の文字変換モジュールiconvをARIBコードに対応させる拡張モジュールが公開されました。
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 gconv-digital-tv-1.0.0-3.EL7.i686.rpm 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 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)モジュール"; Ssource 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にマッピングされる仕組みを有します。
エンコード動作において、動作を行います。
・GL符号領域は、G0/G1集合のみ指定します。
・GR符号領域は、G2/G3集合のみ指定します。
・G0集合は漢字系集合に固定指定します。
・G1集合はASCII(1バイトGセット)に固定指定します。
・G2集合は平仮名集合およびJIS 互換漢字1/2面に使用します。
・G3集合は片仮名集合、JIS X0201 片仮名集合および追加記号に使用します。
・G2集合にJIS 互換漢字1/2面を指示する場合および
G3集合に追加記号を指示する場合は、シングルシフトにより指示します。
UCS(国際符号化文字集合:Universal multi-octet coded Character Set)コードとARIB8単位コードとの対応については、ARIB STD-B62の
第1編 データ符号化方式
第5章 文字符号化
表5-2 追加する記号・文字
を参照ください。