5

我正在使用 pdfkit 在 nodewebkit 应用程序中动态生成 PDF 文档。PDF 包含通过 HTTP 请求来自远程源的人们的评论。

它工作得非常好,但是现在我发现当评论是日文、中文、阿拉伯文等时,它不能正确呈现,而且我无法知道评论将以什么语言出现——事实上我是从世界各地收集他们。

我知道我需要使用应该包含正确字符的正确字体,如此所述。我发现了这个“google noto”开放字体,它拥有一切,但问题是没有一个包含所有语言的 TTF 文件,而且字体文件不能限制为 65K 字形。

我正在尝试找到一种解决方案,它可以使用 pdfkit 在 PDF 中以(几乎)任何语言呈现文本,而无需编写复杂的语言识别工具,我觉得这有点过头了。

任何想法和建议将不胜感激。

更新:使用pdfkit 的作者的字体管理器来替换字体。此外,您可能想尝试 phantomJS——不过我还没有这样做。如果您有同样的问题,请在评论中查看@levi 的详细回复。希望能帮助到你。

4

1 回答 1

1

这是一个想法。下载最流行语言的所有字体。将它们添加到列表中,并按最受欢迎的方式对其进行排序。Foreach 注释,获取字符串中 n 个随机字符的 unicode 值。Foreach 字符,如果代码 > 127(ASCII 范围)注释可能不是英文。使用opentype.js,逐个解析字体文件,foreach字体,检查cmap表是否存在所有采样字符代码的字形。如果有,则选择该字体,并缓存 unicode 代码与字体之间的映射。否则,请尝试下一个字体。

经过进一步考虑,似乎 TTF 文件通过 UnicodeRange字段提供了有关它们支持的 unicode 范围的信息。因此,也许您可​​以在每种字体与其支持的 unicode 范围之间建立映射,并使用它来选择正确的字体,而不是在运行时解析每种字体。

于 2014-12-25T20:35:19.803 回答