Skip to content
Jackway's Blog
Go back

中文字体加载优化

Updated:

当前站点使用的是落霞孤鹜开源字体(强烈推荐,很适合用于博客站,中文阅读很舒服)

但是字体文件为ttf格式,并且很大有29MB左右,每次进网站加载字体都要很久。

之前博客使用hexo + github pages的时候,文本基本都是静态文件,使用静态的字体压缩(gulp,font-spider等)基本没什么问题。

但是由于github pages在国内感人的加载速度,我就自己写了一个博客和其管理页面集成到我的主站里。我的文章内容是从后端接口拿的,带来的问题就是静态的字体压缩已经不能满足我了。

字体分包

经过在网上一番搜索了解到,Google Fonts提出可以采用机器学习等手段,将字体拆分成合适的粒度,比如把一个 4MB 的字体包分成 100 个 40KB 的字体包,这样的话,一般网页中使用到的中文也只是一部分字体,只需要加载多个资源包就能完全覆盖。同时,就算网页中有很多生僻字,需要付出的代价也只是多加载几个资源包。

并且✨中文网字计划已经提供了在线分包工具,可以将一个大的ttf字体包,分成很多个大小只有几十KB的woff2包,这样按需加载就快多了。

在现代字体中,WOFF2 是最新的字体格式,支持的浏览器最广,也提供了最好的压缩率。由于它使用 Brotli 算法,WOFF2 比 WOFF 格式的压缩效果提高了 30%,这意味着需要下载的数据更少,因此可以获得更快的性能表现。

image.png

一个字体在经过 在线字体分包 或者 代码工具分包 后,会得到成品文件夹,里面包含了细分 woff2 文件、CSS 索引文件、reporter.json 等静态文件。

网站引用

1. 导入CSS文件

<link rel="stylesheet" href="/font/style.css">

2. 使用字体名称

p{
    font-family: 'LXGW Wenkai Screen'; // 这个名称你需要到`result.css`文件中查看
}

我用的tailwind css,在tailwind.config.cjs中配置

theme: {
        fontFamily: {
            'font-lxgw': "LXGW WenKai Screen"
        },
        extend: {},
}

参考

中文网络字体最佳实践|✨中文网字计划 (chinese-font.netlify.app)

网页中文字体加载速度优化 - 字体分包

字体设置以及字体优化


Share this post:

Previous Post
汉中清明节攻略
Next Post
MetaGPT学习 - 相关概念