【问题标题】:pdflib - Is there a way to tell if a font supports Chinesepdflib - 有没有办法判断字体是否支持中文
【发布时间】:2020-09-11 10:36:01
【问题描述】:

我用Arial Black写文字的时候,发现它不能用中文,所以想知道有没有办法判断一个字体是否支持中文

【问题讨论】:

  • 我试过'int error_font = p.load_font("Arial Black","", "replacementchar=error");'
  • 但它破坏了 pdf

标签: pdflib


【解决方案1】:

关于字体的一般说明:

并非所有字体都包含所有字形。因此,您不能在整个 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 上作为单独的链接。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多