TCPDF 未使用 Helvetica 显示希腊字符

Posted

技术标签:

【中文标题】TCPDF 未使用 Helvetica 显示希腊字符【英文标题】:TCPDF not showing greek charactes with Helvetica 【发布时间】:2018-07-27 07:18:57 【问题描述】:

我有一个 wordpress 插件,它使用 TCPDF 生成 PDF 收据。尽管 DejaVuSans 的希腊文本显示 OK,但当字体设置为 Helvetica 时,它显示问号 (???)。 这更像是一个外观问题,因为 DejaVuSans 有点丑,而且它似乎不支持斜体或强烈的样式。 我检查了 tcpdf 的字体文件夹的内容,我可以看到确实安装了 helvetica 字体。

欢迎任何想法和/或建议。

【问题讨论】:

Helvetica 甚至支持希腊字符吗? 嗯,在我的 Mac 上可以 【参考方案1】:

据我所知,此答案是正确的,但我不是该主题的专家。另外,我在提到 TCPDF 时指的是“旧版本”,而不是正在开发中的新版本。

为什么会这样

Helvetica 是标准 14 或核心字体之一,应该与大多数 PDF 阅读器兼容。这意味着这些字体通常可以在 PDF 中使用,而无需将其嵌入 PDF 文档中。您可以在TCPDF documentation 中看到核心字体列表。 TCPDF 字体目录中的“helvetica.php”文件不是 Helvetica 字体的副本。该文件只是对字体的描述,为described here。

使用这些核心字体的缺点是您依赖于每个用户的 PDF 阅读器中包含或安装在他们的系统上的字体版本。根据Wikipedia article,一些 PDF 阅读器会替换相似的字体,这些字体通常会有不同的字符集。我认为这样做是为了节省非开源字体的许可费用。

在您的情况下,我猜您的 PDF 阅读器使用的字体与您计算机上其他地方安装的字体不同。它可能使用了不是由 Linotype Design Studio 设计的Helvetica® 字体的替代字体。

解决方案

我以前也遇到过类似的情况,通过在文档中嵌入免费的开源字体解决了。这包括创建永远不会安装在用户计算机上的自定义字符。 PDF 阅读器将使用文档中嵌入的字体来呈现 PDF。嵌入过程要求您首先使用 TCPDF addTTFfont() 方法转换字体的 TTF 文件,然后再使用 TCPDF 生成文档。

在TCPDF documentation 和有关字体转换的相关答案中讨论了转换和嵌入字体:https://***.com/a/19394545/9356981

许可字体

许可和嵌入 Helvetica 字体是一种选择,但这可能会非常昂贵。您可能希望在 https://fonts.google.com 等服务上搜索开源字体,其中包含希腊字符搜索过滤器。

【讨论】:

虽然进一步调查这件事会很有趣,但它不会提供解决方案。即使我找到并安装了与 TCPDF 兼容的 Helvetica 字体,也不是所有网站用户都会打扰。所以我想我被 DejaVuSans 困住了。 更准确一点:根据 ISO 32000-1,所有 PDF 阅读器都必须支持标准的 14 种字体(这些字体,或者它们的字体规格和合适的替代字体,应可用于符合标准的阅读器。)但仅适用于拉丁编码(“拉丁字符集和编码”,描述 Adob​​e 标准拉丁文本字体的整个字符集。此字符集应受 Times、Helvetica、和 Courier 字体系列,属于标准的 14 种预定义字体)。 @Manos 在文档中嵌入字体将允许每个人查看 PDF 并按照您的预期查看字符,而无需在他们的系统上安装它。 TCPDF 自带的非标准 DejaVuSans 字体已经转换好,每次使用时都会嵌入到文档中。开发人员已包含 addTTFfont() 方法,因此您可以对任何 TTF 格式的可用字体执行相同操作。我已经编辑了我的答案,并提供了一些关于查找和转换最适合您的目的的字体的附加信息。

以上是关于TCPDF 未使用 Helvetica 显示希腊字符的主要内容,如果未能解决你的问题,请参考以下文章

未使用 tcpdf 自定义字体

希腊语本地化未显示在应用商店中

在视图中使用表时的 TCPDF“未定义索引:cols”

php tcpdf怎么使用中文乱码

tcpdf 中的 HTML 实体

TCPDF 创建 PDF 耗时太长,此时如何显示加载效果