提示:本问题以及解决方案同时适用于 Firefox Preview 和 Firefox 68 ESR for Android。

全面切换到 Firefox 平台后,Android 平台上的 Firefox Preview 自然成为了我的首选。现代的 UI 设计和不俗的性能,体验上与 Chrome不相上下,而且能够正常渲染 CJK 衬线字体,这可是 Chrome 做不到的。(本站的博文和标题也都是衬线体字)

  • Chrome 下在 Kotobank 查询一个单词

看完我只想说,我想起高兴的事情…

当然我不是说 Chrome 就一定做不到。Chrome 通过硬替换 Noto Serif 为 Noto Serif CJK / Source Han Serif CJK的字体就可以正常渲染。不过,这未免有些蛋疼吧。

当然不要以为用火狐就没有麻烦。(如果不折腾就不会有什么麻烦。)如果你用 Magisk 一类的工具替换了一些字体,却没有在火狐中进行设定的话,你一样会遇到一些蛋疼的问题。举个例子,我用 Magisk 将 Android 默认的 Droid Sans Mono 替换成了 Source Code Pro,结果始终不能渲染,总是会回退到 Roboto 或者是 Noto Sans CJK里面。我以为是 Firefox Preview 的问题,就换上了 Firefox 68 for Android,结果问题依旧。最终只好去 Firefox Preview 的 Repo 提了个issue,第二天得到了回复:

Gecko 寻找字体以来的是字体的元数据(包含有字体名称),也就是不同于 Chrome 和别的 Android 应用,Firefox 是通过字体名称判断字体的。因此,单纯地替换了字体还不算完,还必须得在 about:config 里面设定特定语言的等宽字体,从 “Droid Sans Mono” 改成 “Source Code Pro” 才能真正让字体生效。

在 about:config 中进行设置
在 about:config 中进行设置

同样的,如果你是个火狐用户,还替换了 Roboto/Noto Serif/NotoSerifCJK/DroidSansMono/NotoColorEmoji等字体的时候,请务必先了解到该字体的名称信息,并将其设置写进 about:config 才算最终完成。