VP导航 VP导航
首页 提交网址

资讯文章 资讯 · NEWS

中文字体把首屏拖慢了两秒:目录站的 font-display、预加载和字体子集该怎么配

2026-10-22 约 2,245 字 预计阅读 6 分钟 yiyunkj

中文字体把首屏拖慢了两秒:目录站的 font-display、预加载和字体子集该怎么配 中

目录站的页面结构天生对字体不友好:首页一屏要摆几十个条目名、分类名、标签,文字密度极高。一旦自定义字体加载慢,用户看到的是一片空白或者先出系统字再猛地跳成目标字,两种都难看。中文字体的体积又比拉丁字体大一个数量级,这个问题在中文站上被放大了好几倍。

目录站中文字体加载策略与 font-display 取值对比示意

图片来源:网络,版权归原作者所有,侵权请联系删除

先搞清楚 FOIT 和 FOUT 是两种病

浏览器拿到 @font-face 之后,字体文件没下载完之前有两种处理方式。一种是先不显示文字,等字体到位再一起渲染,用户看到一段空白,这叫 FOIT(Flash of Invisible Text,隐形文字闪烁)。另一种是先用系统字体把文字画出来,字体到位后再替换,用户看到文字换了个样子,这叫 FOUT(Flash of Unstyled Text,无样式文字闪烁)。

font-display 这个 CSS 属性就是用来选哪种病的:

取值行为目录站适用场景
block先空白等待,超过约 3 秒才降级基本不用,首屏最容易白屏
swap立即用系统字显示,字体来了就换正文、条目名,默认选择
fallback短暂空白(约 100ms),之后用系统字,且超时后不再替换对字体一致性要求不高的页面
optional空白期极短,若字体没赶上首屏渲染就整页不再替换追求 CLS 稳定的页面

swap 解决了白屏,但没解决抖动

很多人填上 font-display: swap 就以为完事了。实测里最常见的情况是:系统字先把一整屏条目名画出来,两秒后字体加载完成,所有文字同时换形,行高、字宽全变,页面往下推了一截。用户正要点某个条目,手指落下去点到了另一个。

这正是 CLS(累计布局偏移)扣分的典型场景。web.dev 的字体显示文档里说得很直接:FOIT 和 FOUT 在自定义字体替换系统字体时,对 CLS 的影响是一样的。swap 只是把白屏问题换成了抖动问题。

要用 optional,就得配 preload

官方给的解法是 preload 配合 font-display: optional:用 <link rel="preload"> 把字体提到最早加载,让它在首屏渲染前到位;同时用 optional 约定「赶不上这次渲染就别换了,下次访问再说」。这样第一次访问可能用的是系统字,但页面不抖,第二次访问有缓存,字体已经在了。

<link rel="preload" href="/fonts/brand-subset.woff2" as="font"
      type="font/woff2" crossorigin>

但同一份文档也提醒:过度使用 preload 会对加载指标产生负面影响,它会抢占带宽,把真正关键的 CSS 和首屏条目数据挤到后面。目录站上最多 preload 一到两个字体文件,多了就是负优化。改完务必用 Lighthouse 前后对比一次,别凭感觉。

中文字体的真正解法是子集化

一套完整的中文字体,woff2 压缩后通常仍有数兆字节。不管 font-display 怎么配,几兆的文件在移动网络下都是灾难。真正有用的动作是把字体砍小:

  • 静态子集:只保留站点实际用到的字。目录站的条目名、分类名、按钮文案、导航文字加起来通常几千字,用 pyftsubset 之类的工具按字表生成子集,体积能降一到两个数量级。
  • unicode-range 分片:按Unicode 区段把字体切成几片,浏览器只下载页面实际命中的那几片。适合条目名里混排多语种、繁体字的目录站。
  • 格式只用 woff2:woff2 的压缩率明显优于 woff 和 ttf,现代浏览器全都支持,没必要再留旧格式的 fallback 分支。

图标字体该退役了

早期目录站喜欢把分类图标做成图标字体,一个字体文件装几百个图标。问题是它同样有 FOIT/FOUT 问题——图标加载慢的时候,条目名前面会出现空白方框或者乱码字符。

更稳的做法是 SVG sprite:把所有图标拼成一个 SVG,页面内联引用。它是 HTML 的一部分,跟着首屏一起渲染,没有额外的字体加载等待,也不会出现豆腐块。图标字体在目录站上基本没有留下来的必要。

