From: ssabah Date: Wed, 13 Jul 2022 12:02:24 +0000 (+0300) Subject: Fix: VS15 hides non-Emoji Negative Squared Latin Capital Letter X-Git-Tag: dali_2.1.32~6^2 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=0cb355e273c2ef5b0efc545749496def9f25c27e;hp=68a6ed0e6cea80391ff61990aa37a1865bec8629 Fix: VS15 hides non-Emoji Negative Squared Latin Capital Letter The non-emoji letters form Negative-Squared-Latin-Capital-Letter become invisible when use VS16 or Emoji Color Font. Examples: "1F170 ~ 1F174 with variation selector, text vs emoji: 🅰️🅱️🅲︎🅳︎🅴︎\n" "1F170 ~ 1F174 with VS15: 🅰︎🅱︎🅲︎🅳︎🅴︎\n" "1F170 ~ 1F174 with VS16: 🅰️🅱️🅲️🅳️🅴️\n"; In Negative-Squared-Latin-Capital-Letter from enclosed-alphanumeric-supplement, The Letters A,B,O,P are Emoji Variation Sequences. https://unicode-table.com/en/blocks/enclosed-alphanumeric-supplement/ This patch depends on the patch below: https://review.tizen.org/gerrit/c/platform/core/uifw/dali-adaptor/+/277821 Change-Id: I890d7c74e7b71d9d074d1fb1cd68af578b56e16c --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp index f7bf429..0ece717 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TextLabel.cpp @@ -1146,22 +1146,27 @@ int UtcDaliToolkitTextLabelEmojisP(void) "Default ☪ \n" //default presentation "FamilyManWomanGirlBoy 👨‍👩‍👧‍👦\n" // emoji multi zwj sequence "WomanScientist 👩‍🔬\n" // emoji zwj sequence - "WomanScientistLightSkinTone👩🏻‍🔬 \n" //emoji modifier sequence: skin tone & JWZ - "LeftRightArrowText↔︎\n" //text presentation sequence and selector - "LeftRightArrowEmoji↔️\n" //emoji presentation sequence and selector - "SouthKoreaFlag🇰🇷\n" //emoji flag sequence + "WomanScientistLightSkinTone👩🏻‍🔬 \n" // emoji modifier sequence: skin tone & JWZ + "LeftRightArrowText↔︎\n" // text presentation sequence and selector + "LeftRightArrowEmoji↔️\n" // emoji presentation sequence and selector + "SouthKoreaFlag🇰🇷\n" // emoji flag sequence "JordanFlag🇯🇴\n" // emoji flag sequence - "EnglandFlag🏴󠁧󠁢󠁥󠁮󠁧󠁿\n" //emoji tag sequence like England flag + "EnglandFlag🏴󠁧󠁢󠁥󠁮󠁧󠁿\n" // emoji tag sequence like England flag "Runner 🏃‍➡️ \n" - "VictoryHandMediumLightSkinTone:✌️🏼\n" //emoji modifier sequence: skin tone - "RainbowFlag:🏳️‍🌈 \n" //emoji zwj sequence: Rainbow Flag - "keycap# #️⃣ \n" // fully-qualified emoji keycap sequence - "keycap#_text #⃣ \n" // unqualified emoji keycap sequence - "keycap3 3️⃣ \n" // fully-qualified emoji keycap sequence - "keycap3_text 3⃣ \n" // unqualified emoji keycap sequence - "two adjacent glyphs ☪️️️☪️\n" //This line should be rendered as two adjacent glyphs - "Digit 8️ 8︎ 8\n" // should be rendered according to selector - "Surfing Medium Skin Female: 🏄🏼‍♀️"; // Person Surfing + Medium Skin Tone +? Zero Width Joiner + Female Sign + "VictoryHandMediumLightSkinTone:✌️🏼\n" // emoji modifier sequence: skin tone + "RainbowFlag:🏳️‍🌈 \n" // emoji zwj sequence: Rainbow Flag + "keycap# #️⃣ \n" // fully-qualified emoji keycap sequence + "keycap#_text #⃣ \n" // unqualified emoji keycap sequence + "keycap3 3️⃣ \n" // fully-qualified emoji keycap sequence + "keycap3_text 3⃣ \n" // unqualified emoji keycap sequence + "two adjacent glyphs ☪️️️☪️\n" // This line should be rendered as two adjacent glyphs + "Digit 8️ 8︎ 8\n" // should be rendered according to selector + "Surfing Medium Skin Female: 🏄🏼‍♀️\n" // Person Surfing + Medium Skin Tone +? Zero Width Joiner + Female Sign + "SYMBOLS_NSLCL variation selector: 🅰️🅱️🅲︎🅳︎🅴︎\n" // 1F170 ~ 1F174 with variation selector, text vs emoji + "SYMBOLS_NSLCL with VS15: 🅰︎🅱︎🅲︎🅳︎🅴︎\n" // 1F170 ~ 1F174 with VS15 + "SYMBOLS_NSLCL with VS16: 🅰️🅱️🅲️🅳️🅴️\n" // 1F170 ~ 1F174 with VS16 + + ; label.SetProperty(TextLabel::Property::TEXT, emojiSequences); label.SetProperty(TextLabel::Property::ENABLE_MARKUP, true); diff --git a/dali-toolkit/internal/text/emoji-helper.cpp b/dali-toolkit/internal/text/emoji-helper.cpp index c458fd0..35a7760 100644 --- a/dali-toolkit/internal/text/emoji-helper.cpp +++ b/dali-toolkit/internal/text/emoji-helper.cpp @@ -42,13 +42,14 @@ bool IsEmojiSequence(const TextAbstraction::Script& currentRunScript, const TextAbstraction::Character& character, const TextAbstraction::Script& characterScript) { - return (IsOneOfEmojiScripts(currentRunScript) && - (IsOneOfEmojiScripts(characterScript) || - TextAbstraction::IsZeroWidthJoiner(character) || - TextAbstraction::IsZeroWidthNonJoiner(character) || - TextAbstraction::IsEmojiItem(character) || - TextAbstraction::IsMiscellaneousSymbolsAndArrowsEmoji(character) || - TextAbstraction::IsDingbatsEmoji(character))); + return (!(TextAbstraction::IsNegativeSquaredLatinCapitalLetter(character)) && + (IsOneOfEmojiScripts(currentRunScript) && + (IsOneOfEmojiScripts(characterScript) || + TextAbstraction::IsZeroWidthJoiner(character) || + TextAbstraction::IsZeroWidthNonJoiner(character) || + TextAbstraction::IsEmojiItem(character) || + TextAbstraction::IsMiscellaneousSymbolsAndArrowsEmoji(character) || + TextAbstraction::IsDingbatsEmoji(character)))); } bool IsNewSequence(const Character* const textBuffer,