#include "third_party/blink/renderer/platform/text/character.h"
#include <unicode/uvernum.h>
namespace blink {
#if U_ICU_VERSION_MAJOR_NUM < 78
static const char kEmojiTextPattern[] =
R"([[\U00000023][\U0000002A][\U00000030-\U00000039][\U000000A9])"
R"([\U000000AE][\U0000203C][\U00002049][\U00002122][\U00002139])"
R"([\U00002194-\U00002199][\U000021A9-\U000021AA][\U0000231A-\U0000231B])"
R"([\U00002328][\U000023CF][\U000023E9-\U000023EC])"
R"([\U000023ED-\U000023EE][\U000023EF][\U000023F0])"
R"([\U000023F1-\U000023F2][\U000023F3][\U000023F8-\U000023FA])"
R"([\U000024C2][\U000025AA-\U000025AB][\U000025B6][\U000025C0])"
R"([\U000025FB-\U000025FE][\U00002600-\U00002601][\U00002602-\U00002603])"
R"([\U00002604][\U0000260E][\U00002611][\U00002614-\U00002615])"
R"([\U00002618][\U0000261D][\U00002620][\U00002622-\U00002623])"
R"([\U00002626][\U0000262A][\U0000262E][\U0000262F])"
R"([\U00002638-\U00002639][\U0000263A][\U00002640][\U00002642])"
R"([\U00002648-\U00002653][\U0000265F][\U00002660][\U00002663])"
R"([\U00002665-\U00002666][\U00002668][\U0000267B][\U0000267E])"
R"([\U0000267F][\U00002692][\U00002693][\U00002694][\U00002695])"
R"([\U00002696-\U00002697][\U00002699][\U0000269B-\U0000269C])"
R"([\U000026A0-\U000026A1][\U000026A7][\U000026AA-\U000026AB])"
R"([\U000026B0-\U000026B1][\U000026BD-\U000026BE][\U000026C4-\U000026C5])"
R"([\U000026C8][\U000026CE][\U000026CF][\U000026D1][\U000026D3])"
R"([\U000026D4][\U000026E9][\U000026EA][\U000026F0-\U000026F1])"
R"([\U000026F2-\U000026F3][\U000026F4][\U000026F5])"
R"([\U000026F7-\U000026F9][\U000026FA][\U000026FD][\U00002702])"
R"([\U00002705][\U00002708-\U0000270C][\U0000270D][\U0000270F])"
R"([\U00002712][\U00002714][\U00002716][\U0000271D][\U00002721])"
R"([\U00002728][\U00002733-\U00002734][\U00002744][\U00002747])"
R"([\U0000274C][\U0000274E][\U00002753-\U00002755][\U00002757])"
R"([\U00002763][\U00002764][\U00002795-\U00002797][\U000027A1])"
R"([\U000027B0][\U000027BF][\U00002934-\U00002935])"
R"([\U00002B05-\U00002B07][\U00002B1B-\U00002B1C][\U00002B50])"
R"([\U00002B55][\U00003030][\U0000303D][\U00003297][\U00003299])"
R"([\U0001F004][\U0001F0CF][\U0001F170-\U0001F171])"
R"([\U0001F17E-\U0001F17F][\U0001F18E][\U0001F191-\U0001F19A])"
R"([\U0001F1E6-\U0001F1FF][\U0001F201-\U0001F202][\U0001F21A])"
R"([\U0001F22F][\U0001F232-\U0001F23A][\U0001F250-\U0001F251])"
R"([\U0001F300-\U0001F30C][\U0001F30D-\U0001F30E][\U0001F30F])"
R"([\U0001F310][\U0001F311][\U0001F312][\U0001F313-\U0001F315])"
R"([\U0001F316-\U0001F318][\U0001F319][\U0001F31A][\U0001F31B])"
R"([\U0001F31C][\U0001F31D-\U0001F31E][\U0001F31F-\U0001F320])"
R"([\U0001F321][\U0001F324-\U0001F32C][\U0001F32D-\U0001F32F])"
R"([\U0001F330-\U0001F331][\U0001F332-\U0001F333][\U0001F334-\U0001F335])"
R"([\U0001F336][\U0001F337-\U0001F34A][\U0001F34B])"
R"([\U0001F34C-\U0001F34F][\U0001F350][\U0001F351-\U0001F37B])"
R"([\U0001F37C][\U0001F37D][\U0001F37E-\U0001F37F])"
R"([\U0001F380-\U0001F393][\U0001F396-\U0001F397][\U0001F399-\U0001F39B])"
R"([\U0001F39E-\U0001F39F][\U0001F3A0-\U0001F3C4][\U0001F3C5])"
R"([\U0001F3C6][\U0001F3C7][\U0001F3C8][\U0001F3C9][\U0001F3CA])"
R"([\U0001F3CB-\U0001F3CE][\U0001F3CF-\U0001F3D3][\U0001F3D4-\U0001F3DF])"
R"([\U0001F3E0-\U0001F3E3][\U0001F3E4][\U0001F3E5-\U0001F3F0])"
R"([\U0001F3F3][\U0001F3F4][\U0001F3F5][\U0001F3F7])"
R"([\U0001F3F8-\U0001F407][\U0001F408][\U0001F409-\U0001F40B])"
R"([\U0001F40C-\U0001F40E][\U0001F40F-\U0001F410][\U0001F411-\U0001F412])"
R"([\U0001F413][\U0001F414][\U0001F415][\U0001F416])"
R"([\U0001F417-\U0001F429][\U0001F42A][\U0001F42B-\U0001F43E])"
R"([\U0001F43F][\U0001F440][\U0001F441][\U0001F442-\U0001F464])"
R"([\U0001F465][\U0001F466-\U0001F46B][\U0001F46C-\U0001F46D])"
R"([\U0001F46E-\U0001F4AC][\U0001F4AD][\U0001F4AE-\U0001F4B5])"
R"([\U0001F4B6-\U0001F4B7][\U0001F4B8-\U0001F4EB][\U0001F4EC-\U0001F4ED])"
R"([\U0001F4EE][\U0001F4EF][\U0001F4F0-\U0001F4F4][\U0001F4F5])"
R"([\U0001F4F6-\U0001F4F7][\U0001F4F8][\U0001F4F9-\U0001F4FC])"
R"([\U0001F4FD][\U0001F4FF-\U0001F502][\U0001F503])"
R"([\U0001F504-\U0001F507][\U0001F508][\U0001F509])"
R"([\U0001F50A-\U0001F514][\U0001F515][\U0001F516-\U0001F52B])"
R"([\U0001F52C-\U0001F52D][\U0001F52E-\U0001F53D][\U0001F549-\U0001F54A])"
R"([\U0001F54B-\U0001F54E][\U0001F550-\U0001F55B][\U0001F55C-\U0001F567])"
R"([\U0001F56F-\U0001F570][\U0001F573-\U0001F579][\U0001F57A])"
R"([\U0001F587][\U0001F58A-\U0001F58D][\U0001F590])"
R"([\U0001F595-\U0001F596][\U0001F5A4][\U0001F5A5][\U0001F5A8])"
R"([\U0001F5B1-\U0001F5B2][\U0001F5BC][\U0001F5C2-\U0001F5C4])"
R"([\U0001F5D1-\U0001F5D3][\U0001F5DC-\U0001F5DE][\U0001F5E1])"
R"([\U0001F5E3][\U0001F5E8][\U0001F5EF][\U0001F5F3][\U0001F5FA])"
R"([\U0001F5FB-\U0001F5FF][\U0001F600][\U0001F601-\U0001F606])"
R"([\U0001F607-\U0001F608][\U0001F609-\U0001F60D][\U0001F60E])"
R"([\U0001F60F][\U0001F610][\U0001F611][\U0001F612-\U0001F614])"
R"([\U0001F615][\U0001F616][\U0001F617][\U0001F618][\U0001F619])"
R"([\U0001F61A][\U0001F61B][\U0001F61C-\U0001F61E][\U0001F61F])"
R"([\U0001F620-\U0001F625][\U0001F626-\U0001F627][\U0001F628-\U0001F62B])"
R"([\U0001F62C][\U0001F62D][\U0001F62E-\U0001F62F])"
R"([\U0001F630-\U0001F633][\U0001F634][\U0001F635][\U0001F636])"
R"([\U0001F637-\U0001F640][\U0001F641-\U0001F644][\U0001F645-\U0001F64F])"
R"([\U0001F680][\U0001F681-\U0001F682][\U0001F683-\U0001F685])"
R"([\U0001F686][\U0001F687][\U0001F688][\U0001F689])"
R"([\U0001F68A-\U0001F68B][\U0001F68C][\U0001F68D][\U0001F68E])"
R"([\U0001F68F][\U0001F690][\U0001F691-\U0001F693][\U0001F694])"
R"([\U0001F695][\U0001F696][\U0001F697][\U0001F698])"
R"([\U0001F699-\U0001F69A][\U0001F69B-\U0001F6A1][\U0001F6A2])"
R"([\U0001F6A3][\U0001F6A4-\U0001F6A5][\U0001F6A6])"
R"([\U0001F6A7-\U0001F6AD][\U0001F6AE-\U0001F6B1][\U0001F6B2])"
R"([\U0001F6B3-\U0001F6B5][\U0001F6B6][\U0001F6B7-\U0001F6B8])"
R"([\U0001F6B9-\U0001F6BE][\U0001F6BF][\U0001F6C0])"
R"([\U0001F6C1-\U0001F6C5][\U0001F6CB][\U0001F6CC])"
R"([\U0001F6CD-\U0001F6CF][\U0001F6D0][\U0001F6D1-\U0001F6D2])"
R"([\U0001F6D5][\U0001F6D6-\U0001F6D7][\U0001F6D8][\U0001F6DC])"
R"([\U0001F6DD-\U0001F6DF][\U0001F6E0-\U0001F6E5][\U0001F6E9])"
R"([\U0001F6EB-\U0001F6EC][\U0001F6F0][\U0001F6F3])"
R"([\U0001F6F4-\U0001F6F6][\U0001F6F7-\U0001F6F8][\U0001F6F9])"
R"([\U0001F6FA][\U0001F6FB-\U0001F6FC][\U0001F7E0-\U0001F7EB])"
R"([\U0001F7F0][\U0001F90C][\U0001F90D-\U0001F90F])"
R"([\U0001F910-\U0001F918][\U0001F919-\U0001F91E][\U0001F91F])"
R"([\U0001F920-\U0001F927][\U0001F928-\U0001F92F][\U0001F930])"
R"([\U0001F931-\U0001F932][\U0001F933-\U0001F93A][\U0001F93C-\U0001F93E])"
R"([\U0001F93F][\U0001F940-\U0001F945][\U0001F947-\U0001F94B])"
R"([\U0001F94C][\U0001F94D-\U0001F94F][\U0001F950-\U0001F95E])"
R"([\U0001F95F-\U0001F96B][\U0001F96C-\U0001F970][\U0001F971])"
R"([\U0001F972][\U0001F973-\U0001F976][\U0001F977-\U0001F978])"
R"([\U0001F979][\U0001F97A][\U0001F97B][\U0001F97C-\U0001F97F])"
R"([\U0001F980-\U0001F984][\U0001F985-\U0001F991][\U0001F992-\U0001F997])"
R"([\U0001F998-\U0001F9A2][\U0001F9A3-\U0001F9A4][\U0001F9A5-\U0001F9AA])"
R"([\U0001F9AB-\U0001F9AD][\U0001F9AE-\U0001F9AF][\U0001F9B0-\U0001F9B9])"
R"([\U0001F9BA-\U0001F9BF][\U0001F9C0][\U0001F9C1-\U0001F9C2])"
R"([\U0001F9C3-\U0001F9CA][\U0001F9CB][\U0001F9CC])"
R"([\U0001F9CD-\U0001F9CF][\U0001F9D0-\U0001F9E6][\U0001F9E7-\U0001F9FF])"
R"([\U0001FA70-\U0001FA73][\U0001FA74][\U0001FA75-\U0001FA77])"
R"([\U0001FA78-\U0001FA7A][\U0001FA7B-\U0001FA7C][\U0001FA80-\U0001FA82])"
R"([\U0001FA83-\U0001FA86][\U0001FA87-\U0001FA88][\U0001FA89])"
R"([\U0001FA8A][\U0001FA8E][\U0001FA8F][\U0001FA90-\U0001FA95])"
R"([\U0001FA96-\U0001FAA8][\U0001FAA9-\U0001FAAC][\U0001FAAD-\U0001FAAF])"
R"([\U0001FAB0-\U0001FAB6][\U0001FAB7-\U0001FABA][\U0001FABB-\U0001FABD])"
R"([\U0001FABE][\U0001FABF][\U0001FAC0-\U0001FAC2])"
R"([\U0001FAC3-\U0001FAC5][\U0001FAC6][\U0001FAC8][\U0001FACD])"
R"([\U0001FACE-\U0001FACF][\U0001FAD0-\U0001FAD6][\U0001FAD7-\U0001FAD9])"
R"([\U0001FADA-\U0001FADB][\U0001FADC][\U0001FADF])"
R"([\U0001FAE0-\U0001FAE7][\U0001FAE8][\U0001FAE9][\U0001FAEA])"
R"([\U0001FAEF][\U0001FAF0-\U0001FAF6][\U0001FAF7-\U0001FAF8]])";
static const char kEmojiEmojiPattern[] =
R"([[\U0000231A-\U0000231B][\U000023E9-\U000023EC][\U000023F0])"
R"([\U000023F3][\U000025FD-\U000025FE][\U00002614-\U00002615])"
R"([\U00002648-\U00002653][\U0000267F][\U00002693][\U000026A1])"
R"([\U000026AA-\U000026AB][\U000026BD-\U000026BE][\U000026C4-\U000026C5])"
R"([\U000026CE][\U000026D4][\U000026EA][\U000026F2-\U000026F3])"
R"([\U000026F5][\U000026FA][\U000026FD][\U00002705])"
R"([\U0000270A-\U0000270B][\U00002728][\U0000274C][\U0000274E])"
R"([\U00002753-\U00002755][\U00002757][\U00002795-\U00002797])"
R"([\U000027B0][\U000027BF][\U00002B1B-\U00002B1C][\U00002B50])"
R"([\U00002B55][\U0001F004][\U0001F0CF][\U0001F18E])"
R"([\U0001F191-\U0001F19A][\U0001F1E6-\U0001F1FF][\U0001F201])"
R"([\U0001F21A][\U0001F22F][\U0001F232-\U0001F236])"
R"([\U0001F238-\U0001F23A][\U0001F250-\U0001F251][\U0001F300-\U0001F30C])"
R"([\U0001F30D-\U0001F30E][\U0001F30F][\U0001F310][\U0001F311])"
R"([\U0001F312][\U0001F313-\U0001F315][\U0001F316-\U0001F318])"
R"([\U0001F319][\U0001F31A][\U0001F31B][\U0001F31C])"
R"([\U0001F31D-\U0001F31E][\U0001F31F-\U0001F320][\U0001F32D-\U0001F32F])"
R"([\U0001F330-\U0001F331][\U0001F332-\U0001F333][\U0001F334-\U0001F335])"
R"([\U0001F337-\U0001F34A][\U0001F34B][\U0001F34C-\U0001F34F])"
R"([\U0001F350][\U0001F351-\U0001F37B][\U0001F37C])"
R"([\U0001F37E-\U0001F37F][\U0001F380-\U0001F393][\U0001F3A0-\U0001F3C4])"
R"([\U0001F3C5][\U0001F3C6][\U0001F3C7][\U0001F3C8][\U0001F3C9])"
R"([\U0001F3CA][\U0001F3CF-\U0001F3D3][\U0001F3E0-\U0001F3E3])"
R"([\U0001F3E4][\U0001F3E5-\U0001F3F0][\U0001F3F4])"
R"([\U0001F3F8-\U0001F407][\U0001F408][\U0001F409-\U0001F40B])"
R"([\U0001F40C-\U0001F40E][\U0001F40F-\U0001F410][\U0001F411-\U0001F412])"
R"([\U0001F413][\U0001F414][\U0001F415][\U0001F416])"
R"([\U0001F417-\U0001F429][\U0001F42A][\U0001F42B-\U0001F43E])"
R"([\U0001F440][\U0001F442-\U0001F464][\U0001F465])"
R"([\U0001F466-\U0001F46B][\U0001F46C-\U0001F46D][\U0001F46E-\U0001F4AC])"
R"([\U0001F4AD][\U0001F4AE-\U0001F4B5][\U0001F4B6-\U0001F4B7])"
R"([\U0001F4B8-\U0001F4EB][\U0001F4EC-\U0001F4ED][\U0001F4EE])"
R"([\U0001F4EF][\U0001F4F0-\U0001F4F4][\U0001F4F5])"
R"([\U0001F4F6-\U0001F4F7][\U0001F4F8][\U0001F4F9-\U0001F4FC])"
R"([\U0001F4FF-\U0001F502][\U0001F503][\U0001F504-\U0001F507])"
R"([\U0001F508][\U0001F509][\U0001F50A-\U0001F514][\U0001F515])"
R"([\U0001F516-\U0001F52B][\U0001F52C-\U0001F52D][\U0001F52E-\U0001F53D])"
R"([\U0001F54B-\U0001F54E][\U0001F550-\U0001F55B][\U0001F55C-\U0001F567])"
R"([\U0001F57A][\U0001F595-\U0001F596][\U0001F5A4])"
R"([\U0001F5FB-\U0001F5FF][\U0001F600][\U0001F601-\U0001F606])"
R"([\U0001F607-\U0001F608][\U0001F609-\U0001F60D][\U0001F60E])"
R"([\U0001F60F][\U0001F610][\U0001F611][\U0001F612-\U0001F614])"
R"([\U0001F615][\U0001F616][\U0001F617][\U0001F618][\U0001F619])"
R"([\U0001F61A][\U0001F61B][\U0001F61C-\U0001F61E][\U0001F61F])"
R"([\U0001F620-\U0001F625][\U0001F626-\U0001F627][\U0001F628-\U0001F62B])"
R"([\U0001F62C][\U0001F62D][\U0001F62E-\U0001F62F])"
R"([\U0001F630-\U0001F633][\U0001F634][\U0001F635][\U0001F636])"
R"([\U0001F637-\U0001F640][\U0001F641-\U0001F644][\U0001F645-\U0001F64F])"
R"([\U0001F680][\U0001F681-\U0001F682][\U0001F683-\U0001F685])"
R"([\U0001F686][\U0001F687][\U0001F688][\U0001F689])"
R"([\U0001F68A-\U0001F68B][\U0001F68C][\U0001F68D][\U0001F68E])"
R"([\U0001F68F][\U0001F690][\U0001F691-\U0001F693][\U0001F694])"
R"([\U0001F695][\U0001F696][\U0001F697][\U0001F698])"
R"([\U0001F699-\U0001F69A][\U0001F69B-\U0001F6A1][\U0001F6A2])"
R"([\U0001F6A3][\U0001F6A4-\U0001F6A5][\U0001F6A6])"
R"([\U0001F6A7-\U0001F6AD][\U0001F6AE-\U0001F6B1][\U0001F6B2])"
R"([\U0001F6B3-\U0001F6B5][\U0001F6B6][\U0001F6B7-\U0001F6B8])"
R"([\U0001F6B9-\U0001F6BE][\U0001F6BF][\U0001F6C0])"
R"([\U0001F6C1-\U0001F6C5][\U0001F6CC][\U0001F6D0])"
R"([\U0001F6D1-\U0001F6D2][\U0001F6D5][\U0001F6D6-\U0001F6D7])"
R"([\U0001F6D8][\U0001F6DC][\U0001F6DD-\U0001F6DF])"
R"([\U0001F6EB-\U0001F6EC][\U0001F6F4-\U0001F6F6][\U0001F6F7-\U0001F6F8])"
R"([\U0001F6F9][\U0001F6FA][\U0001F6FB-\U0001F6FC])"
R"([\U0001F7E0-\U0001F7EB][\U0001F7F0][\U0001F90C])"
R"([\U0001F90D-\U0001F90F][\U0001F910-\U0001F918][\U0001F919-\U0001F91E])"
R"([\U0001F91F][\U0001F920-\U0001F927][\U0001F928-\U0001F92F])"
R"([\U0001F930][\U0001F931-\U0001F932][\U0001F933-\U0001F93A])"
R"([\U0001F93C-\U0001F93E][\U0001F93F][\U0001F940-\U0001F945])"
R"([\U0001F947-\U0001F94B][\U0001F94C][\U0001F94D-\U0001F94F])"
R"([\U0001F950-\U0001F95E][\U0001F95F-\U0001F96B][\U0001F96C-\U0001F970])"
R"([\U0001F971][\U0001F972][\U0001F973-\U0001F976])"
R"([\U0001F977-\U0001F978][\U0001F979][\U0001F97A][\U0001F97B])"
R"([\U0001F97C-\U0001F97F][\U0001F980-\U0001F984][\U0001F985-\U0001F991])"
R"([\U0001F992-\U0001F997][\U0001F998-\U0001F9A2][\U0001F9A3-\U0001F9A4])"
R"([\U0001F9A5-\U0001F9AA][\U0001F9AB-\U0001F9AD][\U0001F9AE-\U0001F9AF])"
R"([\U0001F9B0-\U0001F9B9][\U0001F9BA-\U0001F9BF][\U0001F9C0])"
R"([\U0001F9C1-\U0001F9C2][\U0001F9C3-\U0001F9CA][\U0001F9CB])"
R"([\U0001F9CC][\U0001F9CD-\U0001F9CF][\U0001F9D0-\U0001F9E6])"
R"([\U0001F9E7-\U0001F9FF][\U0001FA70-\U0001FA73][\U0001FA74])"
R"([\U0001FA75-\U0001FA77][\U0001FA78-\U0001FA7A][\U0001FA7B-\U0001FA7C])"
R"([\U0001FA80-\U0001FA82][\U0001FA83-\U0001FA86][\U0001FA87-\U0001FA88])"
R"([\U0001FA89][\U0001FA8A][\U0001FA8E][\U0001FA8F])"
R"([\U0001FA90-\U0001FA95][\U0001FA96-\U0001FAA8][\U0001FAA9-\U0001FAAC])"
R"([\U0001FAAD-\U0001FAAF][\U0001FAB0-\U0001FAB6][\U0001FAB7-\U0001FABA])"
R"([\U0001FABB-\U0001FABD][\U0001FABE][\U0001FABF])"
R"([\U0001FAC0-\U0001FAC2][\U0001FAC3-\U0001FAC5][\U0001FAC6])"
R"([\U0001FAC8][\U0001FACD][\U0001FACE-\U0001FACF])"
R"([\U0001FAD0-\U0001FAD6][\U0001FAD7-\U0001FAD9][\U0001FADA-\U0001FADB])"
R"([\U0001FADC][\U0001FADF][\U0001FAE0-\U0001FAE7][\U0001FAE8])"
R"([\U0001FAE9][\U0001FAEA][\U0001FAEF][\U0001FAF0-\U0001FAF6])"
R"([\U0001FAF7-\U0001FAF8]])";
static const char kEmojiModifierBasePattern[] =
R"([[\U0000261D][\U000026F9][\U0000270A-\U0000270C][\U0000270D])"
R"([\U0001F385][\U0001F3C2-\U0001F3C4][\U0001F3C7][\U0001F3CA])"
R"([\U0001F3CB-\U0001F3CC][\U0001F442-\U0001F443][\U0001F446-\U0001F450])"
R"([\U0001F466-\U0001F46B][\U0001F46C-\U0001F46D][\U0001F46E-\U0001F478])"
R"([\U0001F47C][\U0001F481-\U0001F483][\U0001F485-\U0001F487])"
R"([\U0001F48F][\U0001F491][\U0001F4AA][\U0001F574-\U0001F575])"
R"([\U0001F57A][\U0001F590][\U0001F595-\U0001F596])"
R"([\U0001F645-\U0001F647][\U0001F64B-\U0001F64F][\U0001F6A3])"
R"([\U0001F6B4-\U0001F6B5][\U0001F6B6][\U0001F6C0][\U0001F6CC])"
R"([\U0001F90C][\U0001F90F][\U0001F918][\U0001F919-\U0001F91E])"
R"([\U0001F91F][\U0001F926][\U0001F930][\U0001F931-\U0001F932])"
R"([\U0001F933-\U0001F939][\U0001F93C-\U0001F93E][\U0001F977])"
R"([\U0001F9B5-\U0001F9B6][\U0001F9B8-\U0001F9B9][\U0001F9BB])"
R"([\U0001F9CD-\U0001F9CF][\U0001F9D1-\U0001F9DD][\U0001FAC3-\U0001FAC5])"
R"([\U0001FAF0-\U0001FAF6][\U0001FAF7-\U0001FAF8]])";
bool Character::IsEmoji(UChar32 ch) {
return Character::IsEmojiTextDefault(ch) ||
Character::IsEmojiEmojiDefault(ch);
}
bool Character::IsEmojiTextDefault(UChar32 ch) {
DEFINE_THREAD_SAFE_STATIC_LOCAL(icu::UnicodeSet, emojiTextSet, ());
ApplyPatternAndFreezeIfEmpty(&emojiTextSet, kEmojiTextPattern);
return emojiTextSet.contains(ch) && !IsEmojiEmojiDefault(ch);
}
bool Character::IsEmojiEmojiDefault(UChar32 ch) {
DEFINE_THREAD_SAFE_STATIC_LOCAL(icu::UnicodeSet, emojiEmojiSet, ());
ApplyPatternAndFreezeIfEmpty(&emojiEmojiSet, kEmojiEmojiPattern);
return emojiEmojiSet.contains(ch);
}
bool Character::IsEmojiModifierBase(UChar32 ch) {
DEFINE_THREAD_SAFE_STATIC_LOCAL(icu::UnicodeSet, emojieModifierBaseSet, ());
ApplyPatternAndFreezeIfEmpty(&emojieModifierBaseSet,
kEmojiModifierBasePattern);
return emojieModifierBaseSet.contains(ch);
}
#else
bool Character::IsEmoji(UChar32 ch) {
return u_hasBinaryProperty(ch, UCHAR_EMOJI);
}
bool Character::IsEmojiTextDefault(UChar32 ch) {
return u_hasBinaryProperty(ch, UCHAR_EMOJI) &&
!u_hasBinaryProperty(ch, UCHAR_EMOJI_PRESENTATION);
}
bool Character::IsEmojiEmojiDefault(UChar32 ch) {
return u_hasBinaryProperty(ch, UCHAR_EMOJI_PRESENTATION);
}
bool Character::IsEmojiModifierBase(UChar32 ch) {
return u_hasBinaryProperty(ch, UCHAR_EMOJI_MODIFIER_BASE);
}
#endif
bool Character::IsEmojiReserved(UChar32 ch) {
return u_charType(ch) == U_UNASSIGNED && IsExtendedPictographic(ch);
}
bool Character::IsEmojiIncludingReserved(UChar32 ch) {
return IsEmoji(ch) || IsEmojiReserved(ch);
}
bool Character::IsRegionalIndicator(UChar32 ch) {
return (ch >= 0x1F1E6 && ch <= 0x1F1FF);
}
}