« prawn-svg + Inkscape = 帳票作成 | トップページ | prawn-svg + Inkscape = サイズ調整 »

2010/05/20

prawn-svg + Inkscape = フォントを指定する

最近めっきりprawn-svgネタばかりで、Googleで「prawn-svg」を検索すると検索結果のランクにて本家を追い抜いてしまいました。
さて、そんなこんなで本日もまたprawn-svgネタです。

以前、日本語を表示する場合、フォントをあらかじめ指定しておけば良いという書き方をしましたが、フォントについてはInkscape内で指定した設定をきちんと帳票に反映して欲しいものです。ということで、その方法を探してみました。

prawn-svgでは「parser.rb」内の「map_font_family_to_pdf_font(font_family)」というメソッドでフォントを指定しているようです。

では、IPA明朝を指定する方法を探してみます。

Inkscapeでは、フォントにIPA明朝を設定するとSVG内で「font-family:IPAMincho;」と記述されます。これをprawn-svgに読み込ませると、フォント名は全て小文字になって「ipamincho」と認識されるようです。
IPA明朝のファイル名は「ipam.ttf」なので、このひも付けをすれば良さそうです。

僕の環境(MacOSX 10.6)では、フォントが

/Library/Fonts/

に入っているので、prawnにこれを認識してもらうためには、

[ipamincho] → [/Library/Fonts/ipam.ttf]

となれば良いはず。

parser.rbには、フォントの置き換え用に「GENERIC_CSS_FONT_MAPPING」(400行目付近)という配列が作ってあります。用途は違うかもしれませんが、ここではこれを使って指定できるようにしてみます。ついでなので、IPAゴシックの設定もしておきます。

GENERIC_CSS_FONT_MAPPING = {
  "serif" => "Times-Roman",
  "sans-serif" => "Helvetica",
  "cursive" => "Times-Roman",
  "fantasy" => "Times-Roman",
  "monospace" => "Courier",
  "ipamincho" => "/Library/Fonts/ipam.ttf",
  "ipagothic" => "/Library/Fonts/ipag.ttf"
}

そして、Inkscapeで文字を入力して、PDFに変換してみると...できた、できた。きちんとIPA明朝で表示されていました。

まだまだ、帳票の作成にはコツが必要だけど、十分使い物になる気がしてきました。
とりあえず...何しよう。

|

« prawn-svg + Inkscape = 帳票作成 | トップページ | prawn-svg + Inkscape = サイズ調整 »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/79953/48414498

この記事へのトラックバック一覧です: prawn-svg + Inkscape = フォントを指定する:

« prawn-svg + Inkscape = 帳票作成 | トップページ | prawn-svg + Inkscape = サイズ調整 »