Prawnで様々なフォントを使う方法。ttf形式のIPAフォントはボールドやイタリックが使えません。otf形式のNotoSerifJPは、半角文字や他のフォントと組み合わせるとうまくいかない?(単体で使ってる時は表示されたりもするのですが、不具合が出るタイミングがよく分かっていません)
一番下はおまけで、最初からfont_familiesに登録されているフォントの使用例です(英語は楽だなぁ…)。
require 'prawn'
pdf = Prawn::Document.new
ipamp_path = "./ipamp.ttf"
pdf.font_families.update("ipamp" => {normal: ipamp_path,
bold: ipamp_path,
italic: ipamp_path,
bold_italic: ipamp_path})
ipaexg_path = "./ipaexg.ttf"
pdf.font_families.update("ipaexg" => {normal: ipaexg_path,
bold: ipaexg_path,
italic: ipaexg_path,
bold_italic: ipaexg_path})
pdf.font_families.update("noto-serif" => {normal: "./NotoSerifJP-Regular.otf",
bold: "./NotoSerifJP-Bold.otf",
italic: "./NotoSerifJP-Regular.otf",
bold_italic: "./NotoSerifJP-Regular.otf"})
pdf.font "ipamp"
pdf.text "Prawnで日本語出力。IPA明朝"
pdf.formatted_text [{text: "ボールド", styles: [:bold]}, {text: "イタリック", styles: [:italic]}]
pdf.font "ipaexg"
pdf.text "Prawnで日本語出力。IPAゴシック"
pdf.formatted_text [{text: "ボールド", styles: [:bold]}, {text: "イタリック", styles: [:italic]}]
pdf.font "noto-serif" # Not working with prawn 2.4.0
pdf.text "Prawnで日本語出力。Noto Serif JP"
pdf.formatted_text [{text: "ボールド", styles: [:bold]}, {text: "イタリック", styles: [:italic]}]
pdf.font "Helvetica" # Courier, Times-Roman are also available
pdf.text "Prawn with embedded font. Helvetica"
pdf.formatted_text [{text: "bold", styles: [:bold]}, {text: "italic", styles: [:italic]}]
pdf.render_file "hello.pdf"
/snippets/ruby.htmlにも同じコード例を載せています。