2012-08-14 15 views
13

私は、次のしているOS X上でエビを使用してPDFを生成するためにルビーを使用しようとしている:OS XでPrawnでArialフォントを使用するにはどうすればよいですか?

font 'Arial' 

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

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

私はこの共通のフォントは海老で動作するように取得できますか?実際には、HelveticaやTimes New Roman以外のほとんどすべてがこの同じエラーを投げます。これはRails 3.2アプリの一部です。

私が直接フォント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' 
+0

エビは、フォントの小さなセットを持っており、彼らは宝石の中に埋め込まれています。利用可能なフォントのリスト(https://github.com/prawnpdf/prawn/tree/master/data/fonts)です。私はprawnがOSにインストールされているフォントを使用できるとは思わない。 – Augusto

答えて

28

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

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

次に、現在使用しているフォントに関連するフォントファミリーが必要です。これは:

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

Bad font family (RuntimeError)を生成します。

これは、スタイルを変更するたびに常に正確なフォントファイルを指定することです。

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を使用することができ、フォントファミリを設定した後、およびさまざまなスタイルを簡単に使用できます。

+0

SWEET!それは私のために働いた – Kirk

4

は、以下のようにフォント機能にarial.ttfのフルパスを渡してみてください -

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

はまた、関連するいくつかのリンクを参照してください -

  1. How many fonts are available in Prawn?
  2. 海老のドキュメント - http://rubydoc.info/gems/prawn/0.12.0/frames
+0

ttfファイルへのフルパスの引き渡しが機能していないようです。私はちょうど 'Bad font family'エラーを受け取ります。 – croceldon

+0

完全なエラートレースを投稿してください。他の "ttf"ファイルも試しましたか? – saihgala

+0

Verdana.ttfファイルも同じメッセージで失敗しました。 – croceldon

5

私はこのようなフォントを読み込もうと同じ問題がありました。

@pdf.font_families.update(
    'Arial' => { :normal => Rails.root.join('public/arial.ttf'), 
       :bold => Rails.root.join('public/arialbd.ttf') } 
) 

Rails.root.joinは明示的なStringオブジェクトを返しません。解決策は、式の最後にto_sを追加することです。 によって

@pdf.font_families.update(
    'Arial' => { :normal => Rails.root.join('public/arial.ttf').to_s, 
       :bold => Rails.root.join('public/arialbd.ttf').to_s } 
) 

THER

関連する問題