[M+ OUTLINE FONTS 620] Re: win7(x64) 全角文字の横幅に不具合?

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




mplus-fonts-dev メーリングリストの案内