我正在 PureOS(~= Debian 主要测试)上运行 PureBrowser(~= Firefox ESR 52.8.0)并已fonts-noto-color-emoji-0~20180424-2
安装。
当我访问时https://en.wikipedia.org/wiki/List_of_Emojis我观察到:
- 一些表情符号以颜色呈现(如预期)
- 一些表情符号呈现为线条艺术,而不是全彩
- 一些表情符号呈现彩色,但太大了
- 缺失的表情符号显示为“豆腐”(如预期)
运行后这种情况仍然存在fc-cache -f -v
。
如果我将该文本复制并粘贴到文本编辑器 (gedit) 中,表情符号将按预期显示(或者以常规大小的颜色显示,或者以豆腐的形式显示):
为什么会发生这种情况,我该如何解决?
答案1
这里有几个问题:
- 默认的系统字体是Deja Vu Sans,它包含黑白表情符号。
- 该浏览器捆绑了自己的表情符号特定字体
EmojiOneMozilla.ttf
(最初捆绑在 Firefox 中,也包含在 PureBrowser 分支中),它包含彩色表情符号。 (旁注:由于许可变更,最新版本的 Firefox 捆绑了Twemoji
。) - 您还安装了Noto Emoji,它包含不同风格的新颜色表情符号。 PureBrowser 派生的 Firefox 版本无法正确处理此字体的缩放。
当遇到表情符号字符时,浏览器会在这三种字体之间进行选择,以决定如何呈现它们。上面的顺序是优先顺序,这恰好也是覆盖范围增加的顺序,因此旧的/常见的表情符号在 Deja Vu 中呈现,较新的表情符号在 Emoji One 中呈现,而前沿的表情符号在严重缩放的 Noto 表情符号中呈现。
“正确”的解决方案是修复浏览器和/或 Noto,以便浏览器中 Noto 表情符号的缩放正确。此外,更新字体提示,以便彩色表情符号比系统默认字体更受青睐。解决这些问题并非易事。对于初学者来说,请参阅:
- https://github.com/googlei18n/noto-emoji/issues/36
- https://superuser.com/questions/1111369
- https://github.com/eosrei/emojione-color-font/issues/17
与此同时,一种解决方法是替换EmojiOneMozilla.tff
为可正确缩放且符号覆盖率与 Noto 相同或更好的彩色表情符号字体:
- 从以下位置下载最新的 Twemoji/eosrei 版本https://github.com/eosrei/twemoji-color-font/releases(zip格式)
- 提炼
TwitterColorEmoji-SVGinOT.ttf
- 删除
/usr/lib/purebrowser/fonts/EmojiOneMozilla.ttf
- 复制
TwitterColorEmoji-SVGinOT.ttf
到该文件夹中
现在,Noto 表情符号不会出现,因为 Twemoji TTF 具有相同的表情符号覆盖率。如果 Noto 覆盖率提高并且您的 Noto 包得到更新,则任何新的表情符号都会再次出现该问题。届时,您将必须等待新的 Twemoji/eosrei 版本并重新应用解决方法。
如果您的 PureBrowser 软件包更新,它可能会重新添加 EmojiOneMozilla.ttf,在这种情况下您将不得不再次删除它。它可能会删除 TwitterColorEmoji-SVGinOT.ttf,在这种情况下您将必须重新添加它。