元ネタ
と言うか参考にしたページ
使うモノ
- FontForge で生成 or 合成したフォント
- ttx (fonttools)
- テキストエディタ
修正の仕方
主に Unix-like 環境での作業の仕方 (WSL を含む)
1. ttx (fonttools) をインストールする
これは、例えば Archlinux だと、
# pacman -S python-fontools
で入る。
2. ttx コマンドで OS/2 テーブルを XML で出力
$ ttx -t 'OS/2' target.ttf
3. ttx で出力した target.ttx を テキストエディタで編集する
$ vim target.ttx
それで、Windows で FontForge の全角文字幅が奇妙な事になるのは、
xAvgCharWidth
の値がおかしなモノになっているのが原因なので、これを直す。
ちなみに、xAvgCharWidth
の最適な値の見付け方は、 例えば Ricty の様な合成フォントの場合、
合成の元になった日本語フォントの MIGU 1M の xAvgCarhWidth
を指定してやると良い。
4. 修正した OS/2 テーブルを元のフォントに書き戻す
これは例えば使っているシェルが zsh
の場合、
$ ttx -m target.tt{f,x}
とすると、割と楽に書き戻す事が出来る。
以上
作業の流れはざっとこんな感じ。
まあ、基本的には、
- FontForge デフォントを合成する
- ttx (fontools) で OS/2 テーブルを出力して修正
- ttx (fontools) で OS/2 テーブルを書き戻す
という感じで良いっぽいです。
ちなみに、 Ricty の場合だと os2version_reviser.sh
で文字幅がおかしいのが直せるらしいんですが、
を合成した Ricty だと上手く動いてくれなかったので、今 (2017-01-30) 現在、 mintty 等で使っている Ricty with NERDFont patched はこの方法を使って Windows 対応させて使っています。はい。