如何加载Google Fonts默认未返回的额外字符字形?
最优解决方案
首选方案:使用Google Fonts v2 API显式指定math子集
当前Google Fonts v2版本的公共接口仍然支持subset参数,直接将math子集加入你的请求参数即可,请求格式示例如下:
https://fonts.googleapis.com/css2?family=Noto+Serif&subset=latin,latin-ext,cyrillic,greek,vietnamese,math
该请求会保留所有默认返回的字符集,同时追加包含无穷大符号等数学字符的math子集,完全保留Google Fonts自动适配不同浏览器返回最优字体格式的特性,不需要额外修改其他配置。
次选方案:拆分请求自定义补充字族
如果因为特殊限制无法使用v2 API,可通过以下方式避免字体覆盖问题:
- 正常发起默认Noto Serif的字体请求,保留所有默认字符
- 单独请求带
text=∞的字体资源,将返回的@font-face规则中的font-family属性手动修改为自定义名称,比如Noto Serif Extra - 在全局字体配置中将自定义字族放在默认字族之前:
body { font-family: 'Noto Serif Extra', 'Noto Serif', serif; }
这种配置下,无穷大符号会优先匹配自定义补充字族的字形,其他字符仍使用默认的Noto Serif,不会出现字体覆盖问题。
备选方案:预扫描生成全字符text参数
如果你的站点内容是静态可遍历的,可使用字体提取工具扫描全站所有用到的字符,统一拼接为text参数的值提交请求,这种方式不需要修改其他配置,仅适合内容固定的站点。
内容的提问来源于stack exchange,提问作者Jānis Elmeris
相关产品推荐
相关产品推荐

