「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 文字を出力できたため、(私の目的では) .html_safe 呼び出しは必要ないことがわかりました。
これは、グリフ アイコンをロードするテキスト呼び出しです。
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" }
}