【问题标题】:Problems to load own font in mPDF在 mPDF 中加载自己的字体的问题
【发布时间】:2018-02-11 13:53:48
【问题描述】:

我知道这个问题不是第一次被问到,但所有其他线程都没有帮助我让它工作。 我试图在我的 mPDF 调用中获得我自己的字体工作。 在阅读该版本 7 时,我可以在不更改 config_fonts.php 的情况下加载我自己的字体。这是我的尝试:

$mpdf = new \mPDF('utf-8','A4','');

$mpdf->fontDir = './assets/fonts/';
$mpdf->fontdata = array(
    "qanela" => array(
        'R' => "QanelasSoft-Regular.ttf",
        'B' => "QanelasSoft-Bold.ttf",
    ),
);

$mpdf->SetFont('qanela');

使用此代码我收到错误消息

mPDF 错误 - 不支持字体 - dejavusanscondensed。

它是从

调用的

mpdf/vendor/mpdf/mpdf/mpdf.php

在第 3809 行与

if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) { throw new MpdfException('mPDF 错误 - 不支持字体 - ' . $family . ' ' . $style); }

希望有人可以帮助我。

干杯

【问题讨论】:

  • 我没有看到你的代码和错误之间的关系,这是关于完全不同的字体?
  • 嗨,我不知道。我不在任何地方使用 dejavusanscondensed。我认为这个错误来自我加载新字体的数组。
  • 我认为 DejaVu 是标准字体,它应该一直存在。
  • 我将 DejaVu 字体复制到我自己的字体文件夹中,但它没有改变任何错误。

标签: php fonts mpdf


【解决方案1】:

您的代码示例有点奇怪:

  • 要能够使用fontDir 属性,您必须使用mPDF 7.x
  • 您创建的 mpdf 实例 new \mPDF 表明 6.x - 7.x 具有命名空间签名 new \Mpdf\Mpdf()
  • 在 6.x 中,您可以通过设置 _MPDF_SYSTEM_TTFONTS 常量来设置自己的字体目录:

define('_MPDF_SYSTEM_TTFONTS', './assets/fonts/');


在阅读版本 7 时,我可以在不更改 config_fonts.php 的情况下加载自己的字体

v 7 中没有 config_fonts.php 文件。对配置的所有更改都可以在构造函数 $config 参数中完成,或者在创建对象后更改 mPDF 实例的 fontdata 属性 - 正如您尝试做的那样。见下文。


另外,尝试将字体设置附加到 fontData 属性,而不是覆盖其内容:

$mpdf->fontdata['qanela'] = 
    array(
        'R' => "QanelasSoft-Regular.ttf",
        'B' => "QanelasSoft-Bold.ttf",
    );

【讨论】:

  • 嗨,谢谢你是对的,我使用的是 6.1 版。我认为我使用 v 7 的时间。但它也在 Beta 中也解释了为什么文档停止在版本 6。
  • 7.x 的文档正在其 github repo github.com/mpdf/mpdf.github.iodevelopment 分支中准备。不太舒服,但那里可以找到信息。
【解决方案2】:

您不想覆盖整个 fontdata 数组(这就是您正在做的事情)。相反,请在其末尾添加您的新记录。

$mpdf->fontdata['qanelasSof'] = array(
    'R' => "QanelasSoft-Regular.ttf",
    'B' => "QanelasSoft-Bold.ttf",
); 

然后确保您的 TTF 字体文件存储在 ttfonts 目录中。

【讨论】:

    【解决方案3】:

    mPDF 7.x 不支持大写字体。在这种情况下,您必须将字体名称重命名为小写

    $mpdf->fontdata = array(
        "qanela" => array(
            'R' => "qanelassoftregular.ttf",
            'B' => "qanelassoftbold.ttf",
        ),
    )
    

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多