[创建表情符号字体时,ZERO WIDTH JOINER
的任何序列有效吗?
例如:我可以用🏳★🟩
(Waving White Flag
+zwj
+Black Star
+zwj
+ Green Square
)代表上面带有绿色星号的白旗吗?然后渲染它,比如说Esperanto flag?
[我注意到您有兴趣创建世界语标志,但是我认为字体渲染比仅仅排列代码点还要复杂。
您的暴力破解方法对“ as is”无效。
<div>
🏳️‍★‍🟩
</div>
Unicode标准在Recommended Emoji ZWJ Sequences, v13.0中说:
以下是推荐的表情符号zwj序列,该序列使用U + 200D ZERO WIDTH JOINER(ZWJ)将角色合并为一个字形如果可用。 [不可用时,ZWJ字符为忽略,并显示单独表情符号的后备序列。因此表情符号zwj序列仅在后备情况下才受支持顺序对观众也很有意义。
[我想知道字体渲染机制的哪一部分负责检查“可用性”(即,支持特定Unicode版本,应用程序或字体的渲染引擎,并猜出了“字体”。
所以我在Emoji fonts上看到了这篇文章,的确,字体文件可以包含有关Ligature Substitution的数据,例如,请参见OpenType。 Microsoft提供了一个名为VOLT的工具,该工具允许定义连字。
我对字体设计一无所知,但我会尝试使用字体编辑器(sketched here)创建一个彩色的标志字形,并定义连字替换。 (无默示保修;))
对于可以成为ZWJ序列的一部分而不能成为ZWJ序列的部分有限制。 Unicode Technical Standard #51列出了这些规则。