RMagickで日本語を描画する(Mac)

RMagickはImageMagickRubyから触るためのbindingです.すこし触ってみて,日本語の描画がなかなか盲点だったのでメモとして残しておきます.

RMagickのインストール

ImageMagickを先にインストールします.MacPortsを使えば,

% sudo port install imagemagick

とすればインストールできます.
RMagickはMacPorts,gemからでもインストールできます.

% sudo port install rmagick
% sudo gem install rmagick

現時点ではMacPorts版は2.5.1,gem版では2.6.0が最新のようです.

とりあえず日本語を書く

require 'RMagick'
include Magick

def draw_text(draw, x, y, text, size=14, color='black', font="/Library/Fonts/ヒラギノ丸ゴ\ Pro\ W4.otf")
  draw.font = font 
  draw.pointsize(size) 
  draw.stroke(color)
  draw.text(x, y, text)
end

if __FILE__ == $0
  canvas = ImageList.new
  canvas.new_image(250, 250)

  pen = Draw.new
  draw_text(pen, 10, 30, "日本語のテストだよ.\nちゃんと表示されるかな?")

  pen.draw(canvas)
  canvas.write("font_test.png")
end

フォントの絶対パスを渡すとうまく描画してくれました.ttfフォントやotfフォントしかImageMagickでは認識しないのかよくわからないのですが,Osakaは使えませんでした.