You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dompdf v2.0.1使用自定义字体Josefin Sans时空格渲染异常

Dompdf v2.0.1 自定义字体Josefin Sans空格渲染错误排查方案

1. 改用本地字体文件引入

Dompdf对远程Google Fonts的解析常存在字符映射问题,直接下载字体到本地是最稳妥的解决方式:

  • 从Google Fonts官网下载Josefin Sans完整字体包(包含所需字重的ttf/woff文件)
  • 将字体文件放到项目本地目录(比如./fonts/)
  • 在CSS中通过@font-face本地引入:
@font-face {
    font-family: 'Josefin Sans';
    src: url('./fonts/JosefinSans-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}
@font-face {
    font-family: 'Josefin Sans';
    src: url('./fonts/JosefinSans-Bold.ttf') format('truetype');
    font-weight: bold;
    font-style: normal;
}
body {
    font-family: 'Josefin Sans', sans-serif;
}

2. 检查字体文件完整性

部分字体子集可能未包含标准空格字符(ASCII 32),确保下载的是完整字符集的字体文件,而非仅包含部分字符的子集版本。

3. 配置Dompdf的字体与编码选项

在PHP初始化Dompdf时,明确设置字体和编码参数,避免默认解析问题:

require_once 'dompdf/autoload.inc.php';
use Dompdf\Dompdf;
use Dompdf\Options;

$options = new Options();
$options->set('defaultFont', 'Josefin Sans');
$options->set('isHtml5ParserEnabled', true);
$options->set('charset', 'UTF-8');

$dompdf = new Dompdf($options);
$dompdf->loadHtml($htmlContent);
$dompdf->render();
$dompdf->stream('report.pdf');

同时确保HTML头部编码声明正确:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

4. 清理非标准空格字符

检查HTML内容中是否使用了全角空格、不间断空格(&nbsp;)等非标准空格,Dompdf对这类字符的渲染逻辑与浏览器不同。将所有非必要的特殊空格替换为标准ASCII空格。

5. 升级Dompdf版本

v2.0.1存在已知的字体渲染bug,升级到最新稳定版(如v2.0.3及以上)可能直接解决空格渲染异常问题。

内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:40:57