do:kalaclism

『輝かしい青春』なんてなかった人のノート

Ricty を含む FontForge で生成したフォントを Windows 向けに修正する方法

元ネタ

と言うか参考にしたページ

itouhiro.hatenablog.com

使うモノ

  • 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 1MxAvgCarhWidth を指定してやると良い。

4. 修正した OS/2 テーブルを元のフォントに書き戻す

これは例えば使っているシェルが zsh の場合、

$ ttx -m target.tt{f,x}

とすると、割と楽に書き戻す事が出来る。

以上

作業の流れはざっとこんな感じ。

まあ、基本的には、

  1. FontForge デフォントを合成する
  2. ttx (fontools) で OS/2 テーブルを出力して修正
  3. ttx (fontools) で OS/2 テーブルを書き戻す

という感じで良いっぽいです。

ちなみに、 Ricty の場合だと os2version_reviser.sh で文字幅がおかしいのが直せるらしいんですが、

github.com

を合成した Ricty だと上手く動いてくれなかったので、今 (2017-01-30) 現在、 mintty 等で使っている Ricty with NERDFont patched はこの方法を使って Windows 対応させて使っています。はい。