为何部分Google Fonts样式表未指定子集?技术咨询
Google Fonts 不同字体@font-face拆分逻辑差异的原因
字体自身的字形存储结构差异
Roboto这类通用无衬线字体的拉丁字符在Unicode码点上分布集中,字形设计统一,单个子集文件就能覆盖绝大多数常用拉丁字符,所以Google Fonts会按标准子集(比如latin)打包,对应范围较宽的unicode-range。而Train One这类装饰性字体,很多字符的字形数据是独立拆分存储的,字符码点分布零散,只能通过极细的unicode-range拆分来匹配每个小字符组对应的字体片段文件。针对资源加载的精细化优化
Roboto有多档字重,每个字重的子集文件体积可控,按子集划分能平衡加载速度和资源占用。但Train One这类字体通常只有单一字重,单字符的字形数据体积更大,拆分成多个小文件后,浏览器只会加载页面实际用到的字符对应的文件,避免一次性加载整个大体积字体,反而能提升首屏加载效率。原始字体文件的授权与结构限制
部分字体的原始文件本身就是按细粒度字符组拆分的,Google Fonts在适配API时会保留这种结构,而非强行合并成大子集,以此避免破坏字体原始的字形数据完整性,同时符合字体授权的相关要求。
内容的提问来源于stack exchange,提问作者Daan van den Bergh
相关产品推荐
相关产品推荐

