不一致的Unicode表情符号/符号

12

我一直在尝试在苹果和iOS产品中使用占星符号的Unicode符号。但是我得到了不一致的结果,如下图所示:

一些占星符号在表格中的图像

大多数符号都出现了我想要的效果,但由于某种原因,在第一行跟随月球的金牛座符号以一种方式出现,而在跟随火星之后,它又以Emoji般的紫色按钮的形式呈现。这些结果对于不同的符号和苹果硬件是一致的;以下是我的手机屏幕截图,显示了一些其他标志的同样问题 - 天蝎座是正确的,但天秤座和巨蟹座是按钮。

来自iPhone的剪辑中的更多符号

字符串非常简单; 第一个图像中的 "Moon Taurus" 是\u263D代表月亮,\u2649代表金牛座,基本上按照 [NSString stringWithFormat:@"%@%@", @"\u263D", @"\u2649"]进行组装。 "Mars Taurus" 图像也是一样的,只是用\u2642代替了火星。在OSX表格的不同单元格和iOS AttributedString中,字符串格式相同。

有什么想法可以解释为什么这些符号有时会以一种方式出现,而其他时候则以另一种方式出现吗?

1个回答

19
Unicode使用变异序列来选择某些代码点的不同渲染方式,这些代码点在StandardizedVariants.txt文件中列出。在您的情况下,占星符号有“文本样式”和“表情符号样式”两种变体,可以通过后面跟随代码点的U+FEOE(文本样式)或U+FE0F(表情符号样式)之间进行选择:

U+2650 U+FE0E: ♐︎

U+2650 U+FE0F: ♐️

请注意,正确解释变异选择器取决于应用程序/框架和正在使用的字体的支持。在Chrome(42)上,上述示例之间似乎没有任何区别,但在Safari(8)上它们是不同的。

3
谢谢,太棒了。而且有效。可惜Chrome不支持它,但最重要的是我的iOS和OSX应用程序可以使用它。 - Apollo Grace
WPF 应用程序也不遵守这一点。 - avenmore
适用于Win 10企业版上的Chrome 77.0.3865.90。 - Dennis T --Reinstate Monica--
在Chrome中我们对此毫无控制,这真是太疯狂了。它们在我看来都是一样的,非常令人沮丧。为了我的目的,我想在Google幻灯片演示中给符号上色,但使用这些表情符号是不可能的。 - mattador
如果您想在Web应用程序中强制使用表情符号,则必须写下Unicode表情符号标记,例如️,而不要有分隔空格,如☎️ - Mark Langer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接