深色模式
嵌入字体的方法
ZSFT 中有五大嵌入方法: 常规 CSS 、HTML 强化、高级冗余.js 、无阻塞.js 和 英文子集化,当然,前五个实际上都是编写好的代码,可以自己实现。
WARNING
部分字体不支持某些方法,在详情页中 “嵌入字体” 模块将不会提供。
对比
方法 | 无阻塞 | 无闪烁 | 高优先级 | 灾备 | 完整字库 |
---|---|---|---|---|---|
常规 CSS | ❌ | ✅ | ✅ | ⭕ | ✅ |
HTML 强化 | ✅ | ❌ | ❌ | ✅ | ✅ |
高级冗余.js | ✅ | ❌ | ❌ | ✅ | ✅ |
无阻塞.js | ✅ | ❌ | ❌ | ✅ | ✅ |
英文子集化 | ❌ | ✅ | ✅ | ✅ | ❌ |
⭕ 代表部分字体支持。
高优先级代表加载字体的时机更早,但容易导致主内容渲染阻塞。
灾备域
FontsAPI 由 L1 域 fontsapi.zeoseven.com
直接提供并在意外情况时 307 重定向至 L2 域。
L2 域(灾备域) fontsapi-storage.zeoseven.com
会始终启用,也可以在代码中直接使用 L2 域来加载(但通常只是用作备用回退加载),虽然 L2 域在过往的稳定性表现极佳,但 L2 域在中国大陆的性能仍待提升。
常规 CSS
这是最通用也是推荐的方法,任何字体都会提供此选项,可以将它使用在 .css 文件或 HTML 的 style
中。
HTML 强化
此选项可以解决常规 link
加载 CSS 阻塞渲染的问题,但可能导致字体闪烁,同时使用 noscript 标签确保兼容性。仅在大体积字体中提供。
高级冗余.js
使用 Fetch API
动态创建 style
到 head
,以异步形式、绝对路径和冗余加载字体,仅在大体积字体中提供。
无阻塞.js
使用 FontFace API
以动态的、异步的冗余方式加载字体,仅在小体积字体中提供。
英文子集化
提供一个静态的子集化的 WOFF2 文件,其中包含一小部分字符,用于只需要字体的英文字符和数字的情况下,因为此选项只需要加载 10KB 左右的文件,将庞大的 CJK 字体子集化为英文字体,字符如下:
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890 ,.!?:;-