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, '')
})