読者です 読者をやめる 読者になる 読者になる

M+フォント生成スクリプトの修正

漢字用に生成される中間フォントファイルの形式をTTFからSFDに変更しました。

中間のファイルをTTFにしてしまうと、中間ファイルにOS/2テーブルが書き出されます。その後中間ファイルを開いて漢字以外のグリフを追加しても、OS/2テーブル中のコードページ情報、Unicodeレンジ情報が適切に更新されません。中国語のフォントとしか認識されなかったり、フォント名が表示されなくなったりするようです。中間形式をSFDにすればOS/2テーブルが存在しないため、最終の出力時に正しいOS/2テーブルが作られると判明したので、修正しました。

diff --git a/build-ttf.py b/build-ttf.py
index 24a45b1..9a09d1f 100644
--- a/build-ttf.py
+++ b/build-ttf.py
@@ -490,7 +490,7 @@ if 'kanji' in modules:
             c.vwidth = em
     else:
         f.close()
-        f = fontforge.open('../../%sk/%s/%sk-%s.ttf'
+        f = fontforge.open('../../%sk/%s/%sk-%s.sfd'
             % (kfontname, weight, kfontname, weight))
     modules.remove('kanji')
 
@@ -539,4 +539,9 @@ set_alt_tables()
 set_fontnames()
 set_os2_value()
 
-f.generate(ttfname, '', ('short-post', 'opentype', 'PfEd-lookups'))
+if kanji_flag:
+    f.save('%sk-%s.sfd' % (kfontname, weight))
+    open(ttfname, 'w').close()
+else:
+    f.generate(ttfname, '', ('short-post', 'opentype', 'PfEd-lookups'))
+