diff --git a/src/main/java/org/thoughtcrime/securesms/components/emoji/AutoScaledEmojiTextView.java b/src/main/java/org/thoughtcrime/securesms/components/emoji/AutoScaledEmojiTextView.java index 08777fc15..a4521fbc2 100644 --- a/src/main/java/org/thoughtcrime/securesms/components/emoji/AutoScaledEmojiTextView.java +++ b/src/main/java/org/thoughtcrime/securesms/components/emoji/AutoScaledEmojiTextView.java @@ -22,7 +22,7 @@ public class AutoScaledEmojiTextView extends AppCompatTextView { with spaces, *, # and 0-9 removed and the corresponding emojis added explicitly to avoid matching normal text with such characters */ - private static final Pattern emojiRegex = Pattern.compile("([๐Ÿป-๐Ÿฟ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿคฃ๐Ÿ˜‚๐Ÿ™‚๐Ÿ™ƒ๐Ÿซ ๐Ÿ˜‰๐Ÿ˜Š๐Ÿ˜‡๐Ÿฅฐ๐Ÿ˜๐Ÿคฉ๐Ÿ˜˜๐Ÿ˜—โ˜บ๐Ÿ˜š๐Ÿ˜™๐Ÿฅฒ๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜œ๐Ÿคช๐Ÿ˜๐Ÿค‘๐Ÿค—๐Ÿคญ๐Ÿซข๐Ÿซฃ๐Ÿคซ๐Ÿค”๐Ÿซก๐Ÿค๐Ÿคจ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ถ๐Ÿซฅ๐Ÿ˜๐Ÿ˜’๐Ÿ™„๐Ÿ˜ฌ๐Ÿคฅ๐Ÿซจ๐Ÿ˜Œ๐Ÿ˜”๐Ÿ˜ช๐Ÿคค๐Ÿ˜ด๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿฅต๐Ÿฅถ๐Ÿฅด๐Ÿ˜ต๐Ÿคฏ๐Ÿค ๐Ÿฅณ๐Ÿฅธ๐Ÿ˜Ž๐Ÿค“๐Ÿง๐Ÿ˜•๐Ÿซค๐Ÿ˜Ÿ๐Ÿ™โ˜น๐Ÿ˜ฎ๐Ÿ˜ฏ๐Ÿ˜ฒ๐Ÿ˜ณ๐Ÿฅบ๐Ÿฅน๐Ÿ˜ฆ-๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ฑ๐Ÿ˜–๐Ÿ˜ฃ๐Ÿ˜ž๐Ÿ˜“๐Ÿ˜ฉ๐Ÿ˜ซ๐Ÿฅฑ๐Ÿ˜ค๐Ÿ˜ก๐Ÿ˜ ๐Ÿคฌ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ’€โ˜ ๐Ÿ’ฉ๐Ÿคก๐Ÿ‘น-๐Ÿ‘ป๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป-๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ๐Ÿ™ˆ-๐Ÿ™Š๐Ÿ’Œ๐Ÿ’˜๐Ÿ’๐Ÿ’–๐Ÿ’—๐Ÿ’“๐Ÿ’ž๐Ÿ’•๐Ÿ’Ÿโฃ๐Ÿ’”โค๐Ÿฉท๐Ÿงก๐Ÿ’›๐Ÿ’š๐Ÿ’™๐Ÿฉต๐Ÿ’œ๐ŸคŽ๐Ÿ–ค๐Ÿฉถ๐Ÿค๐Ÿ’‹๐Ÿ’ฏ๐Ÿ’ข๐Ÿ’ฅ๐Ÿ’ซ๐Ÿ’ฆ๐Ÿ’จ๐Ÿ•ณ๐Ÿ’ฌ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ’ญ๐Ÿ’ค๐Ÿ‘‹๐Ÿคš๐Ÿ–โœ‹๐Ÿ––๐Ÿซฑ-๐Ÿซด๐Ÿซท๐Ÿซธ๐Ÿ‘Œ๐ŸคŒ๐ŸคโœŒ๐Ÿคž๐Ÿซฐ๐ŸคŸ๐Ÿค˜๐Ÿค™๐Ÿ‘ˆ๐Ÿ‘‰๐Ÿ‘†๐Ÿ–•๐Ÿ‘‡โ˜๐Ÿซต๐Ÿ‘๐Ÿ‘ŽโœŠ๐Ÿ‘Š๐Ÿค›๐Ÿคœ๐Ÿ‘๐Ÿ™Œ๐Ÿซถ๐Ÿ‘๐Ÿคฒ๐Ÿค๐Ÿ™โœ๐Ÿ’…๐Ÿคณ๐Ÿ’ช๐Ÿฆพ๐Ÿฆฟ๐Ÿฆต๐Ÿฆถ๐Ÿ‘‚๐Ÿฆป๐Ÿ‘ƒ๐Ÿง ๐Ÿซ€๐Ÿซ๐Ÿฆท๐Ÿฆด๐Ÿ‘€๐Ÿ‘๐Ÿ‘…๐Ÿ‘„๐Ÿซฆ๐Ÿ‘ถ๐Ÿง’๐Ÿ‘ฆ๐Ÿ‘ง๐Ÿง‘๐Ÿ‘ฑ๐Ÿ‘จ๐Ÿง”๐Ÿ‘ฉ๐Ÿง“๐Ÿ‘ด๐Ÿ‘ต๐Ÿ™๐Ÿ™Ž๐Ÿ™…๐Ÿ™†๐Ÿ’๐Ÿ™‹๐Ÿง๐Ÿ™‡๐Ÿคฆ๐Ÿคท๐Ÿ‘ฎ๐Ÿ•ต๐Ÿ’‚๐Ÿฅท๐Ÿ‘ท๐Ÿซ…๐Ÿคด๐Ÿ‘ธ๐Ÿ‘ณ๐Ÿ‘ฒ๐Ÿง•๐Ÿคต๐Ÿ‘ฐ๐Ÿคฐ๐Ÿซƒ๐Ÿซ„๐Ÿคฑ๐Ÿ‘ผ๐ŸŽ…๐Ÿคถ๐Ÿฆธ๐Ÿฆน๐Ÿง™-๐ŸงŸ๐ŸงŒ๐Ÿ’†๐Ÿ’‡๐Ÿšถ๐Ÿง๐ŸงŽ๐Ÿƒ๐Ÿ’ƒ๐Ÿ•บ๐Ÿ•ด๐Ÿ‘ฏ๐Ÿง–๐Ÿง—๐Ÿคบ๐Ÿ‡โ›ท๐Ÿ‚๐ŸŒ๐Ÿ„๐Ÿšฃ๐ŸŠโ›น๐Ÿ‹๐Ÿšด๐Ÿšต๐Ÿคธ๐Ÿคผ-๐Ÿคพ๐Ÿคน๐Ÿง˜๐Ÿ›€๐Ÿ›Œ๐Ÿ‘ญ๐Ÿ‘ซ๐Ÿ‘ฌ๐Ÿ’๐Ÿ’‘๐Ÿ—ฃ๐Ÿ‘ค๐Ÿ‘ฅ๐Ÿซ‚๐Ÿ‘ช๐Ÿ‘ฃ๐Ÿฆฐ๐Ÿฆฑ๐Ÿฆณ๐Ÿฆฒ๐Ÿต๐Ÿ’๐Ÿฆ๐Ÿฆง๐Ÿถ๐Ÿ•๐Ÿฆฎ๐Ÿฉ๐Ÿบ๐ŸฆŠ๐Ÿฆ๐Ÿฑ๐Ÿˆ๐Ÿฆ๐Ÿฏ๐Ÿ…๐Ÿ†๐Ÿด๐ŸซŽ๐Ÿซ๐ŸŽ๐Ÿฆ„๐Ÿฆ“๐ŸฆŒ๐Ÿฆฌ๐Ÿฎ๐Ÿ‚-๐Ÿ„๐Ÿท๐Ÿ–๐Ÿ—๐Ÿฝ๐Ÿ๐Ÿ‘๐Ÿ๐Ÿช๐Ÿซ๐Ÿฆ™๐Ÿฆ’๐Ÿ˜๐Ÿฆฃ๐Ÿฆ๐Ÿฆ›๐Ÿญ๐Ÿ๐Ÿ€๐Ÿน๐Ÿฐ๐Ÿ‡๐Ÿฟ๐Ÿฆซ๐Ÿฆ”๐Ÿฆ‡๐Ÿป๐Ÿจ๐Ÿผ๐Ÿฆฅ๐Ÿฆฆ๐Ÿฆจ๐Ÿฆ˜๐Ÿฆก๐Ÿพ๐Ÿฆƒ๐Ÿ”๐Ÿ“๐Ÿฃ-๐Ÿง๐Ÿ•Š๐Ÿฆ…๐Ÿฆ†๐Ÿฆข๐Ÿฆ‰๐Ÿฆค๐Ÿชถ๐Ÿฆฉ๐Ÿฆš๐Ÿฆœ๐Ÿชฝ๐Ÿชฟ๐Ÿธ๐ŸŠ๐Ÿข๐ŸฆŽ๐Ÿ๐Ÿฒ๐Ÿ‰๐Ÿฆ•๐Ÿฆ–๐Ÿณ๐Ÿ‹๐Ÿฌ๐Ÿฆญ๐ŸŸ-๐Ÿก๐Ÿฆˆ๐Ÿ™๐Ÿš๐Ÿชธ๐Ÿชผ๐ŸŒ๐Ÿฆ‹๐Ÿ›-๐Ÿ๐Ÿชฒ๐Ÿž๐Ÿฆ—๐Ÿชณ๐Ÿ•ท๐Ÿ•ธ๐Ÿฆ‚๐ŸฆŸ๐Ÿชฐ๐Ÿชฑ๐Ÿฆ ๐Ÿ’๐ŸŒธ๐Ÿ’ฎ๐Ÿชท๐Ÿต๐ŸŒน๐Ÿฅ€๐ŸŒบ-๐ŸŒผ๐ŸŒท๐Ÿชป๐ŸŒฑ๐Ÿชด๐ŸŒฒ-๐ŸŒต๐ŸŒพ๐ŸŒฟโ˜˜๐Ÿ€-๐Ÿƒ๐Ÿชน๐Ÿชบ๐Ÿ„๐Ÿ‡-๐Ÿ๐Ÿฅญ๐ŸŽ-๐Ÿ“๐Ÿซ๐Ÿฅ๐Ÿ…๐Ÿซ’๐Ÿฅฅ๐Ÿฅ‘๐Ÿ†๐Ÿฅ”๐Ÿฅ•๐ŸŒฝ๐ŸŒถ๐Ÿซ‘๐Ÿฅ’๐Ÿฅฌ๐Ÿฅฆ๐Ÿง„๐Ÿง…๐Ÿฅœ๐Ÿซ˜๐ŸŒฐ๐Ÿซš๐Ÿซ›๐Ÿž๐Ÿฅ๐Ÿฅ–๐Ÿซ“๐Ÿฅจ๐Ÿฅฏ๐Ÿฅž๐Ÿง‡๐Ÿง€๐Ÿ–๐Ÿ—๐Ÿฅฉ๐Ÿฅ“๐Ÿ”๐ŸŸ๐Ÿ•๐ŸŒญ๐Ÿฅช๐ŸŒฎ๐ŸŒฏ๐Ÿซ”๐Ÿฅ™๐Ÿง†๐Ÿฅš๐Ÿณ๐Ÿฅ˜๐Ÿฒ๐Ÿซ•๐Ÿฅฃ๐Ÿฅ—๐Ÿฟ๐Ÿงˆ๐Ÿง‚๐Ÿฅซ๐Ÿฑ๐Ÿ˜-๐Ÿ๐Ÿ ๐Ÿข-๐Ÿฅ๐Ÿฅฎ๐Ÿก๐ŸฅŸ-๐Ÿฅก๐Ÿฆ€๐Ÿฆž๐Ÿฆ๐Ÿฆ‘๐Ÿฆช๐Ÿฆ-๐Ÿช๐ŸŽ‚๐Ÿฐ๐Ÿง๐Ÿฅง๐Ÿซ-๐Ÿฏ๐Ÿผ๐Ÿฅ›โ˜•๐Ÿซ–๐Ÿต๐Ÿถ๐Ÿพ๐Ÿท-๐Ÿป๐Ÿฅ‚๐Ÿฅƒ๐Ÿซ—๐Ÿฅค๐Ÿง‹๐Ÿงƒ๐Ÿง‰๐ŸงŠ๐Ÿฅข๐Ÿฝ๐Ÿด๐Ÿฅ„๐Ÿ”ช๐Ÿซ™๐Ÿบ๐ŸŒ-๐ŸŒ๐Ÿ—บ๐Ÿ—พ๐Ÿงญ๐Ÿ”โ›ฐ๐ŸŒ‹๐Ÿ—ป๐Ÿ•๐Ÿ–๐Ÿœ-๐ŸŸ๐Ÿ›๐Ÿ—๐Ÿงฑ๐Ÿชจ๐Ÿชต๐Ÿ›–๐Ÿ˜๐Ÿš๐Ÿ -๐Ÿฆ๐Ÿจ-๐Ÿญ๐Ÿฏ๐Ÿฐ๐Ÿ’’๐Ÿ—ผ๐Ÿ—ฝโ›ช๐Ÿ•Œ๐Ÿ›•๐Ÿ•โ›ฉ๐Ÿ•‹โ›ฒโ›บ๐ŸŒ๐ŸŒƒ๐Ÿ™๐ŸŒ„-๐ŸŒ‡๐ŸŒ‰โ™จ๐ŸŽ ๐Ÿ›๐ŸŽก๐ŸŽข๐Ÿ’ˆ๐ŸŽช๐Ÿš‚-๐ŸšŠ๐Ÿš๐Ÿšž๐Ÿš‹-๐ŸšŽ๐Ÿš-๐Ÿš™๐Ÿ›ป๐Ÿšš-๐Ÿšœ๐ŸŽ๐Ÿ๐Ÿ›ต๐Ÿฆฝ๐Ÿฆผ๐Ÿ›บ๐Ÿšฒ๐Ÿ›ด๐Ÿ›น๐Ÿ›ผ๐Ÿš๐Ÿ›ฃ๐Ÿ›ค๐Ÿ›ขโ›ฝ๐Ÿ›ž๐Ÿšจ๐Ÿšฅ๐Ÿšฆ๐Ÿ›‘๐Ÿšงโš“๐Ÿ›Ÿโ›ต๐Ÿ›ถ๐Ÿšค๐Ÿ›ณโ›ด๐Ÿ›ฅ๐Ÿšขโœˆ๐Ÿ›ฉ๐Ÿ›ซ๐Ÿ›ฌ๐Ÿช‚๐Ÿ’บ๐Ÿš๐ŸšŸ-๐Ÿšก๐Ÿ›ฐ๐Ÿš€๐Ÿ›ธ๐Ÿ›Ž๐ŸงณโŒ›โณโŒšโฐ-โฒ๐Ÿ•ฐ๐Ÿ•›๐Ÿ•ง๐Ÿ•๐Ÿ•œ๐Ÿ•‘๐Ÿ•๐Ÿ•’๐Ÿ•ž๐Ÿ•“๐Ÿ•Ÿ๐Ÿ•”๐Ÿ• ๐Ÿ••๐Ÿ•ก๐Ÿ•–๐Ÿ•ข๐Ÿ•—๐Ÿ•ฃ๐Ÿ•˜๐Ÿ•ค๐Ÿ•™๐Ÿ•ฅ๐Ÿ•š๐Ÿ•ฆ๐ŸŒ‘-๐ŸŒœ๐ŸŒกโ˜€๐ŸŒ๐ŸŒž๐Ÿชโญ๐ŸŒŸ๐ŸŒ ๐ŸŒŒโ˜โ›…โ›ˆ๐ŸŒค-๐ŸŒฌ๐ŸŒ€๐ŸŒˆ๐ŸŒ‚โ˜‚โ˜”โ›ฑโšกโ„โ˜ƒโ›„โ˜„๐Ÿ”ฅ๐Ÿ’ง๐ŸŒŠ๐ŸŽƒ๐ŸŽ„๐ŸŽ†๐ŸŽ‡๐Ÿงจโœจ๐ŸŽˆ-๐ŸŽ‹๐ŸŽ-๐ŸŽ‘๐Ÿงง๐ŸŽ€๐ŸŽ๐ŸŽ—๐ŸŽŸ๐ŸŽซ๐ŸŽ–๐Ÿ†๐Ÿ…๐Ÿฅ‡-๐Ÿฅ‰โšฝโšพ๐ŸฅŽ๐Ÿ€๐Ÿ๐Ÿˆ๐Ÿ‰๐ŸŽพ๐Ÿฅ๐ŸŽณ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿฅ๐Ÿ“๐Ÿธ๐ŸฅŠ๐Ÿฅ‹๐Ÿฅ…โ›ณโ›ธ๐ŸŽฃ๐Ÿคฟ๐ŸŽฝ๐ŸŽฟ๐Ÿ›ท๐ŸฅŒ๐ŸŽฏ๐Ÿช€๐Ÿช๐Ÿ”ซ๐ŸŽฑ๐Ÿ”ฎ๐Ÿช„๐ŸŽฎ๐Ÿ•น๐ŸŽฐ๐ŸŽฒ๐Ÿงฉ๐Ÿงธ๐Ÿช…๐Ÿชฉ๐Ÿช†โ™ โ™ฅโ™ฆโ™ฃโ™Ÿ๐Ÿƒ๐Ÿ€„๐ŸŽด๐ŸŽญ๐Ÿ–ผ๐ŸŽจ๐Ÿงต๐Ÿชก๐Ÿงถ๐Ÿชข๐Ÿ‘“๐Ÿ•ถ๐Ÿฅฝ๐Ÿฅผ๐Ÿฆบ๐Ÿ‘”-๐Ÿ‘–๐Ÿงฃ-๐Ÿงฆ๐Ÿ‘—๐Ÿ‘˜๐Ÿฅป๐Ÿฉฑ-๐Ÿฉณ๐Ÿ‘™๐Ÿ‘š๐Ÿชญ๐Ÿ‘›-๐Ÿ‘๐Ÿ›๐ŸŽ’๐Ÿฉด๐Ÿ‘ž๐Ÿ‘Ÿ๐Ÿฅพ๐Ÿฅฟ๐Ÿ‘ ๐Ÿ‘ก๐Ÿฉฐ๐Ÿ‘ข๐Ÿชฎ๐Ÿ‘‘๐Ÿ‘’๐ŸŽฉ๐ŸŽ“๐Ÿงข๐Ÿช–โ›‘๐Ÿ“ฟ๐Ÿ’„๐Ÿ’๐Ÿ’Ž๐Ÿ”‡-๐Ÿ”Š๐Ÿ“ข๐Ÿ“ฃ๐Ÿ“ฏ๐Ÿ””๐Ÿ”•๐ŸŽผ๐ŸŽต๐ŸŽถ๐ŸŽ™-๐ŸŽ›๐ŸŽค๐ŸŽง๐Ÿ“ป๐ŸŽท๐Ÿช—๐ŸŽธ-๐ŸŽป๐Ÿช•๐Ÿฅ๐Ÿช˜๐Ÿช‡๐Ÿชˆ๐Ÿ“ฑ๐Ÿ“ฒโ˜Ž๐Ÿ“ž-๐Ÿ“ ๐Ÿ”‹๐Ÿชซ๐Ÿ”Œ๐Ÿ’ป๐Ÿ–ฅ๐Ÿ–จโŒจ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ’ฝ-๐Ÿ“€๐Ÿงฎ๐ŸŽฅ๐ŸŽž๐Ÿ“ฝ๐ŸŽฌ๐Ÿ“บ๐Ÿ“ท-๐Ÿ“น๐Ÿ“ผ๐Ÿ”๐Ÿ”Ž๐Ÿ•ฏ๐Ÿ’ก๐Ÿ”ฆ๐Ÿฎ๐Ÿช”๐Ÿ“”-๐Ÿ“š๐Ÿ““๐Ÿ“’๐Ÿ“ƒ๐Ÿ“œ๐Ÿ“„๐Ÿ“ฐ๐Ÿ—ž๐Ÿ“‘๐Ÿ”–๐Ÿท๐Ÿ’ฐ๐Ÿช™๐Ÿ’ด-๐Ÿ’ธ๐Ÿ’ณ๐Ÿงพ๐Ÿ’นโœ‰๐Ÿ“ง-๐Ÿ“ฉ๐Ÿ“ค-๐Ÿ“ฆ๐Ÿ“ซ๐Ÿ“ช๐Ÿ“ฌ-๐Ÿ“ฎ๐Ÿ—ณโœโœ’๐Ÿ–‹๐Ÿ–Š๐Ÿ–Œ๐Ÿ–๐Ÿ“๐Ÿ’ผ๐Ÿ“๐Ÿ“‚๐Ÿ—‚๐Ÿ“…๐Ÿ“†๐Ÿ—’๐Ÿ—“๐Ÿ“‡-๐Ÿ“Ž๐Ÿ–‡๐Ÿ“๐Ÿ“โœ‚๐Ÿ—ƒ๐Ÿ—„๐Ÿ—‘๐Ÿ”’๐Ÿ”“๐Ÿ”-๐Ÿ”‘๐Ÿ—๐Ÿ”จ๐Ÿช“โ›โš’๐Ÿ› ๐Ÿ—กโš”๐Ÿ’ฃ๐Ÿชƒ๐Ÿน๐Ÿ›ก๐Ÿชš๐Ÿ”ง๐Ÿช›๐Ÿ”ฉโš™๐Ÿ—œโš–๐Ÿฆฏ๐Ÿ”—โ›“๐Ÿช๐Ÿงฐ๐Ÿงฒ๐Ÿชœโš—๐Ÿงช-๐Ÿงฌ๐Ÿ”ฌ๐Ÿ”ญ๐Ÿ“ก๐Ÿ’‰๐Ÿฉธ๐Ÿ’Š๐Ÿฉน๐Ÿฉผ๐Ÿฉบ๐Ÿฉป๐Ÿšช๐Ÿ›—๐Ÿชž๐ŸชŸ๐Ÿ›๐Ÿ›‹๐Ÿช‘๐Ÿšฝ๐Ÿช ๐Ÿšฟ๐Ÿ›๐Ÿชค๐Ÿช’๐Ÿงด๐Ÿงท๐Ÿงน-๐Ÿงป๐Ÿชฃ๐Ÿงผ๐Ÿซง๐Ÿชฅ๐Ÿงฝ๐Ÿงฏ๐Ÿ›’๐Ÿšฌโšฐ๐Ÿชฆโšฑ๐Ÿงฟ๐Ÿชฌ๐Ÿ—ฟ๐Ÿชง๐Ÿชช๐Ÿง๐Ÿšฎ๐Ÿšฐโ™ฟ๐Ÿšน-๐Ÿšผ๐Ÿšพ๐Ÿ›‚-๐Ÿ›…โš ๐Ÿšธโ›”๐Ÿšซ๐Ÿšณ๐Ÿšญ๐Ÿšฏ๐Ÿšฑ๐Ÿšท๐Ÿ“ต๐Ÿ”žโ˜ขโ˜ฃโฌ†โ†—โžกโ†˜โฌ‡โ†™โฌ…โ†–โ†•โ†”โ†ฉโ†ชโคดโคต๐Ÿ”ƒ๐Ÿ”„๐Ÿ”™-๐Ÿ”๐Ÿ›โš›๐Ÿ•‰โœกโ˜ธโ˜ฏโœโ˜ฆโ˜ชโ˜ฎ๐Ÿ•Ž๐Ÿ”ฏ๐Ÿชฏโ™ˆ-โ™“โ›Ž๐Ÿ”€-๐Ÿ”‚โ–ถโฉโญโฏโ—€โชโฎ๐Ÿ”ผโซ๐Ÿ”ฝโฌโธ-โบโ๐ŸŽฆ๐Ÿ”…๐Ÿ”†๐Ÿ“ถ๐Ÿ›œ๐Ÿ“ณ๐Ÿ“ดโ™€โ™‚โšงโœ–โž•-โž—๐ŸŸฐโ™พโ€ผโ‰โ“-โ•โ—ใ€ฐ๐Ÿ’ฑ๐Ÿ’ฒโš•โ™ปโšœ๐Ÿ”ฑ๐Ÿ“›๐Ÿ”ฐโญ•โœ…โ˜‘โœ”โŒโŽโžฐโžฟใ€ฝโœณโœดโ‡ยฉยฎโ„ข๐Ÿ”Ÿ-๐Ÿ”ค๐Ÿ…ฐ๐Ÿ†Ž๐Ÿ…ฑ๐Ÿ†‘-๐Ÿ†“โ„น๐Ÿ†”โ“‚๐Ÿ†•๐Ÿ†–๐Ÿ…พ๐Ÿ†—๐Ÿ…ฟ๐Ÿ†˜-๐Ÿ†š๐Ÿˆ๐Ÿˆ‚๐Ÿˆท๐Ÿˆถ๐Ÿˆฏ๐Ÿ‰๐Ÿˆน๐Ÿˆš๐Ÿˆฒ๐Ÿ‰‘๐Ÿˆธ๐Ÿˆด๐ŸˆณใŠ—ใŠ™๐Ÿˆบ๐Ÿˆต๐Ÿ”ด๐ŸŸ -๐ŸŸข๐Ÿ”ต๐ŸŸฃ๐ŸŸคโšซโšช๐ŸŸฅ๐ŸŸง-๐ŸŸฉ๐ŸŸฆ๐ŸŸช๐ŸŸซโฌ›โฌœโ—ผโ—ปโ—พโ—ฝโ–ชโ–ซ๐Ÿ”ถ-๐Ÿ”ป๐Ÿ’ ๐Ÿ”˜๐Ÿ”ณ๐Ÿ”ฒ๐Ÿ๐Ÿšฉ๐ŸŽŒ๐Ÿด๐Ÿณ๐Ÿ‡ฆ-๐Ÿ‡ฟ\uD83E\uDD89\uD83E\uDD8F\uD83E\uDDBE\uD83E\uDDC6\uD83E\uddcd\uD83E\udddf\uD83E\ude99]|#๏ธโƒฃ|\\*๏ธโƒฃ|0๏ธโƒฃ|1๏ธโƒฃ|2๏ธโƒฃ|3๏ธโƒฃ|4๏ธโƒฃ|5๏ธโƒฃ|6๏ธโƒฃ|7๏ธโƒฃ|8๏ธโƒฃ|9๏ธโƒฃ)+"); + private static final Pattern emojiRegex = Pattern.compile("([๐Ÿป-๐Ÿฟ๐Ÿ˜€๐Ÿ˜ƒ๐Ÿ˜„๐Ÿ˜๐Ÿ˜†๐Ÿ˜…๐Ÿคฃ๐Ÿ˜‚๐Ÿ™‚๐Ÿ™ƒ๐Ÿซ ๐Ÿ˜‰๐Ÿ˜Š๐Ÿ˜‡๐Ÿฅฐ๐Ÿ˜๐Ÿคฉ๐Ÿ˜˜๐Ÿ˜—โ˜บ๐Ÿ˜š๐Ÿ˜™๐Ÿฅฒ๐Ÿ˜‹๐Ÿ˜›๐Ÿ˜œ๐Ÿคช๐Ÿ˜๐Ÿค‘๐Ÿค—๐Ÿคญ๐Ÿซข๐Ÿซฃ๐Ÿคซ๐Ÿค”๐Ÿซก๐Ÿค๐Ÿคจ๐Ÿ˜๐Ÿ˜‘๐Ÿ˜ถ๐Ÿซฅ๐Ÿ˜๐Ÿ˜’๐Ÿ™„๐Ÿ˜ฌ๐Ÿคฅ๐Ÿซจ๐Ÿ˜Œ๐Ÿ˜”๐Ÿ˜ช๐Ÿคค๐Ÿ˜ด๐Ÿ˜ท๐Ÿค’๐Ÿค•๐Ÿคข๐Ÿคฎ๐Ÿคง๐Ÿฅต๐Ÿฅถ๐Ÿฅด๐Ÿ˜ต๐Ÿคฏ๐Ÿค ๐Ÿฅณ๐Ÿฅธ๐Ÿ˜Ž๐Ÿค“๐Ÿง๐Ÿ˜•๐Ÿซค๐Ÿ˜Ÿ๐Ÿ™โ˜น๐Ÿ˜ฎ๐Ÿ˜ฏ๐Ÿ˜ฒ๐Ÿ˜ณ๐Ÿฅบ๐Ÿฅน๐Ÿ˜ฆ-๐Ÿ˜จ๐Ÿ˜ฐ๐Ÿ˜ฅ๐Ÿ˜ข๐Ÿ˜ญ๐Ÿ˜ฑ๐Ÿ˜–๐Ÿ˜ฃ๐Ÿ˜ž๐Ÿ˜“๐Ÿ˜ฉ๐Ÿ˜ซ๐Ÿฅฑ๐Ÿ˜ค๐Ÿ˜ก๐Ÿ˜ ๐Ÿคฌ๐Ÿ˜ˆ๐Ÿ‘ฟ๐Ÿ’€โ˜ ๐Ÿ’ฉ๐Ÿคก๐Ÿ‘น-๐Ÿ‘ป๐Ÿ‘ฝ๐Ÿ‘พ๐Ÿค–๐Ÿ˜บ๐Ÿ˜ธ๐Ÿ˜น๐Ÿ˜ป-๐Ÿ˜ฝ๐Ÿ™€๐Ÿ˜ฟ๐Ÿ˜พ๐Ÿ™ˆ-๐Ÿ™Š๐Ÿ’Œ๐Ÿ’˜๐Ÿ’๐Ÿ’–๐Ÿ’—๐Ÿ’“๐Ÿ’ž๐Ÿ’•๐Ÿ’Ÿโฃ๐Ÿ’”โค๐Ÿฉท๐Ÿงก๐Ÿ’›๐Ÿ’š๐Ÿ’™๐Ÿฉต๐Ÿ’œ๐ŸคŽ๐Ÿ–ค๐Ÿฉถ๐Ÿค๐Ÿ’‹๐Ÿ’ฏ๐Ÿ’ข๐Ÿ’ฅ๐Ÿ’ซ๐Ÿ’ฆ๐Ÿ’จ๐Ÿ•ณ๐Ÿ’ฌ๐Ÿ—จ๐Ÿ—ฏ๐Ÿ’ญ๐Ÿ’ค๐Ÿ‘‹๐Ÿคš๐Ÿ–โœ‹๐Ÿ––๐Ÿซฑ-๐Ÿซด๐Ÿซท๐Ÿซธ๐Ÿ‘Œ๐ŸคŒ๐ŸคโœŒ๐Ÿคž๐Ÿซฐ๐ŸคŸ๐Ÿค˜๐Ÿค™๐Ÿ‘ˆ๐Ÿ‘‰๐Ÿ‘†๐Ÿ–•๐Ÿ‘‡โ˜๐Ÿซต๐Ÿ‘๐Ÿ‘ŽโœŠ๐Ÿ‘Š๐Ÿค›๐Ÿคœ๐Ÿ‘๐Ÿ™Œ๐Ÿซถ๐Ÿ‘๐Ÿคฒ๐Ÿค๐Ÿ™โœ๐Ÿ’…๐Ÿคณ๐Ÿ’ช๐Ÿฆพ๐Ÿฆฟ๐Ÿฆต๐Ÿฆถ๐Ÿ‘‚๐Ÿฆป๐Ÿ‘ƒ๐Ÿง ๐Ÿซ€๐Ÿซ๐Ÿฆท๐Ÿฆด๐Ÿ‘€๐Ÿ‘๐Ÿ‘…๐Ÿ‘„๐Ÿซฆ๐Ÿ‘ถ๐Ÿง’๐Ÿ‘ฆ๐Ÿ‘ง๐Ÿง‘๐Ÿ‘ฑ๐Ÿ‘จ๐Ÿง”๐Ÿ‘ฉ๐Ÿง“๐Ÿ‘ด๐Ÿ‘ต๐Ÿ™๐Ÿ™Ž๐Ÿ™…๐Ÿ™†๐Ÿ’๐Ÿ™‹๐Ÿง๐Ÿ™‡๐Ÿคฆ๐Ÿคท๐Ÿ‘ฎ๐Ÿ•ต๐Ÿ’‚๐Ÿฅท๐Ÿ‘ท๐Ÿซ…๐Ÿคด๐Ÿ‘ธ๐Ÿ‘ณ๐Ÿ‘ฒ๐Ÿง•๐Ÿคต๐Ÿ‘ฐ๐Ÿคฐ๐Ÿซƒ๐Ÿซ„๐Ÿคฑ๐Ÿ‘ผ๐ŸŽ…๐Ÿคถ๐Ÿฆธ๐Ÿฆน๐Ÿง™-๐ŸงŸ๐ŸงŒ๐Ÿ’†๐Ÿ’‡๐Ÿšถ๐Ÿง๐ŸงŽ๐Ÿƒ๐Ÿ’ƒ๐Ÿ•บ๐Ÿ•ด๐Ÿ‘ฏ๐Ÿง–๐Ÿง—๐Ÿคบ๐Ÿ‡โ›ท๐Ÿ‚๐ŸŒ๐Ÿ„๐Ÿšฃ๐ŸŠโ›น๐Ÿ‹๐Ÿšด๐Ÿšต๐Ÿคธ๐Ÿคผ-๐Ÿคพ๐Ÿคน๐Ÿง˜๐Ÿ›€๐Ÿ›Œ๐Ÿ‘ญ๐Ÿ‘ซ๐Ÿ‘ฌ๐Ÿ’๐Ÿ’‘๐Ÿ—ฃ๐Ÿ‘ค๐Ÿ‘ฅ๐Ÿซ‚๐Ÿ‘ช๐Ÿ‘ฃ๐Ÿฆฐ๐Ÿฆฑ๐Ÿฆณ๐Ÿฆฒ๐Ÿต๐Ÿ’๐Ÿฆ๐Ÿฆง๐Ÿถ๐Ÿ•๐Ÿฆฎ๐Ÿฉ๐Ÿบ๐ŸฆŠ๐Ÿฆ๐Ÿฑ๐Ÿˆ๐Ÿฆ๐Ÿฏ๐Ÿ…๐Ÿ†๐Ÿด๐ŸซŽ๐Ÿซ๐ŸŽ๐Ÿฆ„๐Ÿฆ“๐ŸฆŒ๐Ÿฆฌ๐Ÿฎ๐Ÿ‚-๐Ÿ„๐Ÿท๐Ÿ–๐Ÿ—๐Ÿฝ๐Ÿ๐Ÿ‘๐Ÿ๐Ÿช๐Ÿซ๐Ÿฆ™๐Ÿฆ’๐Ÿ˜๐Ÿฆฃ๐Ÿฆ๐Ÿฆ›๐Ÿญ๐Ÿ๐Ÿ€๐Ÿน๐Ÿฐ๐Ÿ‡๐Ÿฟ๐Ÿฆซ๐Ÿฆ”๐Ÿฆ‡๐Ÿป๐Ÿจ๐Ÿผ๐Ÿฆฅ๐Ÿฆฆ๐Ÿฆจ๐Ÿฆ˜๐Ÿฆก๐Ÿพ๐Ÿฆƒ๐Ÿ”๐Ÿ“๐Ÿฃ-๐Ÿง๐Ÿ•Š๐Ÿฆ…๐Ÿฆ†๐Ÿฆข๐Ÿฆ‰๐Ÿฆค๐Ÿชถ๐Ÿฆฉ๐Ÿฆš๐Ÿฆœ๐Ÿชฝ๐Ÿชฟ๐Ÿธ๐ŸŠ๐Ÿข๐ŸฆŽ๐Ÿ๐Ÿฒ๐Ÿ‰๐Ÿฆ•๐Ÿฆ–๐Ÿณ๐Ÿ‹๐Ÿฌ๐Ÿฆญ๐ŸŸ-๐Ÿก๐Ÿฆˆ๐Ÿ™๐Ÿš๐Ÿชธ๐Ÿชผ๐ŸŒ๐Ÿฆ‹๐Ÿ›-๐Ÿ๐Ÿชฒ๐Ÿž๐Ÿฆ—๐Ÿชณ๐Ÿ•ท๐Ÿ•ธ๐Ÿฆ‚๐ŸฆŸ๐Ÿชฐ๐Ÿชฑ๐Ÿฆ ๐Ÿ’๐ŸŒธ๐Ÿ’ฎ๐Ÿชท๐Ÿต๐ŸŒน๐Ÿฅ€๐ŸŒบ-๐ŸŒผ๐ŸŒท๐Ÿชป๐ŸŒฑ๐Ÿชด๐ŸŒฒ-๐ŸŒต๐ŸŒพ๐ŸŒฟโ˜˜๐Ÿ€-๐Ÿƒ๐Ÿชน๐Ÿชบ๐Ÿ„๐Ÿ‡-๐Ÿ๐Ÿฅญ๐ŸŽ-๐Ÿ“๐Ÿซ๐Ÿฅ๐Ÿ…๐Ÿซ’๐Ÿฅฅ๐Ÿฅ‘๐Ÿ†๐Ÿฅ”๐Ÿฅ•๐ŸŒฝ๐ŸŒถ๐Ÿซ‘๐Ÿฅ’๐Ÿฅฌ๐Ÿฅฆ๐Ÿง„๐Ÿง…๐Ÿฅœ๐Ÿซ˜๐ŸŒฐ๐Ÿซš๐Ÿซ›๐Ÿž๐Ÿฅ๐Ÿฅ–๐Ÿซ“๐Ÿฅจ๐Ÿฅฏ๐Ÿฅž๐Ÿง‡๐Ÿง€๐Ÿ–๐Ÿ—๐Ÿฅฉ๐Ÿฅ“๐Ÿ”๐ŸŸ๐Ÿ•๐ŸŒญ๐Ÿฅช๐ŸŒฎ๐ŸŒฏ๐Ÿซ”๐Ÿฅ™๐Ÿง†๐Ÿฅš๐Ÿณ๐Ÿฅ˜๐Ÿฒ๐Ÿซ•๐Ÿฅฃ๐Ÿฅ—๐Ÿฟ๐Ÿงˆ๐Ÿง‚๐Ÿฅซ๐Ÿฑ๐Ÿ˜-๐Ÿ๐Ÿ ๐Ÿข-๐Ÿฅ๐Ÿฅฎ๐Ÿก๐ŸฅŸ-๐Ÿฅก๐Ÿฆ€๐Ÿฆž๐Ÿฆ๐Ÿฆ‘๐Ÿฆช๐Ÿฆ-๐Ÿช๐ŸŽ‚๐Ÿฐ๐Ÿง๐Ÿฅง๐Ÿซ-๐Ÿฏ๐Ÿผ๐Ÿฅ›โ˜•๐Ÿซ–๐Ÿต๐Ÿถ๐Ÿพ๐Ÿท-๐Ÿป๐Ÿฅ‚๐Ÿฅƒ๐Ÿซ—๐Ÿฅค๐Ÿง‹๐Ÿงƒ๐Ÿง‰๐ŸงŠ๐Ÿฅข๐Ÿฝ๐Ÿด๐Ÿฅ„๐Ÿ”ช๐Ÿซ™๐Ÿบ๐ŸŒ-๐ŸŒ๐Ÿ—บ๐Ÿ—พ๐Ÿงญ๐Ÿ”โ›ฐ๐ŸŒ‹๐Ÿ—ป๐Ÿ•๐Ÿ–๐Ÿœ-๐ŸŸ๐Ÿ›๐Ÿ—๐Ÿงฑ๐Ÿชจ๐Ÿชต๐Ÿ›–๐Ÿ˜๐Ÿš๐Ÿ -๐Ÿฆ๐Ÿจ-๐Ÿญ๐Ÿฏ๐Ÿฐ๐Ÿ’’๐Ÿ—ผ๐Ÿ—ฝโ›ช๐Ÿ•Œ๐Ÿ›•๐Ÿ•โ›ฉ๐Ÿ•‹โ›ฒโ›บ๐ŸŒ๐ŸŒƒ๐Ÿ™๐ŸŒ„-๐ŸŒ‡๐ŸŒ‰โ™จ๐ŸŽ ๐Ÿ›๐ŸŽก๐ŸŽข๐Ÿ’ˆ๐ŸŽช๐Ÿš‚-๐ŸšŠ๐Ÿš๐Ÿšž๐Ÿš‹-๐ŸšŽ๐Ÿš-๐Ÿš™๐Ÿ›ป๐Ÿšš-๐Ÿšœ๐ŸŽ๐Ÿ๐Ÿ›ต๐Ÿฆฝ๐Ÿฆผ๐Ÿ›บ๐Ÿšฒ๐Ÿ›ด๐Ÿ›น๐Ÿ›ผ๐Ÿš๐Ÿ›ฃ๐Ÿ›ค๐Ÿ›ขโ›ฝ๐Ÿ›ž๐Ÿšจ๐Ÿšฅ๐Ÿšฆ๐Ÿ›‘๐Ÿšงโš“๐Ÿ›Ÿโ›ต๐Ÿ›ถ๐Ÿšค๐Ÿ›ณโ›ด๐Ÿ›ฅ๐Ÿšขโœˆ๐Ÿ›ฉ๐Ÿ›ซ๐Ÿ›ฌ๐Ÿช‚๐Ÿ’บ๐Ÿš๐ŸšŸ-๐Ÿšก๐Ÿ›ฐ๐Ÿš€๐Ÿ›ธ๐Ÿ›Ž๐ŸงณโŒ›โณโŒšโฐ-โฒ๐Ÿ•ฐ๐Ÿ•›๐Ÿ•ง๐Ÿ•๐Ÿ•œ๐Ÿ•‘๐Ÿ•๐Ÿ•’๐Ÿ•ž๐Ÿ•“๐Ÿ•Ÿ๐Ÿ•”๐Ÿ• ๐Ÿ••๐Ÿ•ก๐Ÿ•–๐Ÿ•ข๐Ÿ•—๐Ÿ•ฃ๐Ÿ•˜๐Ÿ•ค๐Ÿ•™๐Ÿ•ฅ๐Ÿ•š๐Ÿ•ฆ๐ŸŒ‘-๐ŸŒœ๐ŸŒกโ˜€๐ŸŒ๐ŸŒž๐Ÿชโญ๐ŸŒŸ๐ŸŒ ๐ŸŒŒโ˜โ›…โ›ˆ๐ŸŒค-๐ŸŒฌ๐ŸŒ€๐ŸŒˆ๐ŸŒ‚โ˜‚โ˜”โ›ฑโšกโ„โ˜ƒโ›„โ˜„๐Ÿ”ฅ๐Ÿ’ง๐ŸŒŠ๐ŸŽƒ๐ŸŽ„๐ŸŽ†๐ŸŽ‡๐Ÿงจโœจ๐ŸŽˆ-๐ŸŽ‹๐ŸŽ-๐ŸŽ‘๐Ÿงง๐ŸŽ€๐ŸŽ๐ŸŽ—๐ŸŽŸ๐ŸŽซ๐ŸŽ–๐Ÿ†๐Ÿ…๐Ÿฅ‡-๐Ÿฅ‰โšฝโšพ๐ŸฅŽ๐Ÿ€๐Ÿ๐Ÿˆ๐Ÿ‰๐ŸŽพ๐Ÿฅ๐ŸŽณ๐Ÿ๐Ÿ‘๐Ÿ’๐Ÿฅ๐Ÿ“๐Ÿธ๐ŸฅŠ๐Ÿฅ‹๐Ÿฅ…โ›ณโ›ธ๐ŸŽฃ๐Ÿคฟ๐ŸŽฝ๐ŸŽฟ๐Ÿ›ท๐ŸฅŒ๐ŸŽฏ๐Ÿช€๐Ÿช๐Ÿ”ซ๐ŸŽฑ๐Ÿ”ฎ๐Ÿช„๐ŸŽฎ๐Ÿ•น๐ŸŽฐ๐ŸŽฒ๐Ÿงฉ๐Ÿงธ๐Ÿช…๐Ÿชฉ๐Ÿช†โ™ โ™ฅโ™ฆโ™ฃโ™Ÿ๐Ÿƒ๐Ÿ€„๐ŸŽด๐ŸŽญ๐Ÿ–ผ๐ŸŽจ๐Ÿงต๐Ÿชก๐Ÿงถ๐Ÿชข๐Ÿ‘“๐Ÿ•ถ๐Ÿฅฝ๐Ÿฅผ๐Ÿฆบ๐Ÿ‘”-๐Ÿ‘–๐Ÿงฃ-๐Ÿงฆ๐Ÿ‘—๐Ÿ‘˜๐Ÿฅป๐Ÿฉฑ-๐Ÿฉณ๐Ÿ‘™๐Ÿ‘š๐Ÿชญ๐Ÿ‘›-๐Ÿ‘๐Ÿ›๐ŸŽ’๐Ÿฉด๐Ÿ‘ž๐Ÿ‘Ÿ๐Ÿฅพ๐Ÿฅฟ๐Ÿ‘ ๐Ÿ‘ก๐Ÿฉฐ๐Ÿ‘ข๐Ÿชฎ๐Ÿ‘‘๐Ÿ‘’๐ŸŽฉ๐ŸŽ“๐Ÿงข๐Ÿช–โ›‘๐Ÿ“ฟ๐Ÿ’„๐Ÿ’๐Ÿ’Ž๐Ÿ”‡-๐Ÿ”Š๐Ÿ“ข๐Ÿ“ฃ๐Ÿ“ฏ๐Ÿ””๐Ÿ”•๐ŸŽผ๐ŸŽต๐ŸŽถ๐ŸŽ™-๐ŸŽ›๐ŸŽค๐ŸŽง๐Ÿ“ป๐ŸŽท๐Ÿช—๐ŸŽธ-๐ŸŽป๐Ÿช•๐Ÿฅ๐Ÿช˜๐Ÿช‡๐Ÿชˆ๐Ÿ“ฑ๐Ÿ“ฒโ˜Ž๐Ÿ“ž-๐Ÿ“ ๐Ÿ”‹๐Ÿชซ๐Ÿ”Œ๐Ÿ’ป๐Ÿ–ฅ๐Ÿ–จโŒจ๐Ÿ–ฑ๐Ÿ–ฒ๐Ÿ’ฝ-๐Ÿ“€๐Ÿงฎ๐ŸŽฅ๐ŸŽž๐Ÿ“ฝ๐ŸŽฌ๐Ÿ“บ๐Ÿ“ท-๐Ÿ“น๐Ÿ“ผ๐Ÿ”๐Ÿ”Ž๐Ÿ•ฏ๐Ÿ’ก๐Ÿ”ฆ๐Ÿฎ๐Ÿช”๐Ÿ“”-๐Ÿ“š๐Ÿ““๐Ÿ“’๐Ÿ“ƒ๐Ÿ“œ๐Ÿ“„๐Ÿ“ฐ๐Ÿ—ž๐Ÿ“‘๐Ÿ”–๐Ÿท๐Ÿ’ฐ๐Ÿช™๐Ÿ’ด-๐Ÿ’ธ๐Ÿ’ณ๐Ÿงพ๐Ÿ’นโœ‰๐Ÿ“ง-๐Ÿ“ฉ๐Ÿ“ค-๐Ÿ“ฆ๐Ÿ“ซ๐Ÿ“ช๐Ÿ“ฌ-๐Ÿ“ฎ๐Ÿ—ณโœโœ’๐Ÿ–‹๐Ÿ–Š๐Ÿ–Œ๐Ÿ–๐Ÿ“๐Ÿ’ผ๐Ÿ“๐Ÿ“‚๐Ÿ—‚๐Ÿ“…๐Ÿ“†๐Ÿ—’๐Ÿ—“๐Ÿ“‡-๐Ÿ“Ž๐Ÿ–‡๐Ÿ“๐Ÿ“โœ‚๐Ÿ—ƒ๐Ÿ—„๐Ÿ—‘๐Ÿ”’๐Ÿ”“๐Ÿ”-๐Ÿ”‘๐Ÿ—๐Ÿ”จ๐Ÿช“โ›โš’๐Ÿ› ๐Ÿ—กโš”๐Ÿ’ฃ๐Ÿชƒ๐Ÿน๐Ÿ›ก๐Ÿชš๐Ÿ”ง๐Ÿช›๐Ÿ”ฉโš™๐Ÿ—œโš–๐Ÿฆฏ๐Ÿ”—โ›“๐Ÿช๐Ÿงฐ๐Ÿงฒ๐Ÿชœโš—๐Ÿงช-๐Ÿงฌ๐Ÿ”ฌ๐Ÿ”ญ๐Ÿ“ก๐Ÿ’‰๐Ÿฉธ๐Ÿ’Š๐Ÿฉน๐Ÿฉผ๐Ÿฉบ๐Ÿฉป๐Ÿšช๐Ÿ›—๐Ÿชž๐ŸชŸ๐Ÿ›๐Ÿ›‹๐Ÿช‘๐Ÿšฝ๐Ÿช ๐Ÿšฟ๐Ÿ›๐Ÿชค๐Ÿช’๐Ÿงด๐Ÿงท๐Ÿงน-๐Ÿงป๐Ÿชฃ๐Ÿงผ๐Ÿซง๐Ÿชฅ๐Ÿงฝ๐Ÿงฏ๐Ÿ›’๐Ÿšฌโšฐ๐Ÿชฆโšฑ๐Ÿงฟ๐Ÿชฌ๐Ÿ—ฟ๐Ÿชง๐Ÿชช๐Ÿง๐Ÿšฎ๐Ÿšฐโ™ฟ๐Ÿšน-๐Ÿšผ๐Ÿšพ๐Ÿ›‚-๐Ÿ›…โš ๐Ÿšธโ›”๐Ÿšซ๐Ÿšณ๐Ÿšญ๐Ÿšฏ๐Ÿšฑ๐Ÿšท๐Ÿ“ต๐Ÿ”žโ˜ขโ˜ฃโฌ†โ†—โžกโ†˜โฌ‡โ†™โฌ…โ†–โ†•โ†”โ†ฉโ†ชโคดโคต๐Ÿ”ƒ๐Ÿ”„๐Ÿ”™-๐Ÿ”๐Ÿ›โš›๐Ÿ•‰โœกโ˜ธโ˜ฏโœโ˜ฆโ˜ชโ˜ฎ๐Ÿ•Ž๐Ÿ”ฏ๐Ÿชฏโ™ˆ-โ™“โ›Ž๐Ÿ”€-๐Ÿ”‚โ–ถโฉโญโฏโ—€โชโฎ๐Ÿ”ผโซ๐Ÿ”ฝโฌโธ-โบโ๐ŸŽฆ๐Ÿ”…๐Ÿ”†๐Ÿ“ถ๐Ÿ›œ๐Ÿ“ณ๐Ÿ“ดโ™€โ™‚โšงโœ–โž•-โž—๐ŸŸฐโ™พโ€ผโ‰โ“-โ•โ—ใ€ฐ๐Ÿ’ฑ๐Ÿ’ฒโš•โ™ปโšœ๐Ÿ”ฑ๐Ÿ“›๐Ÿ”ฐโญ•โœ…โ˜‘โœ”โŒโŽโžฐโžฟใ€ฝโœณโœดโ‡ยฉยฎโ„ข๐Ÿ”Ÿ-๐Ÿ”ค๐Ÿ…ฐ๐Ÿ†Ž๐Ÿ…ฑ๐Ÿ†‘-๐Ÿ†“โ„น๐Ÿ†”โ“‚๐Ÿ†•๐Ÿ†–๐Ÿ…พ๐Ÿ†—๐Ÿ…ฟ๐Ÿ†˜-๐Ÿ†š๐Ÿˆ๐Ÿˆ‚๐Ÿˆท๐Ÿˆถ๐Ÿˆฏ๐Ÿ‰๐Ÿˆน๐Ÿˆš๐Ÿˆฒ๐Ÿ‰‘๐Ÿˆธ๐Ÿˆด๐ŸˆณใŠ—ใŠ™๐Ÿˆบ๐Ÿˆต๐Ÿ”ด๐ŸŸ -๐ŸŸข๐Ÿ”ต๐ŸŸฃ๐ŸŸคโšซโšช๐ŸŸฅ๐ŸŸง-๐ŸŸฉ๐ŸŸฆ๐ŸŸช๐ŸŸซโฌ›โฌœโ—ผโ—ปโ—พโ—ฝโ–ชโ–ซ๐Ÿ”ถ-๐Ÿ”ป๐Ÿ’ ๐Ÿ”˜๐Ÿ”ณ๐Ÿ”ฒ๐Ÿ๐Ÿšฉ๐ŸŽŒ๐Ÿด๐Ÿณ๐Ÿ‡ฆ-๐Ÿ‡ฟ\uD83E\uDD89\uD83E\uDD8F\uD83E\uDDBE\uD83E\uDDC6\uD83E\uddcd\uD83E\udddf\uD83E\ude99]|#๏ธโƒฃ|\\*๏ธโƒฃ|0๏ธโƒฃ|1๏ธโƒฃ|2๏ธโƒฃ|3๏ธโƒฃ|4๏ธโƒฃ|5๏ธโƒฃ|6๏ธโƒฃ|7๏ธโƒฃ|8๏ธโƒฃ|9๏ธโƒฃ)+.*"); private float originalFontSize; public AutoScaledEmojiTextView(Context context) { @@ -73,36 +73,35 @@ public class AutoScaledEmojiTextView extends AppCompatTextView { if (text.length() > 21 || text.isEmpty() || Character.isLetter(text.charAt(0))) { return 1; } - int emojiCount = countGraphemes(text, 8); - if (emojiCount > 8) { + int emojiCount = countEmojis(text, 8); + if (emojiCount <= 0) { return 1; } - boolean isEmoji = emojiRegex.matcher(text).matches(); - if (isEmoji) { - float scale = 1.25f; - if (emojiCount <= 6) scale += 0.25f; - if (emojiCount <= 4) scale += 0.25f; - if (emojiCount <= 2) scale += 0.25f; - return scale; - } - return 1; + float scale = 1.25f; + if (emojiCount <= 6) scale += 0.25f; + if (emojiCount <= 4) scale += 0.25f; + if (emojiCount <= 2) scale += 0.25f; + return scale; } - public static int countGraphemes(String text, int max) { - // Create a BreakIterator for grapheme boundaries + /** + * Returns the number of emojis if there are only emojis AND there are no more than `max` emojis, + * or -1 otherwise. + */ + public static int countEmojis(String text, int max) { BreakIterator graphemeIterator = BreakIterator.getCharacterInstance(Locale.getDefault()); - // Set the text to be analyzed graphemeIterator.setText(text); - // Initialize count int graphemeCount = 0; // Iterate over the text and count graphemes int start = graphemeIterator.first(); for (int end = graphemeIterator.next(); end != BreakIterator.DONE; start = end, end = graphemeIterator.next()) { - if (++graphemeCount > max) break; + String grapheme = text.substring(start, end); + if (!emojiRegex.matcher(grapheme).matches()) return -1; + if (++graphemeCount > max) return -1; } return graphemeCount;