研究这件事起因于希望在 Windows 的浏览器上使用 Apple 原生的 Emoji 表情,但是从 Mac 的 /System/Library/Fonts/Apple Color Emoji.ttf 拷贝到 Windows 上后无法被安装。。。于是看了一下究竟怎么回事,虽然问题最终没有彻底解决,但记录一下相关的信息:
不同于矢量轮廓描绘,Emoji 在实际应用中是以彩色图案的形态存在,尤其是Unicode后来引入皮肤颜色变化,就需要一套新的字体方案
- Apple 自己定义了 ttf 中的 sbix 扩展,用嵌入 PNG 图片的方案来取代轮廓描绘;后来 Google、Microsoft、Adobe/Mozilla 也先后定义了自己的 ttf 扩展方案,最后似乎都成了标准的一部分,探索在Android中使用Emoji Font的方法
- Adobe/Mozilla 的方案叫 SVG,或者 SVGinOT(opentype);上文提到 Google 的方案类似 Apple,也是 PNG内嵌
- 相对来说 Microsoft 的方案更有特色一些,它是用轮廓+调色板渲染的方式实现了 Color Emoji,思路清奇
- 按照微软的说法,Windows 10的最新版应该是能支持上述所有的4种字体的,https://msdn.microsoft.com/en-us/library/windows/desktop/mt765165%28v=vs.85%29.aspx#what_kinds_of_color_fonts_does_windows_support_
- 但是浏览器有一点点特殊的地方,它还有 webfont 的支持问题。于是有一个网站可以用来检查浏览器对 webfont 的支持情况:https://pixelambacht.nl/chromacheck/ Windows10上的Edge是4种都支持,但 Chrome Windows 版本就仅仅支持微软自家的Color Emoji
- 怎么样替换 Windows 缺省的 Color Emoji 字体呢? http://superuser.com/questions/1062418/how-do-i-replace-windows-10s-emoji
- 怎么把 Apple Color Emoji 转换成 Google 格式呢(这样在 Android 和 Chrome/Linux 上就都可用了)?上面中文文档里链接了一个 xda 上的文章,提到了方案:http://forum.xda-developers.com/showthread.php?t=2563757 , 现在再看这个方案,作者说最新的 Android 系统可以直接使用 Apple 的 sbix 扩展了。。。所以我猜最新的 Linux Fontconfig 或许也能支持 Apple Color Emoji.ttf 了
- 但如何在 Windows 上直接把 Apple Color Emoji 转换来用上述信息还是没有解决,最终找到了两个平台上ttf格式兼容的另外一篇文章:CMap 表相关修改技术简要指南。。。看似说的很有道理,但是按里面的方法去修改重新合版仍然没有得到想要的结果
- 最后找到一个商业的解决方案,fontlab.com 的TransType,在 Windows 下还确实把原字体转成了两个能正常打开的字体,但是限于时间,暂时没有进一步去测试 Windows 上安装了字体后浏览器上的表现...
Topic:
技术
评论
podcasting
头两天刚听了,TIB的 podcasting,说到了Emoji的部分,里面讲微软那套实现确实骨骼精奇 http://www.typeisbeautiful.com/2016/11/11221/
The famous Poop Emoji bug :)
http://www.businessinsider.com/microsoft-windows-poop-emoji-discussion-2015-8
那是一个真实存在的bug :)
hahahaha
hahahaha