戸籍統一文字からOTFを作る

安岡孝一

戸籍統一文字は、戸籍に使われているアヤシイ漢字の宝庫だったりする。 でも、200×200のPNG画像なので、そのまま文書に貼り付けたりすると、妙に画像っぽくなってしまって醜い。 そこで、アウトライン化してOpenTypeフォントにする方法をここで伝授しようと思う。 ただし、プラットホームはUNIXなのでそのつもりで。

まずは、文書に埋め込みたい文字画像を取ってきて、ファイルに保存する。 ただし、この際にファイル名を「CID+UCS.png」の形にしておこう。 CIDってのはAdobe-Japan1-6でのCharacter ID、UCSってのはUnicodeだけど、変な字になればなるほどCIDもUCSもないだろうから、たとえば右の文字ならサクっと「浜」を借りて「3519+6D5C.png」って名前にするのもオツだろう。 ちなみにUCSは5桁でもかまわない。

次にPNGをPBMに変換する。 pngtopnmが手頃だろう。 もちろん変換結果のファイル名は「CID+UCS.pbm」の形にしておく。 ここでは「3519+6D5C.pbm」だ。

それからpotraceを使って、PBMをアウトライン化する。 アウトラインはEPSの形で得られるので、ファイル名は「CID+UCS.eps」の形にしておく。 ここでは「3519+6D5C.eps」だ。

最後にeps2otfを使って、OpenTypeフォントを作る。 eps2otfは、EPS中のアウトラインをType 2 Charstringに変換し、それをまとめてCompact Font Formatに押し込めたものを、さらにOpenTypeフォント化するというスグレモノだが、内部からgsを呼んでいるので注意が必要だ。 作り方は「eps2otf -FontName CID+UCS.eps > FontName.otf」でOK。 たとえばフォント名を「Hama」にするなら「eps2otf -Hama 3519+6D5C.eps > Hama.otf」となる。 ちなみに、複数のEPSを1つのOTFにまとめたりもできる。 例として人名用漢字と常用漢字とその周辺の入ったOTFを作ってみたので、試してみてほしい。

できあがったOTFをどう使うかだが、TeXからならOTFパッケージdvipdfmxの組み合わせで、PDFに埋め込むのがオシャレだろう。 この例でいけば、TeXのソース中には「\CID{3519}」と書いておけばOK。 それから

otf-cjmr-h Identity-H Hama.otf
の1行をたとえば「mymap.map」ってファイルに書いておけば、あとは「dvipdfmx -f mymap.map dviファイル」で、フォントを埋め込んだPDFが得られるはずだ(ただしdvipdfmxは20031228以降のバージョンを使うこと)。 ぜひチャレンジしてほしい。