GitHub 渲染 Emoji 时会检测 navigator.userAgent,若其中含有指定字段,便会回落至 Noto Emoji 图片:

export function isEmojiSupported(): boolean {
  const onWindows7 = /\\bWindows NT 6.1\\b/.test(navigator.userAgent)
  const onWindows8 = /\\bWindows NT 6.2\\b/.test(navigator.userAgent)
  const onWindows81 = /\\bWindows NT 6.3\\b/.test(navigator.userAgent)
  const onFreeBSD = /\\bFreeBSD\\b/.test(navigator.userAgent)
  const onLinux = /\\bLinux\\b/.test(navigator.userAgent) && !/\\bAndroid\\b/.test(navigator.userAgent)

  return !(onWindows7 || onWindows8 || onWindows81 || onLinux || onFreeBSD)
}

使用 Linux 发行版查看含有 Emoji 的 GitHub 页面,画风是这样的:

你不要过来啊!

你不要过来啊!

且不说新版 Noto Emoji 丢失了旧版的灵性,大部分桌面环境(DE)已预装了它,回落至 Noto Emoji 图片既需要进行不必要的加载,又无法获得良好的显示效果,同时还使用户设置的其他 Emoji 字体形同虚设。

**解决方法:**更换 User Agent。可以使用浏览器扩展,也可以使用以下 Userscript:

// ==UserScript==
// @name         Force GitHub use system emoji
// @author       kidonng
// @match        <https://github.com/*>
// @run-at       document-start
// ==/UserScript==

Object.defineProperty(navigator, 'userAgent', {
  value: navigator.userAgent.replace(/Windows NT 6\\.[123]|FreeBSD|Linux/g, '')
})