解决 Firefox 无法显示 Noto Color Emoji 的问题

最近迷上了 gitmoji。然而我却发现,用 Firefox 打开自建的 Gitea,显示不了 Emoji,用 Chromium 打开 Gitea 却可以正常显示,而且两个浏览器打开 GitHub,都能显示 Emoji。

经过一番研究,终于解决了这个问题,相关信息如下:

  1. Firefox 自带名为 Twemoji Mozilla 的表情字体,默认会使用这个字体,而非系统的表情字体。如果在 about:config 中将 font.name-list.emoji 改为 emoji1,即可使用系统自带字体。
  2. GitHub 使用的是图片,而非 emoji 字体。
  3. Gitea 的字体匹配顺序,是先匹配 Noto Color Emoji,再匹配 Twemoji Mozilla。在控制台中能看到 emoji,在网页中却不能。
  4. 已经有人向上游汇报了这个 BUG2,原因与 Cairo 的行为有关,在讨论中给出了解决方案。

我在 ~/.config/fontconfig/fonts.conf 中加入了以下设置,成功解决了这个问题:

1
2
3
4
5
6
7
8
<match target="font">
<test qual="any" name="family">
<string>Noto Color Emoji</string>
</test>
<edit name="embeddedbitmap">
<bool>true</bool>
</edit>
</match>

最终效果:

Firefox 成功显示了 Gitea 上的 Emoji