为什么这个十字符号在 Safari iOS 中保持灰色?

Why does this cross sign stay gray in Safari iOS?

我只是花了太多时间弄清楚为什么我的 <button> 不想在 iOS Safari 上显示白色文本颜色。这是一个关闭模态的按钮,定义如下:

<button type="button">✖</button>

这是我得到的:

我确信我遗漏了一些东西,因为我们都知道按钮不是最容易设置样式的。但是在应用 color: #fff;-webkit-appearance: none 之后,我希望它能起作用。我终于想到尝试其他角色,令我惊讶的是,结果如下:

看来我的CSS是对的,怪角色本身。现在,我真的很好奇发生了什么。起初我以为我选择的那个十字可能是表情符号,但似乎不是。第一个只是常规大写字母 X(1 个字节),其他所有都是 3 个字节。表情符号是 4 个字节,对吧?

我的问题(主要是出于好奇)是:为什么这个十字架保持灰色?

作为参考,这是我测试的十字架:X ✕ ☓ ✖ ✗ ✘,第四个就是那个。我使用的字体是 Tahoma,但我不确定这对 Unicode 字符是否重要。有问题的十字符号称为 HEAVY MULTIPLICATION X (U+2716).

不幸的是,表情符号的作用不同。其中有些是文本符号,有些只是普通的表情符号。我做了这个简单的技巧,大部分时间都有效:

element {
  color: transparent;  
  text-shadow: 0 0 0 green;
}

谜团解开了。这个特别的交叉角色有它非常亲密的表情符号兄弟。十字本身是 U+2716,它是十进制的 10006.

但是还有表情符号,除了是灰色的(至少在 Apple 的解释中是这样)和带有轻微的阴影外,它们看起来几乎完全一样。这个表情符号由两个组合字符组成:

  1. U+2716交叉
  2. 一个名为 VARIATION SELECTOR-16 的字符,为 U+FE0F 或十进制 65039

在某些情况下,iOS 上的 Safari 似乎会将 U+2716 转换为其对应的表情符号。其中一种情况是将其放入 <button>.