レンダリング済みフォントを扱う

フリーのフォントはたくさんあるが、気に入ったものが再配布不可になっていたりすると困る。その場合、画像化したデータなら使ってもいい、というパターンは多いが、そうすると固定文字でしか扱えなくなってしまう。
例えば文字単位に画像を作って並べてやるとしても、色やサイズやエフェクトによって同じ文字でも違う画像になって、場合によってはとんでもない数の画像を扱う必要が出てくる。扱いも面倒だ。レンダリング済みフォントをサポートする機能があると少しラクになる。
ということでGWを使って開発中のDXRuby1.5.0devにレンダリング済みフォントサポート機能を追加してみた。
まずこのような画像を作る。手書きだが。

モノクロの文字画像にたいして、Image#draw_font_exと同じエフェクトをかけることができる。

require 'dxruby'

image = Image.load('moji_a.png').effect_image_font(:shadow=>true, :edge=>true, :edge_color=>C_RED)
Window.width, Window.height = 150, 150
Window.bgcolor = C_BLUE

Window.loop do
  Window.draw(10,10,image)
end

非常に遅いので画像はキャッシュして使いまわすのがのぞましい。
レンダリング済みフォントは文字コードと画像の対応データが必要になるが、開発者の手元にはフォントがあるはずなので、DXRubyを使ってレンダリングして画像と対応データを生成して、それを使うようなサポートクラスがあれば扱いやすい。そのへんもいずれ考えてみたいと思っている。