小さい文字をTTFで描画する
前々から悩んでいたわけですが、Ruby/SDLとかでTrueTypeフォントを使って小さい文字(サイズが16とか12とか)を
描画すると文字が崩れる問題が見受けられたわけで。
こないだ、気になって調べていたらあっさり原因が分かりました。
SDL_ttfのバグでした。
TrueTypeフォントの中には、フォントサイズが小っちゃくなると、アウトラインじゃなくて
内蔵のビットマップを表示させるものがあります(MS明朝とか)。
ところが、ついこないだまでのSDL_ttfでは、そこらへんの切り替えが結構オバカさんで、
うまいことビットマップを引っ張ってくれない問題がありました。
(ちなみに、メイリオとかは、そーゆービットマップが無いので、小さいサイズでも表示されます)
この点を言及されているURLのリンクを貼っておきます。
http://ilaliart.55street.net/tips/ttf_mini.html
http://lists.sourceforge.jp/mailman/archives/efont-devel/2006-July/000147.html
実は、更に問題があって、小さいサイズでboldとかのスタイルを変更するとコケます。
(そのため、Miyakoでは、boldとかの設定を外していました)
ただし、現在出回っているSDL_ttf(バージョン2.0.9以降)では、そのバグが直っていますので、
SDL_ttfを最新のものに置き換えれば問題を回避できます。
やり方を書いておきます(Ruby/SDLのWindowsバイナリ版を使用している場合)。
これで、フォントサイズを小さくしたMS明朝とかの文字がちゃんと出てくるようになります。
もちろん、boldとかのスタイル設定も問題なく動きます(一応、Miyakoで確認済み)。
ちなみに、Miyakoでの対応は1.5以降になります。
・・・本当は、Ruby/SDLのサイトにあるWindowsバイナリ版が最新のSDL_ttfに差し替えていただけると嬉しいのですが・・・。