14

OS X で Prawn を使用して Ruby を使用して PDF を生成しようとしています。

font 'Arial'

Arial は私の Mac にインストールされています。しかし、PDF を生成しようとすると、次のエラーが発生します。

Prawn::Errors::UnknownFont in ProjectsController#show
Arial is not a known font.

この一般的なフォントを Prawn で動作させるにはどうすればよいですか? 実際、Helvetica や Times New Roman 以外のほとんどすべてが同じエラーをスローします。これは Rails 3.2 アプリの一部です。

以下の Ashish の提案に従って、フォント ttf ファイルを直接ロードしようとすると、次のBad font familyメッセージが表示されます。

RuntimeError (Bad font family):
  app/pdfs/quote_sheet_pdf.rb:29:in `page_top'
  app/pdfs/quote_sheet_pdf.rb:12:in `initialize'
  app/controllers/projects_controller.rb:9:in `new'
  app/controllers/projects_controller.rb:9:in `block (2 levels) in show'
  app/controllers/projects_controller.rb:7:in `show'
  config/initializers/quiet_assets.rb:7:in `call_with_quiet_assets'
4

3 に答える 3

29

:styleへの呼び出しにオプションを使用している場合text、たとえば

text "Hello World", :style => :italic

次に、その時点で使用しているフォントに関連付けられたフォント ファミリが必要です。そうしないと、次のような「Bad font family」エラーが表示されます。

Prawn::Document.generate("output.pdf") do
  font "/Library/Fonts/Arial.ttf"
  text "Hello World", :style => :italic
end

生成: Bad font family (RuntimeError).

これを回避する 1 つの方法は、スタイルを変更するたびに、必要な正確なフォント ファイルを常に指定することです。

font "/Library/Fonts/Arial Italic.ttf"
text "Hello World"

より良いオプションは、必要なスタイルでフォント ファミリーを作成することです。

Prawn::Document.generate("output.pdf") do

  font_families.update("Arial" => {
    :normal => "/Library/Fonts/Arial.ttf",
    :italic => "/Library/Fonts/Arial Italic.ttf",
    :bold => "/Library/Fonts/Arial Bold.ttf",
    :bold_italic => "/Library/Fonts/Arial Bold Italic.ttf"
  })

  font "Arial"
  text "Hello World"
  text "Hello World", :style => :italic
  text "Hello World", :style => :bold
  text "Hello World", :style => :bold_italic
end

フォント ファミリーを設定したらArial、フォント名として使用するだけで、さまざまなスタイルを簡単に使用できます。

于 2012-08-18T20:45:45.540 に答える
4

以下のように、arial.ttf のフルパスを font 関数に渡してみてください -

Prawn::Document.generate("custom_font_usage.pdf") do
  font "/path/to/fonts/arial.ttf"
  text "this is a test " * 20 
end

関連するリンクも参照してください -

  1. Prawn で利用できるフォントの数は?
  2. エビのドキュメント - http://rubydoc.info/gems/prawn/0.12.0/frames
于 2012-08-14T17:11:24.743 に答える