如何解决mPDF中font-weight参数无法修改的问题?
mPDF中font-weight不生效的原因及解决方法
核心问题
你遇到的font-weight:600不生效,本质是mPDF没有正确加载对应字重的Montserrat字体文件——mPDF不会自动识别web字体或系统字体,必须手动注册包含目标字重的字体文件,否则会 fallback 到字体的默认字重。
具体解决步骤
1. 准备对应字重的字体文件
确保你拥有Montserrat字体的600(半粗体)版本文件,通常文件名类似Montserrat-SemiBold.ttf或Montserrat-600.ttf。将该文件放到mPDF的字体目录(默认是mpdf/fonts/,也可以自定义目录)。
2. 在mPDF中注册字体及对应字重
在初始化mPDF的代码中,使用AddFont()方法注册Montserrat的不同字重,示例:
// 初始化mPDF $mpdf = new \Mpdf\Mpdf(); // 注册常规字重(400) $mpdf->AddFont('Montserrat', '', 'Montserrat-Regular.ttf'); // 注册600字重(半粗体) $mpdf->AddFont('Montserrat', '600', 'Montserrat-SemiBold.ttf');
注意:第二个参数是字重标识,必须和CSS中的font-weight值对应;第三个参数是字体文件的实际文件名,要和你放入字体目录的文件完全一致。
3. 验证CSS与字体注册的匹配性
确保你的CSS中font-weight:600和注册时的字重标识完全对应。如果注册时用的是'B'(对应粗体,通常是700),那需要把CSS中的font-weight改成700,或者调整注册代码把半粗体文件映射到'600'。
额外排查点
- 检查字体文件名拼写是否正确,大小写是否和注册代码一致(mPDF对文件名大小写敏感)。
- 若使用旧版mPDF,数字字重支持可能不完善,可尝试将CSS的
font-weight:600改为font-weight:bold,同时注册时把半粗体文件映射到'B':$mpdf->AddFont('Montserrat', 'B', 'Montserrat-SemiBold.ttf'); - 排查是否有其他CSS规则通过更高优先级覆盖了
font-weight,可以临时添加!important测试(不推荐长期使用,建议调整选择器优先级):.text-bold22 { font-weight: 600 !important; /* 其他样式 */ }
内容的提问来源于stack exchange,提问作者Ренат Шангареев
相关产品推荐
相关产品推荐

