Windows 7でIVSを認識しない問題について
「ちゃんと動くフォントの作成は黒魔術 (black art)の域にあると言わざるを得ない。」
--狩野宏樹
Windows 7でIVSを認識させるには、以下の条件をすべて満たす必要があるようです。
- GSUBテーブルが必要
- 存在していれば実際にグリフ置換の定義が含まれている必要はないようです。
- U+0020にグリフが必要
- ただし半角のグリフと全角のグリフを混ぜた幅の平均を取ってxAvgCharWidthに設定しないこと。
- BMP外に、少なくとも1つグリフが必要
- フルセットの花園ではもちろん問題ありませんが、Webフォント用に必要なグリフだけ入れたフォントを作ろうとするとハマるかもしれません。というかハマりました。
- さらに、
- OS/2テーブルのulUnicodeRangeのbit57がセットされている。
- UCS4のcmapが存在する。
- 実際にcmapにU+10000以上のグリフが定義されている。
- のすべての条件を満たさないと「BMP外にグリフがある」とみなしてもらえないようです。
- Default UVS Tableを使わない
- Default UVS Tableがあると、Non-Default UVS Tableの置換まで正常に行われなくなるようです。すべてNon-Default UVS Tableで定義しなければならないのでサイズが大きくなってしまいますが仕方ありません。FontForgeはもともとNon-Default UVS Tableしか使わないようですが、自作ツールでハマりました。