言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

フォントが無かった時。

いい加減行き詰ってきたので、別の角度から攻める。フォント関連のプログラムというのは、ちょっとミスっただけでシステムダウンに繋がってしまう。これを少しでも減らすために、fallbackFont (フォントが無かったときに表示されるフォント)について考える。

通常、fallback にはデフォルトのフォントが当てられる、しかし、もしもデフォルトのフォントにも無かったらどうなるのだろうか? 現在はデフォルトフォントの fallbackFont は空なので即エラーを引き起こす。という事でここにダミーのフォントを入れてみる。これだけで、少しはこのフォント検索の仕組みはすっきりする。なぜなら、現在フォントが無かった場合 ? という文字を明示的に表示しているが、問題によっては ? という文字の無いフォントが割り当てしまう事もある。ここには、問題発生時どんな文字にでも必ずグリフを生成する特殊なフォントを使わなくてはならない。いわゆる emacs で言う豆腐である。

豆腐文字の事を英語でなんと言うか分からなかったので、とりあえず FixedFaceFont という名前をつけた。また、PasswordFont は実質的に同じ機能を持つので、PasswordFont を廃止し、FixedFaceFont を流用出来るようにした。これで殆ど上手く行ったかに見えたが、なぜか図のようにフォントが重なる問題が発生してしまった。なぜだ?!