Itou Hiro
itouh****@users*****
2011年 7月 17日 (日) 14:27:07 JST
itouhiroです。 Itou Hiro は書きました: >> TESTFLIGHT 041 の M+ 1M,2M について確認しました。 >> 投稿のとおり、「全角文字」の文字幅がおかしくなっていました。 >> ... > > ・xAvgCharWidthが変化した原因 > ・xAvgCharWidthを以前と同じに戻す方法 > の2点についてはまだ未調査です。 ●xAvgCharWidthが変化した原因 FontForgeのバージョンを 2010-06-11 以降のものに変更したのが原因。 2010-06-11のFontForgeに対するパッチ http://fontforge.git.sourceforge.net/git/gitweb.cgi?p=fontforge/fontforge;a=commitdiff;h=3536593d4af07dbda1fa5f13f09c2cca0aae0c3a で、デフォルトの OS/2テーブルのバージョンが 1 から 4 に変わってしまった。 ソースコードの fontforge/tottf.c には以下のように書いてある。 /* v1,2 & v3,4 have different ways of calculating avgCharWid. */ /* but I'm told that using the v3 way breaks display of CJK fonts in windows */ (OS/2テーブルのバージョンが「1, 2」のときと「3, 4」のときでは xAvgCharWidth の計算方法が異なるんだ。だが「3, 4」を使うと WindowsでCJKフォントの表示がおかしくなると聞いているよ) ●xAvgCharWidthを以前と同じに戻す方法 いくつか考えられます。 (1) FontForgeのバージョンを 2010-06-11 より前のものにする。 (2) OS/2テーブルのバージョンを明示的に「1」と指定する。 (3) OS/2テーブルの fsSelectionエントリ の中で指定される use_typo_metrics というフラグがデフォルトではONだが、 明示的に OFF を指定する。(OFFを指定できれば OS/2テーブルの バージョンも「1」と判定される) (4) TrueTypeフォントをいったん出力した後、Perlなどで ttfファイルを編集して、OS/2テーブルを強引に修正する。 以上の方法を検討すると、 (1)は しばらくは可能ですが、いつまでも使える方法ではないですね。 (4)は なるべくなら避けたい。 (2)と(3)が今後も使っていける方法ですが、 (以前から使える)FontForge旧スクリプト (http://fontforge.sourceforge.net/scripting.html) では os2_version も use_typo_metrics も 操作できないようです。 しかし(最近使えるようになった)FontForgeで使えるpythonスクリプト (http://fontforge.sourceforge.net/python.html) なら os2_version も use_typo_metrics も 操作できるように読めます。 FontForge旧スクリプトとpythonスクリプトの詳細については 未調査です。 -- itouhiro