hooozen / hexo-theme-tranquility

致远是一款 Hexo 主题,专门为个人主页及多学科领域博主设计
https://theme.hozen.site/tranquility/
MIT License
169 stars 14 forks source link

生成 font 文件存在问题,部分字符字体存在问题导致显示时字符丢失 #25

Closed Modnars closed 1 year ago

Modnars commented 1 year ago

需求

在使用 hexo 生成静态文件及字体子集文件后,存在部分字符的字体丢失,致使网页显示时字符丢失。 目前需要开发者确定为什么部分字符会丢失。

bug 原因推测及复现场景

23 应该也是类似的问题,只是当时在执行 hexo clean 以及新的 hexo g 之后,加上文档内容存在变化,所以“丢失的字符”变了,使得当时没有发现出现了“新的丢失的字符”。

也就是说,这个 bug 难以复现的一个原因是,文档的内容变化时,其“丢失的字符”往往也会发生变化。当我的字符集如下时,网页丢失的字符包括“大写字符 M”(如图,可以看到 HTML 文件是包括字符 M 的,但显示时这个字符丢失了)。

image

此外,对于主题作者 hooozen 的网站页面,也是存在这个问题的 https://www.hozen.site/tags/CSS/

image

由此可见,这个 bug 的一些特征如下: 1、部分字符丢失基本稳定出现,但具体丢失的字符和字体字符子集有很大关系 2、补充 1,当中英文字符(或者说 ASCII 字符)同时出现时,英文字符丢失的场景较多(不确定是不是必然的,但可以作为一个定位方向)

其他类似 ISSUES 参考

23

19

hooozen commented 1 year ago

非常感谢反馈! 我review了代码,怀疑是使用开源库 opentype.js 时从源字体引入了一些带有副作用的属性导致的,已经在 main 分支上修复 f814c72d52a15351a9fb4026e21244f640770e82,请查看. 之前一系列的字体问题估计也是由于这个原因造成的,再次感谢反馈!

Modnars commented 1 year ago

我刚刚重试了一下,对于我使用到的几种字符类型:

进行了回归,目前暂未再次发现字符丢失的问题。

感谢开发者的及时反馈与修复。👏