【发布时间】:2020-09-11 10:36:01
【问题描述】:
我用Arial Black写文字的时候,发现它不能用中文,所以想知道有没有办法判断一个字体是否支持中文
【问题讨论】:
-
我试过'int error_font = p.load_font("Arial Black","", "replacementchar=error");'
-
但它破坏了 pdf
标签: pdflib
我用Arial Black写文字的时候,发现它不能用中文,所以想知道有没有办法判断一个字体是否支持中文
【问题讨论】:
标签: pdflib
关于字体的一般说明:
并非所有字体都包含所有字形。因此,您不能在整个 Unicode 范围内使用单一字体。您应该首先找到符合您的视觉要求并包含字形的字体。许多字体系列对不同的 Unicode 范围有几种规范。您应该首先找到符合您的视觉要求并包含字形的字体。许多字体系列针对不同的 Unicode 范围有多种变体。最好联系您的字体供应商以获取正确的字体文件。或者您可以使用免费但非常完整的字体系列,例如Noto。
当然,您可以使用 PDFlib 检查字体中字形的可用性。这在 PDFlib 食谱主题 glyph availability 中得到了演示:
gid = (int) p.info_font(font, "glyphid", "unicode=" + t.character);
基于此,您可以确定字体是否包含您需要的字形。另请参阅 PDFlib 9.3.0 教程,第 6.6.2 章“字体特定编码、Unicode 和字形名称查询”了解详细信息。
也与您的问题有关,您可以检查后备字体技术以链接多个字体以获得更大的字形集。请参阅 PDFlib 9.3.0 教程,第 6.4.6 章“Fallback Fonts”,以及包含的入门示例 starter_fallback,也可在 PDFlib cookbook 中找到。
我已经尝试过 'int error_font = p.load_font("Arial Black","", "replacementchar=error");
一旦发生异常,您就不能再使用 PDFlib 对象。有关此重要主题的详细信息,请参阅 PDFlib 9.3.0 教程,第 3.1.1 章“异常处理”。 您可以在“doc”目录中的所有 PDFlib 下载包中找到 PDFlib 9.3.0 教程,以及在 PDFlib 9.3 Download page 上作为单独的链接。
【讨论】: