跳转到主要内容

字体没生效?一套排查顺序

适合谁看:网页字体「好像没用上」「只有部分字变了」「变粗了」,想自己查原因的开发者。

文风网页字体的专门问答见《文风网页字体的专门问答见《开发常见问题》。本页是通用的排查顺序,自托管、第三方字体也适用。

1. 看渲染字体

Chrome 或 Edge:开发者工具 →「元素」→ 选中文字 →「计算样式」面板拉到底,看「渲染字体(Rendered Fonts)」。它列出这段文字实际用了哪些字体、各显示了多少个字。

Firefox:开发者工具 →「检查器」→「字体」面板,可以看到页面用到的字体和来源。

  • 显示的是系统字体 → 网页字体没加载或名字没对上,继续往下查;
  • 网页字体和系统字体各占一部分 → 缺字或分片没加载完,见第 4 步。

2. 看网络请求

「网络」面板筛选「字体」和「CSS」,刷新:

看到的情况 可能原因
没有任何字体请求 font-family 名字和 @font-face 不一致;或页面上没有文字用到它
404 地址拼错,大小写不对,或子集不存在
请求被拦截,控制台有 CORS 报错 字体服务器没有返回允许跨域的响应头
200,但文件很小或类型不对 服务器返回了错误页面,打开地址看看内容

3. 核对名字

font-family 里写的名字必须和 @font-face 里声明的完全一致(大小写、空格、连字符)。用第三方 CSS 时,打开 CSS 复制名字,不要凭印象写。

4. 部分字是别的字体

5. 字被人工加粗或拉斜

6. 用控制台确认

document.fonts.check('16px "字体名"')   // true 表示已可用
[...document.fonts].map(f => [f.family, f.weight, f.status])

7. 清缓存再试

字体更新后,浏览器和服务器缓存可能还是旧文件。用无痕窗口或「停用缓存」再试一次。

参考资料