【问题标题】:Stubborn emoji won't combine: ????‍❤‍????‍????顽固的表情符号不会结合:????‍❤‍??????‍????
【发布时间】: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 对某些表情符号的处理存在错误,还是我错过了该标准的另一个特质?

【问题讨论】:

    标签: ios unicode swift2 emoji


    【解决方案1】:

    没有阴谋,错误在你的代码中。

    • 第一个字符可以用:

      U+1F468U+200DU+2764U+FE0FU+200DU+1F48BU+200DU+1F468

      注意每个字符之间的零宽度连接器 (U+200D) 以及 HEAVY BLACK HEART (U+2764) 上的 VARIATION SELECTOR-16 选择器 (U+2764),以确保使用表情符号演示样式。

      请参阅this table,了解已实施的多人分组的完整列表。

    • U+1F3C7HORSE RACING 不是表情符号修饰符库,因此不支持肤色修饰符。

    【讨论】:

    • 啊哈!这就解释了完整 JSON 中的区别,它同时具有 "unicode":"1f468-2764-1f468" "unicode_alternates":"1f468-200d-2764-fe0f-200d-1f468"。后者包括连接器和选择器代码!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    相关资源
    最近更新 更多