跳到主要内容

字体(Fonts)

概览(Overview)

运行时字体策略通常服务于两类需求:

  1. 本地化(Localization)
  2. 缩减 .riv 体积(把大字体移出内嵌资源)

配合资源加载机制可实现运行时换字库:


Fallback Fonts(回退字体)

当主字体缺字形(glyph)时,fallback font 可避免“文字空白/方块”。

常见触发:

  • 字体不覆盖目标语言
  • 字体子集化后缺字
  • 用户输入含特殊字符

平台差异

Web

Web 不支持“读取系统字体文件作为 runtime fallback”,因为浏览器安全模型限制 canvas 访问本地系统字体资源。
因此通常只能使用你显式提供给 Rive 的字体。

iOS / Android

支持 fallback。平台会按字重、样式等策略选合适字体。

在 iOS/Android,fallback 指定的字号通常会被平台匹配策略接管,不一定严格按你传入的 size 生效。


Apple(摘要)

Apple runtime 支持:

  • 静态 fallback 列表
  • 回调式 fallback(按 style / weight 动态返回)

适合复杂国际化项目按语种与字重动态匹配。


Android(摘要)

Android runtime 支持 FontFallbackStrategy 等机制:

  • 可按 weight 返回候选字体集合
  • 可结合系统字体查询 API
  • 运行时按顺序尝试匹配可用 glyph

实践建议

  1. 先定义“主字体 + 回退链”
  2. 语言分层:拉丁/中日韩/阿拉伯等分别准备 fallback
  3. 字体资源做缓存,避免频繁 decode
  4. 与 Data Binding 文本更新联动测试,确保极端输入可显示
  5. 在低端设备上评估字体切换时的内存峰值

常见问题

Q1:为什么 Web 和原生显示不一致?

通常是因为 Web 没有系统 fallback 能力,或提供字体集合不同。

Q2:是否一定要内嵌字体?

不一定。若体积敏感,建议 Referenced + 运行时加载。


相关文档