未使用 tcpdf 自定义字体

Posted

技术标签:

【中文标题】未使用 tcpdf 自定义字体【英文标题】:tcpdf custom font is not being used 【发布时间】:2013-07-27 06:12:04 【问题描述】:

我正在使用 TCPDF 库通过 php 生成 PDF 文件。我想使用自定义字体,所以我使用addTTFfont method 添加我的自定义 TrueType 字体文件。我要添加的字体是"Aller" from fontsquirrel.com

$aller = $pdf->addTTFfont($_SERVER['DOCUMENT_ROOT'].'/includes/fonts/Aller/Aller_Rg.ttf', 'TrueTypeUnicode', '', 32);

这在我的 TCPDF 字体文件夹中创建了 aller_rg.php、aller_rg.ctg.z 和 aller_rg.z 文件。 K_PATH_FONTS 常量指向这个目录。 addTTFfont 方法返回字体的字符串名称。如果出现错误,它将返回 false,因此问题可能不在这里..

然后我尝试使用字体

$pdf->SetFont($aller, '', 16); // or $pdf->SetFont('aller_rg', '', 16);
$pdf->Write(0,"abcdefg",'',0,'L',true,0,false,true,0);

生成的 pdf 没有任何错误。在浏览器预览中查看时,字体显然不是过敏,而只是一种通用的无衬线字体。当我在 Mac 的预览应用程序中打开 pdf 时,使用过敏字体的部分是空白的(不显示文本)。

有人知道我做错了什么吗?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题:

TCPDF 转换后的字体没有显示,但使用以下链接转换的字体显示: http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf

所以我比较了两者,发现 xml-convert.com 使用“TrueType”而不是“TrueTypeUnicode”作为字体类型。对我来说,它可以将参数更改为“TrueTypeUnicode”。试试:

$aller = $pdf->addTTFfont($_SERVER['DOCUMENT_ROOT'].'/includes/fonts/Aller/Aller_Rg.ttf', 'TrueType', '', 32);

【讨论】:

【参考方案2】:

使用这个工具让它工作

http://www.xml-convert.com/en/convert-tff-font-to-afm-pfa-fpdf-tcpdf

它会生成一个 .php、.z 和 .afm 文件,您可以将它们放在 TCPDF 字体目录中。我仍然不确定问题是什么。 addTTFfont() 方法不会创建 .afm 文件,所以可能就是这样?

【讨论】:

以上是关于未使用 tcpdf 自定义字体的主要内容,如果未能解决你的问题,请参考以下文章

如何在 TCPDF 中实现自定义字体

自定义字体未显示在字体系列列表中

Qml FontLoader 未加载自定义字体

Silverlight 中未显示某些自定义字体

浏览器未请求自定义字体

自定义字体未加载到对话框的 listView 中