【发布时间】:2016-07-13 18:34:54
【问题描述】:
即使在 @user3441734 solved most of my problems ???? 之后,从 [String:String] 转换为 String 时,我似乎也无法正确呈现一些表情符号。
这里有一些 Playground 就绪代码来说明问题:
var u = ""
u = "1f468-1f468-1f467-1f467" // ????????????????
//u = "1f918-1f3ff" // ????????
//u = "1f468-2764-1f48b-1f468" // ????❤???????? (broken)
//u = "1f3c7-1f3fb" // ???????? (broken)
let unicodeArray = u.characters.split("-")
.map(String.init)
.map {String(UnicodeScalar(Int($0,radix: 16) ?? 0))}
if let last = unicodeArray.last {
let separator: String
switch (unicodeArray.first, last) {
// Failed attempt to get tone applied to jockey
case let (horse_racing, _) where horse_racing == "\u{1f3c7}":
separator = "\u{200d}"
case let (_, tone) where "\u{1f3fb}"..."\u{1f3ff}" ~= tone:
separator = ""
case let (_, regionalIndicatorSymbol) where "\u{1f1e6}"..."\u{1f1ff}" ~= regionalIndicatorSymbol:
separator = ""
default:
separator = "\u{200d}"
}
print(unicodeArray.joinWithSeparator(separator))
}
依次取消对u 的每个分配的注释,以查看问题的实际效果。第三个和第四个值应该像这样呈现:
和
想法……
- 事实证明,长按赛马无法在 iOS 上显示肤色,所以让我们假设这只是一个疏忽,可能与几乎不可能以标准表情符号大小判断骑师的肤色有关。我仍然无法弄清楚
u = "1f468-2764-1f48b-1f468"的问题 - 抱歉,如果这个问题完全不清楚。 Chrome 和 Safari 对这些组合表情符号有不同的行为,因此只有链接的图像才能保证以我看到它们的方式呈现给您。 ????
- 这些表情符号要么是肤色渲染,要么是同性情感的象征。系统中是否潜伏着某种奇怪的潜在种族主义和恐同症?! ??? (提示阴谋论。)
- 请注意,我尝试使用零宽度连接符
u{200d}没有帮助。
那么,Apple 和 Chrome 对某些表情符号的处理存在错误,还是我错过了该标准的另一个特质?
【问题讨论】: