这个坑值得记一笔。页面字体文件还是 http 地址,控制台报 blocked,浏览器回退到系统字体,排版明显变形。

原因不止一个,得分开看。字体文件托管在不支持 https 的服务器;CSS 里的 font-face 写了绝对 http 地址;字体 CDN 没有配置证书。

定位字体请求的来源

curl -s https://www.example.com/ | grep -o 'http://[^"]*\.woff2'

接着改成 https 或协议相对地址

src: url('https://cdn.example.com/font.woff2');

末了确认字体响应类型正确

curl -sI https://cdn.example.com/font.woff2 | grep -i content-type

这类问题以前遇到过,但这次的触发条件和上次不一样。

这类改动我都写进变更记录,过两周再出问题时能对上号。

我习惯把每一步的执行时间和结果记在一边,后面复盘省事。

别只看报错消失,验证要多做一步。字体正常加载,页面排版恢复,控制台不再有拦截提示。

提醒一点。字体被拦会导致文字宽度变化,进而引发布局偏移,CLS 指标往往因此超标,却很难联想到字体上。自托管字体时记得同时配置缓存头,否则首屏会多出一次往返。改动前把原配置备份一份,出问题能马上回滚,这比任何技巧都实用。

作者 9823189