最省事的方案:系统字体栈

如果站点对品牌字体没有硬性要求,直接用系统字体栈是最优解:零下载、零 FOUT、零 CLS,首屏最快。

font-family: -apple-system, BlinkMacSystemFont, "PingFang SC",
             "Microsoft YaHei", "Noto Sans CJK SC", sans-serif;

不同操作系统各自渲染成自己最顺眼的那一套,用户反而觉得「这个站很流畅」。真要用品牌字体,就只用在标题和 Logo 上,正文条目名继续走系统字体栈,把风险控制在最小范围。

一条可以直接抄的配置

综合下来,目录站比较稳的字体配置是这样的:

  • 正文与条目名:系统字体栈,不加载任何 web font
  • 标题与品牌位:子集化后的 woff2,font-display: swap,仅 preload 一个文件
  • 对 CLS 极度敏感的落地页:改用 font-display: optional + preload
  • 图标:SVG sprite,不用图标字体
  • 改动后:Lighthouse 跑一次,看 CLS 和 LCP 有没有变差,别只看感觉

字体优化在目录站上的收益,主要不来自「加载更快」,而来自「页面不再抖」。用户点条目的时候页面是稳的,这件事比字体好不好看重要得多。

另外补一句工具层面的变化:Lighthouse 从 13 版开始,原本独立的 font-display 审计被并进了 Font display insight。如果你在升级后找不到原来的那一项,不是站点变好了,是审计换了位置。

本文标签 字体加载优化 CLS布局偏移 首屏性能优化
← 上一篇 分享出去那张卡片:目录站的 og:image 和 T 下一篇 → 统计、广告、客服挂件:目录站上的第三方脚本该怎么加才

— 本文完 —

提交网址

发现好站,欢迎自荐收录

站内搜索

站点统计

  • 今日审核0
  • 已收录站点3744
  • 正常访问3738
  • 失联站点6
  • 累计访问83

网站分类

  • AI工具 0
    AI对话0 AI绘画0 AI写作0 AI编程0 AI音视频0 AI办公效率0
  • 开发编程 0
    前端开发0 后端开发0 移动开发0 开源与代码托管0 数据库0 开发文档与教程0
  • 设计素材 0
    UI设计0 图标素材0 免费图库0 字体下载0 配色工具0 设计模板0
  • 站长工具 0
    网站统计0 SEO工具0 域名与主机0 收录提交0 建站程序0 运维监控0
  • 学习教育 0
    编程教程0 语言学习0 职业技能0 公开课与慕课0 考试题库0 中小学教育0
  • 生活服务 0
    交通出行0 外卖点餐0 房产租房0 医疗健康0 政务办事0 快递物流0
  • 影音娱乐 0
    影视观看0 音乐音频0 游戏资源0 短视频直播0 小说阅读0
  • 电商购物 0
    综合商城0 比价工具0 导购返利0 二手交易0 团购优惠0
  • 综合其他 1
    实用工具0 资源合集0 小众站点0 个人博客0 论坛社区0
  • 新闻资讯 0
    科技资讯8 财经媒体1 行业动态0 社会热点0 综合门户0
  • 资讯文章 130

最新收录

  • 自动抓对方网站信息这件事:目录站的
  • 目录站的季度复盘该看什么:一张能直接
  • 目录站做 A/B 测试会不会被当成作
  • 防盗链别把蜘蛛也挡在门外:目录站图片
  • 收录的网站关停了、域名被卖了:目录站
  • 搜「设计」出不来「设计师」:目录站站
  • 自动翻译出来的目录页该不该放出来收录
  • AI 答案里那条引用链接:目录站怎么

浏览排行

  1. 满分作文网 6
  2. Let's Enhance 3
  3. 淘菜菜 3
  4. MasterClass 3
  5. TypeScript 中文网 3
  6. Zhengziying 3
  7. 得意生活 3
  8. 镇江网友之家 3

联系我们

bQ:12345678

电话:400-8888-888

邮箱:admin@example.com

时间:09:00-21:00

友情链接

车机屋·焊锡条·探兔AI导航·静电测试仪·大学生联盟

关于我们|广告合作|隐私条款|网站地图

原ICP备00000000号-1,@2026

由 Z-BlogPHP 驱动