M+フォントとFontForgeの虫下し
あらすじ
M+フォントがWindows7で使えない (http://mplus-fonts.sourceforge.jp/cgi-bin/blosxom.cgi/mplus_fonts/mplus_fonts-120624-2.html コメント欄参照)
原因
FontForgeがOS/2テーブルに正しいデータを書きだしていない。
詳細
M+フォントには書体が7つ*1あるが、漢字グリフは2種類*2。効率化のために、先に漢字グリフ分のTTFを生成しておいて、それをベースに各種フォントを作成する処理を導入した。これで漢字グリフ処理時間は2/7になり、ビルド処理の時間が大幅に短縮された。
その後、TESTFLIGHT-048までのビルドシステムはFontForgeの独自スクリプトで書かれていたが、049からは拡張しやすいPythonに移行した。*3
調べた所、OS/2テーブルが正しくないらしい。@egtraさんに教えて頂きました。文字を追加しても、OS/2テーブルのCodePagesとUnicodeRangesの情報が更新されていなかった。
解決
M+フォントのスクリプトの修正
PythonからUnicodeRangesを設定しようとしても何故か上手く行かなかったので、応急処置としてTTX/FontToolsのttLibライブラリを使って書き換えることにした。この修正をM+フォントのビルドシステムに導入するとしたら、ビルドにはTTX/FontToolsが必要になる。