'raw' 方法不是 Prawn 方法;它是 Rails 的OutputSafetyHelper 方法。我遇到了和你一样的错误(我在模型中运行 Prawn 代码,而不是在视图中)但是在查看#raw 的源代码后,我意识到它所做的只是调用 String#html_safe。我替换了你原来的:
text raw "unicode_for_\e501"
和
text "unicode_for_\uE501".html_safe
请注意以下事项:
- 你想要我们的Unicode代码E501,你需要在它之前用\u转义。
- 您必须在字符串周围使用双引号以确保 \u 被正确拾取。
- .html_safe 是一种可以在字符串上调用的方法。
双引号和 \u 转义很重要,但我发现(出于我的目的)我不需要 .html_safe 调用,因为没有它我可以打印 Unicode 字符。
这是我的文本调用,它加载一个字形图标:
pdf.font("vabicons") do
pdf.text "\uE61d"
end
作为参考,我正在从IcoMoon.io加载自定义字体,并且所有可打印字符都必须由 Unicode 引用。请记住,您需要正确声明字体,否则可能无法显示格式正确的文本。
这是我的字体声明:
sym = Pathname.new( Rails.root.join('app', 'assets', 'stylesheets', 'fonts', 'vabicons.ttf').to_s )
pdf.font_families["vabicons"] = {
:normal => { :file => sym, :font => "Regular" }
}