22 条回复  ·  2498 次点击
radishzz 小成 2025-2-21 10:55:27
这事很值得说道,楼上的方法我都有使用。因为最近在手搓一个博客主题,我在里面放了 4 款自定义字体,经过优化以后 pagespeed 依然满分。 简单说下中文字体的优化过程: 1 、下载字体文件转 ttf 格式 2 、用 Fontmin 提取 3500 常用汉字,或 7000 通用汉字。一般 3500 足矣。 3 、用 cn-font-split 进行字体切片,切成大量 woff2 子集,以应对动态变化的字体。官网子集只能切成 75kb 大小,本地运行可以自定义子集大小,我切成平均 25kb 大小。 4 、再把 UI 中的静态字符,例如“主页”“返回”等,单独提取一个 UI 子集出来,并列出对应的 unicode 。5 、在 head 中给 UI 子集设置一条 preload ,确保 UI 字体提前加载。大量切片不能预加载。 6 、引入 fontface 并设置好 unicode 范围,再设置下 fontfamily 就可以了。 另外,以上是静态字体的处理方式,如果是可变字体,处理方式又有点不一样。你这款字体应该是静态,够用了。 这是我的处理后的字体仓库,里面有 3500 常用汉字 https://github.com/radishzzz/astro-theme-retypeset/tree/master/public/font
skallz 小成 2025-2-21 11:10:10
@MingLovesLife 一般首次进入的页面,不太会有完全不可控的动态文字内容,因为你要保证用户首次进入网站时的加载速度,尽可能保证内容静态,而等到用户进入读取网站内容时,基本字体文件都加载好了,以后优先从 indexeddb 读取字体文件即可,不用重复网络加载了
skallz 小成 2025-2-21 11:11:31
@MingLovesLife 当然如果有那种媒体流网站确实会有这种问题,首次进入的页面内容就是动态的,这种就老老实实用系统字体吧,哈哈
123
返回顶部