「あ」
ここに表示している「あ」という文字は画像ではなくテキストであり、文字コードの何番目とかでしかない。プログラムはそれをコードとしては捉えられるけど、形として捉えてはいない。
だからプログラムは片仮名の「ヘ」と平仮名の「へ」を全く違うものとして捉える。けど、画像化して類似画像を検索すれば似たものとして捉えられる。うちの子にはそういう目線で文字を見て欲しい。親である私の希望である。
というわけで、受け取った文字列をその場で画像に変換して、その場で見て、何に近いか連想してもらうという実に意味のないことを考える。
とりあえず画像にするとこまで。Ruby経由なのでRMagick使用。
宗教的理由でprefixを指定しているけど、実際には特に必要ない。むしろ付けない方がいい。
$ ./configure --prefix=/usr/local/ImageMagick
$ make
$ make install
いろいろ警告が出てた気がするけど、注意して見てなかったから分からない。とりあえず動いたからよしとする。ログってなんですか。
次にRubyからImageMagickを触る為に、RMagickを入れる。
$ gem install rmagick
失敗。
先ほど宗教的理由でImageMagickのインストールディレクトリをいじってしまったせいで、Magick-configがないと言われる。仕方ないのでPATHを追加してみる。
$ PATH=$PATH:/usr/local/ImageMagick/bin
$ export PATH
これで再度gemったら通った。
ついでにこのままRMagickを実行すると、またも宗教的な事情が原因でlibMagickCore.soがないとか言われるので、LD_LIBRARY_PATHにも足しておく。宗教万歳。
$ LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/ImageMagick/lib
$ export LD_LIBRARY_PATH
指定文字を画像にするスクリプトを書いてみる。下準備として、300*300の真っ白な画像を用意し、blank.bmpと名づける。
require 'rubygems'
require 'RMagick'
blankImg = Magick::ImageList.new("blank.bmp")
draw = Magick::Draw.new
draw.annotate(blankImg, 0, 0, 55, 250, "A") {
self.fill = "black"
self.pointsize = 300
self.font = 適当なフォント
}
blankImg.write("new.bmp")
これで「A」という文字を画像に変換できた。が、「A」を「あ」に変えて実行すると文字化けした。どうやらフォントはフルパスで指定した方が良いらしい。
Fedora10の日本語フォントの場所どこだろうと思いつつ、探すより落とした方が早そうだったので、とりあえずさざなみさんを落としてttfファイルをスクリプトと同一ディレクトリに放り込んだら動いた。結果オーライ。