2013/07/04(木) [n年前の日記]
#1 [ruby] DXRubyとフォント
DXRubyのFontクラスは、ttf以外にも、otf、fnt,fon 等が使えるらしいのだけど。
ということは、美咲フォントのFONTX2形式(拡張子 .FNT)も使えるのかな? と思って試してみたものの。Font.install('4X8.FNT') とやってみても、「フォントのインストールに失敗」と言われてしまって利用できず。DXRuby は、FONTX2形式とやらには対応してないということかしら。
色々検索してみた感じでは、どうやら .fnt という拡張子は、何か特定のフォーマットを示しているわけではないようで。例えば、X68Kのフォントも、DOS/Vのフォントも、どっちも .fnt だったりして。それはおかしいだろうと。つまり、Windows3.1以前、DOSが主流だった時期は、フォントファイルだったらとにかく .fnt とつけておく、みたいなノリでつけられていた気配が。あくまで勝手な推測・印象だけど。
まあ、美咲フォントを使いたいだけなら、ttfも公開されているので、そちらを使えばいいのだろうけど。実際に、
と思ったら甘かった。Window.drawFont() では描画してくれたけど、Image.drawFont()では描画してくれず。
_4.13 フォント描画 によると、それぞれ処理が違っていて、Image.drawFont() は WIN32API に任せている関係で描画されないらしい。他のソフト・フォントビューワ系で表示確認をした場合も、ビットマップ埋め込みのフリーのフォントは描画されない時があるので、Windows が悪いのだろう。
美咲フォントは pngファイルとしても公開されているから、ASCIIコードから切り出し位置を求めて描画していく処理を書く、てなやり方でもいいのかもしれず。漢字の扱いはどうすればいいのか、ちと悩むけど。
ということは、美咲フォントのFONTX2形式(拡張子 .FNT)も使えるのかな? と思って試してみたものの。Font.install('4X8.FNT') とやってみても、「フォントのインストールに失敗」と言われてしまって利用できず。DXRuby は、FONTX2形式とやらには対応してないということかしら。
色々検索してみた感じでは、どうやら .fnt という拡張子は、何か特定のフォーマットを示しているわけではないようで。例えば、X68Kのフォントも、DOS/Vのフォントも、どっちも .fnt だったりして。それはおかしいだろうと。つまり、Windows3.1以前、DOSが主流だった時期は、フォントファイルだったらとにかく .fnt とつけておく、みたいなノリでつけられていた気配が。あくまで勝手な推測・印象だけど。
まあ、美咲フォントを使いたいだけなら、ttfも公開されているので、そちらを使えばいいのだろうけど。実際に、
Font.install("misaki_gothic_emb.ttf") fnt_mini = Font.new(8, '美咲ゴシック')としてみたところ、ちゃんと使えた。
と思ったら甘かった。Window.drawFont() では描画してくれたけど、Image.drawFont()では描画してくれず。
_4.13 フォント描画 によると、それぞれ処理が違っていて、Image.drawFont() は WIN32API に任せている関係で描画されないらしい。他のソフト・フォントビューワ系で表示確認をした場合も、ビットマップ埋め込みのフリーのフォントは描画されない時があるので、Windows が悪いのだろう。
美咲フォントは pngファイルとしても公開されているから、ASCIIコードから切り出し位置を求めて描画していく処理を書く、てなやり方でもいいのかもしれず。漢字の扱いはどうすればいいのか、ちと悩むけど。
◎ FONTX2形式のフォントを閲覧確認するツール。 :
FONTX2形式のフォントを閲覧確認できないかなと検索してみたら、
_マイコン風雲録: fontx2v: FONTX2 ビューア
というページでツールが公開されていると知りました。ありがたや。実にイイ感じのツールで助かりました。
描画する文字列が既に決まっている・少数なら、このツールで文字列を表示させてキャプチャして画像にする流れでもいいのかもしれない。
描画する文字列が既に決まっている・少数なら、このツールで文字列を表示させてキャプチャして画像にする流れでもいいのかもしれない。
[ ツッコむ ]
以上です。