Why method isEmojiPresentation return false?
"🫥".unicodeScalars.first?.properties.isEmoji // Optional(false)
"🫥".unicodeScalars.first?.properties.isEmojiPresentation // Optional(false)

Docs
isEmoji - https://developer.apple.com/documentation/swift/unicode/scalar/properties-swift.struct/isemoji
isEmojiPresentation - https://developer.apple.com/documentation/swift/unicode/scalar/properties-swift.struct/isemojipresentation
UDP:

From the isEmoji documentation you posted:
testing isEmoji alone on a single scalar is insufficient to determine if a unit of text is rendered as an emoji; a correct test requires inspecting multiple scalars in a Character.
Therefore, you can use following code to check if there is an emoji presentation:
"🫥".unicodeScalars.contains(where: { $0.properties.isEmoji }) // true
"5".unicodeScalars.contains(where: { $0.properties.isEmoji }) // true, as expected (5️⃣)
"a".unicodeScalars.contains(where: { $0.properties.isEmoji }) // false
and this code to check if the default is the emoji presentation:
"🫥".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // true
"5".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // false
"a".unicodeScalars.contains(where: { $0.properties.isEmojiPresentation }) // false
Here is an extension for convenience:
extension Character {
var hasEmojiPresentation: Bool {
unicodeScalars.contains(where: { $0.properties.isEmoji })
}
var hasEmojiPresentationAsDefault: Bool {
unicodeScalars.contains(where: { $0.properties.isEmojiPresentation })
}
}
Usage:
Character("🫥").hasEmojiPresentation // true
Character("🫥").hasEmojiPresentationAsDefault // true
Character("5").hasEmojiPresentation // true
Character("5").hasEmojiPresentationAsDefault // false
Character("a").hasEmojiPresentation // false
Character("a").hasEmojiPresentationAsDefault // false
Note: The outcome may be different depending on the used Xcode version, since they contain different sets of emojis.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With