我有一个 ruby 脚本来生成带有一些文本的 pdf 文档。文本中包含表情符号。
文本第一行的问题是它打印了三个表情符号,它们被看起来像十字的东西隔开,而实际上它们应该是一个表情符号(三个成员的家庭)。
第二行的问题是它只打印了一个正方形而不是预期的表情符号(嘘脸)。 我试过其他一些字体,但还是不行。这些是字体:
似曾相识
IPAM
NotoSans-Medium
我找不到问题
有什么遗漏吗?
我做错了什么吗?
gems 已安装,字体在正确的位置
require "prawn"
require "prawn/emoji"
require "prawn/measurement_extensions"
$pdf = Prawn::Document.new(:page_size => [200.send(:mm),200], :margin => 0)
$pdf.font "./resources/Montserrat-Medium.ttf"
st = "\u{1F468}\u200D\u{1F469}\u200D\u{1F466}".encode("UTF-8")
st2="\u{1F92B}".encode("UTF-8")
$pdf.draw_text st,:at => [10, 100]
$pdf.draw_text st2,:at => [10, 80]
$pdf.render_file "test.pdf"
最佳答案
结果 Prawn 不知道如何解析连接的表情符号(由\u200D 连接的一组简单表情符号组成的表情符号)。 Prawn/emoji 应该这样做,但是用于识别 emoji 的正则表达式存在一个错误,导致连接的 emoji 被单独绘制。
索引和使用的图片库也有点过时了。
解决方案是在 Prawn/表情符号源代码中替换 Drawer 类中的 @emoji_index.to_regexp 为正则表达式,该正则表达式可以识别加入的表情符号并更新表情符号库,然后运行更新索引的任务,然后你很高兴去。
字体与它无关。
关于ruby - Prawn with some emojis for ttf-font not rendering text correctly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52339250/