// 判断是否是 emoji表情
- (BOOL)isEmoji
{
BOOL returnValue = NO;
if (self == nil || [self isKindOfClass:[NSNull class]] || [self isEqualToString:@""] || ([self isKindOfClass:[NSString class]] && self.length<2))
{
return returnValue;
}
const unichar hs = [self characterAtIndex:0];
// surrogate pair
if (0xd800 <= hs && hs <= 0xdbff) {
if (self.length > 1) {
const unichar ls = [self characterAtIndex:1];
const int uc = ((hs - 0xd800) * 0x400) + (ls - 0xdc00) + 0x10000;
if (0x1d000 <= uc && uc <= 0x1f77f) {
returnValue = YES;
}
}
} else if (self.length > 1) {
const unichar ls = [self characterAtIndex:1];
if (ls == 0x20e3