Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php TCPDF不显示带Helvetica的希腊字符_Php_Fonts_Pdf Generation_Tcpdf - Fatal编程技术网

Php TCPDF不显示带Helvetica的希腊字符

Php TCPDF不显示带Helvetica的希腊字符,php,fonts,pdf-generation,tcpdf,Php,Fonts,Pdf Generation,Tcpdf,我有一个wordpress插件,它使用TCPDF生成PDF收据。尽管希腊文本显示DejaVuSans为OK,但当字体设置为Helvetica时,它显示问号(??)。 这更像是一个装饰性的问题,因为DejaVuSans有点难看,而且它似乎不支持斜体或强烈的风格。 我检查了tcpdf的fonts文件夹的内容,我可以看到helvetica font确实已安装 欢迎提出任何想法和/或建议。就我所知,这个答案是正确的,但我不是这方面的专家。此外,在提到TCPDF时,我指的是“旧版本”,而不是正在开发的新版

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


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

就我所知,这个答案是正确的,但我不是这方面的专家。此外,在提到TCPDF时,我指的是“旧版本”,而不是正在开发的新版本

为什么会发生这种情况 Helvetica是与大多数PDF阅读器兼容的标准14或核心字体之一。这意味着字体通常可以在PDF中使用,而无需将其嵌入PDF文档中。您可以在中看到核心字体的列表。TCPDF字体目录中的“helvetica.php”文件不是helvetica字体的副本。该文件仅作为字体的说明

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

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

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

转换和嵌入字体在中进行了讨论,并在关于字体转换的相关回答中进行了讨论:

授权字体
许可和嵌入Helvetica字体是一种选择,但这可能会非常昂贵。您可能希望在包括希腊字符搜索过滤器的服务上搜索开放源代码字体。

Helvetica甚至支持希腊字符吗?当然,在我的Macal上也支持。尽管进一步研究这个问题会很有趣,但它不会提供解决方案。即使我找到并安装了与TCPDF兼容的Helvetica字体,也不是所有的网站用户都会为此烦恼。因此,我想我还是坚持使用DejaVuSans。更确切地说:根据ISO 32000-1,所有PDF阅读器都必须支持标准的14种字体(这些字体,或它们的字体规格和合适的替换字体,应可供符合要求的阅读器使用),但仅适用于拉丁编码(“拉丁字符集和编码”),描述Adobe标准拉丁文字字体的整个字符集。该字符集应得到标准14种预定义字体中的Times、Helvetica和Courier字体系列的支持。)@Manos在文档中嵌入字体将允许所有人查看PDF并查看您想要的字符,没有在他们的系统上安装它。TCPDF附带的非标准DejaVuSans字体已被转换,并在每次使用时嵌入到文档中。开发人员已经包含了addTTFfont()方法,因此您可以对TTF格式的任何可用字体执行相同的操作。我已经编辑了我的答案,添加了一些关于查找和转换最适合您的字体的附加信息。