Utf82TeX 0906 をリリースした。Unicode CJK Unified Ideographs Extension B(CJK 統合漢字拡張 B)をサポートし,Unicode 漢字の \UTFx, \CIDx 命令変換を改善した。漢字についてはほぼ遺漏なく処理できるようになったはずである。本サイトのダウンロード頁から取得できる。ドキュメントも改訂した。
Windows Vista がリリースされてから入力文字の範囲が拡張され,CJK 統合漢字拡張 B の文字も IME から普通に入力できるようになった。例えば,:牛丼の吉野家の「吉」=「つちよし」もこのエリアに定義されている。従来の Utf82TeX だとそのまま出力されてしまい,コンパイルでエラーとなっていた。Utf82TeX 0906 は「つちよし」(U+20BB7)を \CID{13706} に変換する。
齋藤さんの OTF パッケージを前提としている。CJK 統合漢字拡張 B 領域文字を OTF パッケージで出力するには,安定版(stable)ではだめで,開発版(devel)を導入する必要があることに注意いただきたい。
今回いちばん苦労したのが,変換テーブル。Unicode コードポイントとそれに対応する CID 番号の対である。TeX コミュニティの権威者・角藤先生の utf8toutf 変換ツールがこのテーブルを持っていることを知った。先生にメールを書いて,流用許諾をお願いした。先生は快く了承してくださった。
テーブル構築用のプログラムを何本も書いた。UCS コードとビット列との相互変換などのコードを書くうちに,UTF-8 や UTF-16BE の符号化方式についても勉強になった。
Unicode Home Page にある Unihan database: Unihan.txt をダウンロードし,UCS と Adobe_Japan1_6 コード(つまり CID 番号)の対を抽出し,プログラムで加工した。Adobe Reader に添付されている CMap(日本語用 UniJIS-UTF16-H,中国語簡体字用 UniGB-UTF16-H,中国語繁体字用 UniCNS-UTF16-H,韓国語用 UniKS-UTF16-H)と突き合わせして,UCS — CID JP, CID CS, CID CT, CID KR のレコードを生成した。これでできたテーブルを角藤先生のテーブルデータとマッチングして不足,不正をチェックした。最終的に 15,790 字のテーブルとなった。このうち CJK 統合漢字拡張 B 領域の変換可能文字は日本語,中国語合わせ(韓国語のハンチャはそもそもこの領域には定義されていない)1,939 文字となっている。
0906 の改修で少し Perl コードを整理した。strict でないし,余計な処理の残骸もこれまで野ざらしにしていたのだ。まだ misima にはこの変更を反映していない。もうしばらく時間がかかりそうである。