F4.15.2FOIT versus FOUT设计

长时间空白等待字体会比先用回退字体展示更损害体验

别名: FOIT · 隐形文本闪现 · 空白等字体

概念解释

阻塞绘制时,字的位置在,墨是透明的,这段叫隐形文本闪现(FOIT, flash of invisible text)。先用后备字体画出来,自定义字体到了再换,叫 FOUT(flash of unstyled text)。等几秒空白,人会以为正文没加载、页面坏了;先看到「不太对的字体」,人知道字在,只是脸还没换好。长时间空白的伤害大于换脸那一下——看不见的等待比难看的等待更像故障。

机制

阅读任务的第一步是确认「这里有字」。FOIT 把这一步拿走,只留下与字同高的空洞,按钮像没标签,标题像没标题。超时三秒在实验室里不长,在首屏上已经够用户返回或重试。FOUT 保留确认,付出的是一次样式跳变。人能解释跳变(「字体刚加载完」),不能解释空白(「是不是没网」)。阻塞期越长,FOIT 越像宕机;弱网、字体文件大、一次拉好几张字重时,阻塞被拉到以秒计。这不是审美偏好,是故障归因:空白被归到系统坏了,换脸被归到还在加载。

边界

字标、单个品牌词,空白几十毫秒往往看不出来,FOIT 的伤害接近零;一屏正文不行。用户已经读过缓存里的页面、字体也在缓存里,两条路都不会闪。极慢网上 FOUT 会长时间停在后备字体,若后备字体缺字或可读性差,可见但不可读,伤害会反超——那是后备字体选错,不是「应该改回空白」。动画或骨架屏若已经在表达「内容将至」,FOIT 叠加上去是双重空洞。

怎么落地

  • 正文和按钮标签不要走长时间阻塞;宁可先用系统字体出现。
  • 在弱网档位录首屏:从进入到第一个可读词的时间。FOIT 路径上这段时间里屏幕没有字;把它和 FOUT 路径比,通常立刻能看出哪条像故障。
  • 字体文件拆字重、子集化,缩短自定义字体到达时间,让 FOUT 的换脸窗口变短,而不是靠加长阻塞去赌文件先到。

延伸

  • 同组F4.15.1 自定义字体加载完成前的文本呈现方式需要显式策略 · F4.15.3 回退字体与目标字体的度量差异会造成加载后的布局跳动 · F4.15.4 网络字体加载失败时系统字体应作为兜底而非留白
  • 相邻F4.07 字体选择 · E6.07 骨架屏
  • 站内检索FOIT · FOUT · flash of invisible text

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/F4.15.2