问题描述
我们的用户给了我们表情符号和许多其他奇怪的字符,内置的Helvetica无法处理。 Google的Noto字体本身也不行-我需要弄清楚如何在HexaPDF中声明Noto字体家族,而我不知道如何使用给定的文档来做到这一点。 OpenSans是一种改进,但我仍然希望字形覆盖面更多。
更新:
我使用此方法设置字体:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a id="12" class="addToCart">Item 12</a><br />
<a id="13" class="addToCart">Item 13</a>
<div class="cart--counter">**</div>
<br />
<div id="cart"></div>
<br />
<div id="cart_button" class="hidden">cart button</div>
但是,没有Noto字体可用于此操作-我会遇到类似“缺少字形-'A'”的错误
我能做的最好的就是使用OpenSansEmoji,并用以下代码块替换丢失的字形:
def self.pdf_summary_font
@@pdf_summary_font ||= File.open(Rails.root.join('public','OpenSansEmoji.ttf'),'r')
end
canvas = page.canvas(type: :overlay)
canvas.font(self.class.pdf_summary_font,size: 10)
解决方法
看看https://hexapdf.gettalong.org/documentation/reference/api/HexaPDF/index.html和配置选项“ font_map”。这使您可以声明任何TrueType文件并使用它。
您还可以直接通过Canvas#font
方法使用字体文件的路径。
如果您需要覆盖多种字符,则需要使用覆盖所有字符的单个字体,the fonts included in this ZIP file中的一种可能应该可以工作(Google表示582种语言,包括237个区域)。