0、前言
由于众所周知的政治因素:
最初 Unicode 只有那么几个国旗,后来要增加国旗时 Unicode 委员会就发现这是个政治敏感问题,因为某些地区算不算独立国家是有争议的,无论 Unicode 如何站边都会得罪人。
于是 Unicode 委员会选择了一个很聪明的方法来甩锅:Unicode 引入一个特殊字符,该字符表明接下来两个英文字母是国家代号(例如CN
),系统或软件自行决定是否渲染为对应国旗。这也就是说,当软件看到这一特殊字符后面跟着TW
时,软件要自行决定如何站边,Unicode 委员会不管。
——Zhihu ( https://www.zhihu.com/question/263563654 )
在 Windows 和国行版 iPhone 里是无法正常显示各种国旗 Emoji 的。直接原因是 Windows 完全不提供包含 Emoji 的字体文件,因此只能渲染成两个字母:
因此需要想办法让 Windows 可以显示这些 神奇字母 国旗 Emoji。
1、替换系统字体
使用 GitHub 项目:
Twitter Color Emoji SVGinOT Font
https://github.com/13rac1/twemoji-color-font
原理是把 Windows 的原生字体中 Emoji 表情的部分替换为 Twitter 的 Emoji,推特的 Emoji 能正常显示国旗,因此替换后在 Windows 上自然能正确显示国旗了。
下载最新的 Release,运行其中的 .bat
脚本,会自动下载两个字体文件,然后安装字体后就可以显示了。
然而由于系统和程序限制1,大部分使用 Chromium 和 Electron 的程序都不支持。因此还需要给浏览器单独安装浏览器插件。
2、安装浏览器插件
网上常见的推荐插件是:
Country Flag Fixer
https://microsoftedge.microsoft.com/addons/detail/country-flag-fixer/nfkjcekokjacfnambbbdidjpgogkppmm?hl=zh-CN
经测试,目前这个插件仅支持正常显示写在网页中的静态 Emoji,如果是通过 Ajax 等方法动态获取的内容(例如列表、评论),则不会被正常显示。
再次搜索发现了另一个插件:
Twemoji for Chrome
https://chromewebstore.google.com/detail/twemoji-for-chrome/fopgafjdjlongoeblobbafbnapafcicg
这次,插件完美解决了 Emoji 显示问题。评论有人反馈会导致 YouTube 视频播放一段时间后重新开始播放,应该是加载视频简介、评论区中的 Emoji 触发页面重载了。经测试最新版已没有此问题:
48 Hours in Taipei and Northern Taiwan: Ultimate Guide
https://www.youtube.com/watch?v=RV2VLz33314
测试方法:播放视频,然后点开简介、评论区,观察是否重新播放。
最终 Emoji 显示效果2:
解决 Windows Chrome/Edge 浏览器无法显示国旗 Emoji
评论