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