Issue #2492 - Standardized use of Emoji Character Properties

Detection of Emoji Components, for use as suffixes of TextDefault.
Detection of Non-Presentation Emojis as TextDefault.
Detection of all Extended Pictographics as EmojiDefault.
This commit is contained in:
Andy 2024-03-30 04:57:12 -07:00 committed by roytam1
commit 69f3b4e199
5 changed files with 33 additions and 32 deletions

View file

@ -48,7 +48,8 @@ enum IdentifierType {
enum EmojiPresentation {
TextOnly = 0,
TextDefault = 1,
EmojiDefault = 2
EmojiDefault = 2,
EmojiComponent = 3
};
const uint32_t kVariationSelector15 = 0xFE0E; // text presentation
@ -179,14 +180,17 @@ IsDefaultIgnorable(uint32_t aCh)
inline EmojiPresentation
GetEmojiPresentation(uint32_t aCh)
{
if (!u_hasBinaryProperty(aCh, UCHAR_EMOJI)) {
return TextOnly;
if (u_hasBinaryProperty(aCh, UCHAR_EMOJI_COMPONENT)) {
return EmojiComponent;
}
if (u_hasBinaryProperty(aCh, UCHAR_EMOJI_PRESENTATION)) {
if (u_hasBinaryProperty(aCh, UCHAR_EMOJI) &&
!u_hasBinaryProperty(aCh, UCHAR_EMOJI_PRESENTATION)) {
return TextDefault;
}
if (u_hasBinaryProperty(aCh, UCHAR_EXTENDED_PICTOGRAPHIC)) {
return EmojiDefault;
}
return TextDefault;
return TextOnly;
}
// returns the simplified Gen Category as defined in nsIUGenCategory