ruby – 如何在OS X上使用Prawn的Arial字体?

我试图使用 ruby在OS X上使用Prawn生成一个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应用程序的一部分.

如果我尝试直接加载字体ttf文件,根据Ashish的建议,我得到一个坏字体系列消息:

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'

解决方法

如果您使用:样式选项调用文本,例如
text "Hello World",:style => :italic

那么当时使用的字体需要有一个关联的字体系列,否则你会看到你所看到的“坏字体系列”错误.这个:

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

产生:不良字体系列(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作为字体名称,您可以轻松使用不同的样式.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...