S1.03.1Font fallback layout change设计
字体缺字会触发回退并改变版面
别名: 字体回退 · 缺字回退 · fallback font
概念解释
字体回退导致的版面变化(font fallback layout change)指首选字体无法覆盖某段文本的字符或塑形需求时,文本系统使用后备字体形成局部字形运行,因字体的字面、前进宽度、基线和垂直度量不同而改变外观或占用空间。缺字不一定显示为 .notdef 方框;“看起来有字”也可能已出现局部回退与混合字体运行。稳定回退不同于网页字体异步加载造成的字体交换和布局位移。
机制
文本引擎通常先按文字系统、语言、样式和方向对文本分段,再为字符运行或塑形簇匹配可用字体并进行 shaping;具体顺序因引擎而异,不能简化为逐字符失败后再取一个字形。复杂文字的连写、重排、定位和组合标记要求一个簇由兼容字体整体处理,任意拆开回退可能破坏字形关系。后备字体的 advance width 会改变换行;不同垂直度量在内容驱动行高下可能增高行盒,在固定行高下则可能裁切或重叠。
边界
字体文件宣称覆盖某段 Unicode 范围,不等于所有语言字形、组合序列和 OpenType 特性都正确。字体匹配与回退随文字系统、语言标签、操作系统版本和已安装字体改变,开发机正常不能证明用户设备正常。可变字体轴值、网页字体交换和合成粗体也会造成类似几何变化,但它们不是缺字回退,应分别诊断。
怎么落地
- 为每种支持文字明确首选与后备字体,并核对实际所需字符、组合标记和塑形特性,而非只看字体名称。
- 让后备字体在字面大小、基线与行高上尽量匹配;关键组件不要依赖单一字体下恰好贴边的尺寸。
- 用目标语言语料、姓名、货币符号和罕见但合法字符生成覆盖测试,在每个支持平台截图比较。
- 检查
.notdef方框、局部回退运行和塑形簇完整性,并单独监测网页字体交换;验证无字符缺失、无异常换行或裁切,且按钮和表格行保持可用。