Moposx的部落阁

解決 Firefox Android 版無法正常識別替換字體的問題

字数统计: 462阅读时长: 1 min
2020/04/07 Share

提示:本解決方案同時適用於 Firefox Preview 和 Firefox 68 ESR for Android。

全面切換 Firefox 平台後,Android 平台上的 Firefox Preview 自然成為了我的首選。現代的 UI 設計和不俗的性能,體驗上與 Chrome 可謂是不相上下,而且能夠正常渲染 CJK 襯線字體,這可是 Chrome 做不到的。如果你沒看懂我在說甚末,請看下圖:

Chrome 顯示明體字效果
Firefox 顯示明體字效果

相信你已經看出區別來了。
當然我不是說 Chrome就一定無法做到。Chrome 通過 Noto Serif 為 Noto Serif CJK / Source Han Serif CJK 的字體,或者是通過 webfont 就可以正常渲染宋體字。但從體驗上來說,還是原生無需折騰最為便捷。

不過不要以為火狐上就沒什麼字體問題。(當然,這是給喜歡換系統字體的朋友們說的)如果你用 Magisk 一類的工具替換了系統內的字體,卻沒有在 Firefox 進行對應的設置的話,你會遇到一些很令人不爽的問題。舉個例子,我用 Magisk 將 Android 預設的 Droid Sans Mono 替換為 Source Code Pro,结結果在 Firefox 內始終不能正確渲染,總是會回退到 Roboto 或者是 Noto Sans CJK。我以為是 Firefox Preview 的問題,就換 Firefox 68 for Android 試了試,結果問題依舊。最終只得去 Firefox Preview 的 Repo 提了个issue,第二天得到了回覆:
#9723 Replaced monospaced font won't be rendered

Gecko 尋找字體依賴的是字體元數據(含有字體名稱),不同於 Chrome 和一些 Android 应用的按照文件名尋找的方式。因此,在替換完字體文件之後,还必須得在 about:config 裏面設定對應語言代碼所用的字體名。依然用我的例子,在 Firefox 裏面,應該把 “Droid Sans Mono” 改成 “Source Code Pro” 才會真正使字體生效。
在 Firefox 內進行字體設置

CATALOG