在 mPDF 中加载自己的字体的问题
Problems to load own font in mPDF
我知道这个问题不是第一次被问到,但所有其他线程都没有帮助我让它工作。
我试图在我的 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 Error - Font is not supported - dejavusanscondensed.
它是从
调用的
mpdf/vendor/mpdf/mpdf/mpdf.php
3809 行
if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) {
throw new MpdfException('mPDF Error - Font is not supported - ' . $family . ' ' . $style);
}
希望有人能帮助我。
干杯
您的代码示例有些奇怪:
- 要能够使用
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/');
In read that version 7 I can load my own font without changing the config_fonts.php
v 7 中没有 config_fonts.php 文件。所有配置更改都可以在构造函数 $config
参数中完成,或者在创建对象后更改 mPDF 实例的 fontdata 属性 - 正如你正在尝试做的那样。见下文。
此外,尝试将您的字体设置附加到 fontData 属性 而不是覆盖其内容:
$mpdf->fontdata['qanela'] =
array(
'R' => "QanelasSoft-Regular.ttf",
'B' => "QanelasSoft-Bold.ttf",
);
您不想覆盖整个 fontdata
数组(这正是您正在做的)。相反,将您的新记录添加到它的末尾。
$mpdf->fontdata['qanelasSof'] = array(
'R' => "QanelasSoft-Regular.ttf",
'B' => "QanelasSoft-Bold.ttf",
);
然后确保您的 TTF 字体文件存储在 ttfonts 目录中。
mPDF 7.x 不支持大写字体。在这种情况下,您必须将您的字体名称重命名为小写
$mpdf->fontdata = array(
"qanela" => array(
'R' => "qanelassoftregular.ttf",
'B' => "qanelassoftbold.ttf",
),
)
我知道这个问题不是第一次被问到,但所有其他线程都没有帮助我让它工作。 我试图在我的 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 Error - Font is not supported - dejavusanscondensed.
它是从
调用的mpdf/vendor/mpdf/mpdf/mpdf.php
3809 行
if (!isset($this->fontdata[$family][$stylekey]) || !$this->fontdata[$family][$stylekey]) { throw new MpdfException('mPDF Error - Font is not supported - ' . $family . ' ' . $style); }
希望有人能帮助我。
干杯
您的代码示例有些奇怪:
- 要能够使用
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/');
In read that version 7 I can load my own font without changing the config_fonts.php
v 7 中没有 config_fonts.php 文件。所有配置更改都可以在构造函数 $config
参数中完成,或者在创建对象后更改 mPDF 实例的 fontdata 属性 - 正如你正在尝试做的那样。见下文。
此外,尝试将您的字体设置附加到 fontData 属性 而不是覆盖其内容:
$mpdf->fontdata['qanela'] =
array(
'R' => "QanelasSoft-Regular.ttf",
'B' => "QanelasSoft-Bold.ttf",
);
您不想覆盖整个 fontdata
数组(这正是您正在做的)。相反,将您的新记录添加到它的末尾。
$mpdf->fontdata['qanelasSof'] = array(
'R' => "QanelasSoft-Regular.ttf",
'B' => "QanelasSoft-Bold.ttf",
);
然后确保您的 TTF 字体文件存储在 ttfonts 目录中。
mPDF 7.x 不支持大写字体。在这种情况下,您必须将您的字体名称重命名为小写
$mpdf->fontdata = array(
"qanela" => array(
'R' => "qanelassoftregular.ttf",
'B' => "qanelassoftbold.ttf",
),
)