Skip to content

嵌入字体的方法

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 动态创建 stylehead ,以异步形式、绝对路径和冗余加载字体,仅在大体积字体中提供。

无阻塞.js

使用 FontFace API 以动态的、异步的冗余方式加载字体,仅在小体积字体中提供。

英文子集化

提供一个静态的子集化的 WOFF2 文件,其中包含一小部分字符,用于只需要字体的英文字符和数字的情况下,因为此选项只需要加载 10KB 左右的文件,将庞大的 CJK 字体子集化为英文字体,字符如下:

AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890 ,.!?:;-