背景
タイトル通り、Prawn で生成した PDF に旧字体が含まれていると文字化けしてしまう現象が発生。
ex. 「高瀬 真守」という名前のユーザー情報を PDF 出力(※「瀬」は旧字体)
ご覧のように上手く出力ができていません...。
原因
フォントの設定に問題がありました。
class PdfeGenerator < Prawn::Document
def initialize
super(page_size: "A4", margin: 20)
font Rails.root.join("app/assets/fonts/mplus-2p-regular.ttf")
end
end
どうやらこの mplus-2p-regular.ttf
というフォントが旧字体に対応していない模様。
これを日本語に特化したフォントである IPA フォント に変更してみたところ、文字化けせずに無事出力されるようになりました。
- font Rails.root.join("app/assets/fonts/mplus-2p-regular.ttf")
+ font Rails.root.join("app/assets/fonts/ipaexg.ttf")
まとめ
特に理由もなく適当に設定したフォントのせいで文字化けを起こしてしまっていたという話です。
技術者である以上、何事も良く調べて吟味するのは大事だなと痛感しました。