Add set of APIs for emoji-character-properties
[platform/core/uifw/dali-adaptor.git] / dali / devel-api / text-abstraction / emoji-character-properties.cpp
1 /*
2  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 // FILE HEADER
19 #include <dali/devel-api/text-abstraction/emoji-character-properties.h>
20
21 namespace Dali
22 {
23 namespace TextAbstraction
24 {
25 namespace
26 {
27 //Emoji Variation Sequences for UTS #51: https://www.unicode.org/Public/14.0.0/ucd/emoji/emoji-variation-sequences.txt
28 //emoji-variation-sequences-14.0.0.txt
29 std::set<unsigned int> SET_CHAR_EMOJI_VARIATION_SEQUENCES = {
30   0x002A,  //  #(1.1)ASTERISK
31   0x0030,  //  #(1.1)DIGITZERO
32   0x0031,  //  #(1.1)DIGITONE
33   0x0032,  //  #(1.1)DIGITTWO
34   0x0033,  //  #(1.1)DIGITTHREE
35   0x0034,  //  #(1.1)DIGITFOUR
36   0x0035,  //  #(1.1)DIGITFIVE
37   0x0036,  //  #(1.1)DIGITSIX
38   0x0037,  //  #(1.1)DIGITSEVEN
39   0x0038,  //  #(1.1)DIGITEIGHT
40   0x0039,  //  #(1.1)DIGITNINE
41   0x00A9,  //  #(1.1)COPYRIGHTSIGN
42   0x00AE,  //  #(1.1)REGISTEREDSIGN
43   0x203C,  //  #(1.1)DOUBLEEXCLAMATIONMARK
44   0x2049,  //  #(3.0)EXCLAMATIONQUESTIONMARK
45   0x2122,  //  #(1.1)TRADEMARKSIGN
46   0x2139,  //  #(3.0)INFORMATIONSOURCE
47   0x2194,  //  #(1.1)LEFTRIGHTARROW
48   0x2195,  //  #(1.1)UPDOWNARROW
49   0x2196,  //  #(1.1)NORTHWESTARROW
50   0x2197,  //  #(1.1)NORTHEASTARROW
51   0x2198,  //  #(1.1)SOUTHEASTARROW
52   0x2199,  //  #(1.1)SOUTHWESTARROW
53   0x21A9,  //  #(1.1)LEFTWARDSARROWWITHHOOK
54   0x21AA,  //  #(1.1)RIGHTWARDSARROWWITHHOOK
55   0x231A,  //  #(1.1)WATCH
56   0x231B,  //  #(1.1)HOURGLASS
57   0x2328,  //  #(1.1)KEYBOARD
58   0x23CF,  //  #(4.0)EJECTSYMBOL
59   0x23E9,  //  #(6.0)BLACKRIGHT-POINTINGDOUBLETRIANGLE
60   0x23EA,  //  #(6.0)BLACKLEFT-POINTINGDOUBLETRIANGLE
61   0x23ED,  //  #(6.0)BLACKRIGHT-POINTINGDOUBLETRIANGLEWITHVERTICALBAR
62   0x23EE,  //  #(6.0)BLACKLEFT-POINTINGDOUBLETRIANGLEWITHVERTICALBAR
63   0x23EF,  //  #(6.0)BLACKRIGHT-POINTINGTRIANGLEWITHDOUBLEVERTICALBAR
64   0x23F1,  //  #(6.0)STOPWATCH
65   0x23F2,  //  #(6.0)TIMERCLOCK
66   0x23F3,  //  #(6.0)HOURGLASSWITHFLOWINGSAND
67   0x23F8,  //  #(7.0)DOUBLEVERTICALBAR
68   0x23F9,  //  #(7.0)BLACKSQUAREFORSTOP
69   0x23FA,  //  #(7.0)BLACKCIRCLEFORRECORD
70   0x24C2,  //  #(1.1)CIRCLEDLATINCAPITALLETTERM
71   0x25AA,  //  #(1.1)BLACKSMALLSQUARE
72   0x25AB,  //  #(1.1)WHITESMALLSQUARE
73   0x25B6,  //  #(1.1)BLACKRIGHT-POINTINGTRIANGLE
74   0x25C0,  //  #(1.1)BLACKLEFT-POINTINGTRIANGLE
75   0x25FB,  //  #(3.2)WHITEMEDIUMSQUARE
76   0x25FC,  //  #(3.2)BLACKMEDIUMSQUARE
77   0x25FD,  //  #(3.2)WHITEMEDIUMSMALLSQUARE
78   0x25FE,  //  #(3.2)BLACKMEDIUMSMALLSQUARE
79   0x2600,  //  #(1.1)BLACKSUNWITHRAYS
80   0x2601,  //  #(1.1)CLOUD
81   0x2602,  //  #(1.1)UMBRELLA
82   0x2603,  //  #(1.1)SNOWMAN
83   0x2604,  //  #(1.1)COMET
84   0x260E,  //  #(1.1)BLACKTELEPHONE
85   0x2611,  //  #(1.1)BALLOTBOXWITHCHECK
86   0x2614,  //  #(4.0)UMBRELLAWITHRAINDROPS
87   0x2615,  //  #(4.0)HOTBEVERAGE
88   0x2618,  //  #(4.1)SHAMROCK
89   0x261D,  //  #(1.1)WHITEUPPOINTINGINDEX
90   0x2620,  //  #(1.1)SKULLANDCROSSBONES
91   0x2622,  //  #(1.1)RADIOACTIVESIGN
92   0x2623,  //  #(1.1)BIOHAZARDSIGN
93   0x2626,  //  #(1.1)ORTHODOXCROSS
94   0x262A,  //  #(1.1)STARANDCRESCENT
95   0x262E,  //  #(1.1)PEACESYMBOL
96   0x262F,  //  #(1.1)YINYANG
97   0x2638,  //  #(1.1)WHEELOFDHARMA
98   0x2639,  //  #(1.1)WHITEFROWNINGFACE
99   0x263A,  //  #(1.1)WHITESMILINGFACE
100   0x2640,  //  #(1.1)FEMALESIGN
101   0x2642,  //  #(1.1)MALESIGN
102   0x2648,  //  #(1.1)ARIES
103   0x2649,  //  #(1.1)TAURUS
104   0x264A,  //  #(1.1)GEMINI
105   0x264B,  //  #(1.1)CANCER
106   0x264C,  //  #(1.1)LEO
107   0x264D,  //  #(1.1)VIRGO
108   0x264E,  //  #(1.1)LIBRA
109   0x264F,  //  #(1.1)SCORPIUS
110   0x2650,  //  #(1.1)SAGITTARIUS
111   0x2651,  //  #(1.1)CAPRICORN
112   0x2652,  //  #(1.1)AQUARIUS
113   0x2653,  //  #(1.1)PISCES
114   0x265F,  //  #(1.1)BLACKCHESSPAWN
115   0x2660,  //  #(1.1)BLACKSPADESUIT
116   0x2663,  //  #(1.1)BLACKCLUBSUIT
117   0x2665,  //  #(1.1)BLACKHEARTSUIT
118   0x2666,  //  #(1.1)BLACKDIAMONDSUIT
119   0x2668,  //  #(1.1)HOTSPRINGS
120   0x267B,  //  #(3.2)BLACKUNIVERSALRECYCLINGSYMBOL
121   0x267E,  //  #(4.1)PERMANENTPAPERSIGN
122   0x267F,  //  #(4.1)WHEELCHAIRSYMBOL
123   0x2692,  //  #(4.1)HAMMERANDPICK
124   0x2693,  //  #(4.1)ANCHOR
125   0x2694,  //  #(4.1)CROSSEDSWORDS
126   0x2695,  //  #(4.1)STAFFOFAESCULAPIUS
127   0x2696,  //  #(4.1)SCALES
128   0x2697,  //  #(4.1)ALEMBIC
129   0x2699,  //  #(4.1)GEAR
130   0x269B,  //  #(4.1)ATOMSYMBOL
131   0x269C,  //  #(4.1)FLEUR-DE-LIS
132   0x26A0,  //  #(4.0)WARNINGSIGN
133   0x26A1,  //  #(4.0)HIGHVOLTAGESIGN
134   0x26A7,  //  #(4.1)MALEWITHSTROKEANDMALEANDFEMALESIGN
135   0x26AA,  //  #(4.1)MEDIUMWHITECIRCLE
136   0x26AB,  //  #(4.1)MEDIUMBLACKCIRCLE
137   0x26B0,  //  #(4.1)COFFIN
138   0x26B1,  //  #(4.1)FUNERALURN
139   0x26BD,  //  #(5.2)SOCCERBALL
140   0x26BE,  //  #(5.2)BASEBALL
141   0x26C4,  //  #(5.2)SNOWMANWITHOUTSNOW
142   0x26C5,  //  #(5.2)SUNBEHINDCLOUD
143   0x26C8,  //  #(5.2)THUNDERCLOUDANDRAIN
144   0x26CF,  //  #(5.2)PICK
145   0x26D1,  //  #(5.2)HELMETWITHWHITECROSS
146   0x26D3,  //  #(5.2)CHAINS
147   0x26D4,  //  #(5.2)NOENTRY
148   0x26E9,  //  #(5.2)SHINTOSHRINE
149   0x26EA,  //  #(5.2)CHURCH
150   0x26F0,  //  #(5.2)MOUNTAIN
151   0x26F1,  //  #(5.2)UMBRELLAONGROUND
152   0x26F2,  //  #(5.2)FOUNTAIN
153   0x26F3,  //  #(5.2)FLAGINHOLE
154   0x26F4,  //  #(5.2)FERRY
155   0x26F5,  //  #(5.2)SAILBOAT
156   0x26F7,  //  #(5.2)SKIER
157   0x26F8,  //  #(5.2)ICESKATE
158   0x26F9,  //  #(5.2)PERSONWITHBALL
159   0x26FA,  //  #(5.2)TENT
160   0x26FD,  //  #(5.2)FUELPUMP
161   0x2702,  //  #(1.1)BLACKSCISSORS
162   0x2708,  //  #(1.1)AIRPLANE
163   0x2709,  //  #(1.1)ENVELOPE
164   0x270C,  //  #(1.1)VICTORYHAND
165   0x270D,  //  #(1.1)WRITINGHAND
166   0x270F,  //  #(1.1)PENCIL
167   0x2712,  //  #(1.1)BLACKNIB
168   0x2714,  //  #(1.1)HEAVYCHECKMARK
169   0x2716,  //  #(1.1)HEAVYMULTIPLICATIONX
170   0x271D,  //  #(1.1)LATINCROSS
171   0x2721,  //  #(1.1)STAROFDAVID
172   0x2733,  //  #(1.1)EIGHTSPOKEDASTERISK
173   0x2734,  //  #(1.1)EIGHTPOINTEDBLACKSTAR
174   0x2744,  //  #(1.1)SNOWFLAKE
175   0x2747,  //  #(1.1)SPARKLE
176   0x2753,  //  #(6.0)BLACKQUESTIONMARKORNAMENT
177   0x2757,  //  #(5.2)HEAVYEXCLAMATIONMARKSYMBOL
178   0x2763,  //  #(1.1)HEAVYHEARTEXCLAMATIONMARKORNAMENT
179   0x2764,  //  #(1.1)HEAVYBLACKHEART
180   0x27A1,  //  #(1.1)BLACKRIGHTWARDSARROW
181   0x2934,  //  #(3.2)ARROWPOINTINGRIGHTWARDSTHENCURVINGUPWARDS
182   0x2935,  //  #(3.2)ARROWPOINTINGRIGHTWARDSTHENCURVINGDOWNWARDS
183   0x2B05,  //  #(4.0)LEFTWARDSBLACKARROW
184   0x2B06,  //  #(4.0)UPWARDSBLACKARROW
185   0x2B07,  //  #(4.0)DOWNWARDSBLACKARROW
186   0x2B1B,  //  #(5.1)BLACKLARGESQUARE
187   0x2B1C,  //  #(5.1)WHITELARGESQUARE
188   0x2B50,  //  #(5.1)WHITEMEDIUMSTAR
189   0x2B55,  //  #(5.2)HEAVYLARGECIRCLE
190   0x3030,  //  #(1.1)WAVYDASH
191   0x303D,  //  #(3.2)PARTALTERNATIONMARK
192   0x3297,  //  #(1.1)CIRCLEDIDEOGRAPHCONGRATULATION
193   0x3299,  //  #(1.1)CIRCLEDIDEOGRAPHSECRET
194   0x1F004, //  #(5.1)MAHJONGTILEREDDRAGON
195   0x1F170, //  #(6.0)NEGATIVESQUAREDLATINCAPITALLETTERA
196   0x1F171, //  #(6.0)NEGATIVESQUAREDLATINCAPITALLETTERB
197   0x1F17E, //  #(6.0)NEGATIVESQUAREDLATINCAPITALLETTERO
198   0x1F17F, //  #(5.2)NEGATIVESQUAREDLATINCAPITALLETTERP
199   0x1F202, //  #(6.0)SQUAREDKATAKANASA
200   0x1F21A, //  #(5.2)SQUAREDCJKUNIFIEDIDEOGRAPH-7121
201   0x1F22F, //  #(5.2)SQUAREDCJKUNIFIEDIDEOGRAPH-6307
202   0x1F237, //  #(6.0)SQUAREDCJKUNIFIEDIDEOGRAPH-6708
203   0x1F30D, //  #(6.0)EARTHGLOBEEUROPE-AFRICA
204   0x1F30E, //  #(6.0)EARTHGLOBEAMERICAS
205   0x1F30F, //  #(6.0)EARTHGLOBEASIA-AUSTRALIA
206   0x1F315, //  #(6.0)FULLMOONSYMBOL
207   0x1F31C, //  #(6.0)LASTQUARTERMOONWITHFACE
208   0x1F321, //  #(7.0)THERMOMETER
209   0x1F324, //  #(7.0)WHITESUNWITHSMALLCLOUD
210   0x1F325, //  #(7.0)WHITESUNBEHINDCLOUD
211   0x1F326, //  #(7.0)WHITESUNBEHINDCLOUDWITHRAIN
212   0x1F327, //  #(7.0)CLOUDWITHRAIN
213   0x1F328, //  #(7.0)CLOUDWITHSNOW
214   0x1F329, //  #(7.0)CLOUDWITHLIGHTNING
215   0x1F32A, //  #(7.0)CLOUDWITHTORNADO
216   0x1F32B, //  #(7.0)FOG
217   0x1F32C, //  #(7.0)WINDBLOWINGFACE
218   0x1F336, //  #(7.0)HOTPEPPER
219   0x1F378, //  #(6.0)COCKTAILGLASS
220   0x1F37D, //  #(7.0)FORKANDKNIFEWITHPLATE
221   0x1F393, //  #(6.0)GRADUATIONCAP
222   0x1F396, //  #(7.0)MILITARYMEDAL
223   0x1F397, //  #(7.0)REMINDERRIBBON
224   0x1F399, //  #(7.0)STUDIOMICROPHONE
225   0x1F39A, //  #(7.0)LEVELSLIDER
226   0x1F39B, //  #(7.0)CONTROLKNOBS
227   0x1F39E, //  #(7.0)FILMFRAMES
228   0x1F39F, //  #(7.0)ADMISSIONTICKETS
229   0x1F3A7, //  #(6.0)HEADPHONE
230   0x1F3AC, //  #(6.0)CLAPPERBOARD
231   0x1F3AD, //  #(6.0)PERFORMINGARTS
232   0x1F3AE, //  #(6.0)VIDEOGAME
233   0x1F3C2, //  #(6.0)SNOWBOARDER
234   0x1F3C4, //  #(6.0)SURFER
235   0x1F3C6, //  #(6.0)TROPHY
236   0x1F3CA, //  #(6.0)SWIMMER
237   0x1F3CB, //  #(7.0)WEIGHTLIFTER
238   0x1F3CC, //  #(7.0)GOLFER
239   0x1F3CD, //  #(7.0)RACINGMOTORCYCLE
240   0x1F3CE, //  #(7.0)RACINGCAR
241   0x1F3D4, //  #(7.0)SNOWCAPPEDMOUNTAIN
242   0x1F3D5, //  #(7.0)CAMPING
243   0x1F3D6, //  #(7.0)BEACHWITHUMBRELLA
244   0x1F3D7, //  #(7.0)BUILDINGCONSTRUCTION
245   0x1F3D8, //  #(7.0)HOUSEBUILDINGS
246   0x1F3D9, //  #(7.0)CITYSCAPE
247   0x1F3DA, //  #(7.0)DERELICTHOUSEBUILDING
248   0x1F3DB, //  #(7.0)CLASSICALBUILDING
249   0x1F3DC, //  #(7.0)DESERT
250   0x1F3DD, //  #(7.0)DESERTISLAND
251   0x1F3DE, //  #(7.0)NATIONALPARK
252   0x1F3DF, //  #(7.0)STADIUM
253   0x1F3E0, //  #(6.0)HOUSEBUILDING
254   0x1F3ED, //  #(6.0)FACTORY
255   0x1F3F3, //  #(7.0)WAVINGWHITEFLAG
256   0x1F3F5, //  #(7.0)ROSETTE
257   0x1F3F7, //  #(7.0)LABEL
258   0x1F408, //  #(6.0)CAT
259   0x1F415, //  #(6.0)DOG
260   0x1F41F, //  #(6.0)FISH
261   0x1F426, //  #(6.0)BIRD
262   0x1F43F, //  #(7.0)CHIPMUNK
263   0x1F441, //  #(7.0)EYE
264   0x1F442, //  #(6.0)EAR
265   0x1F446, //  #(6.0)WHITEUPPOINTINGBACKHANDINDEX
266   0x1F447, //  #(6.0)WHITEDOWNPOINTINGBACKHANDINDEX
267   0x1F448, //  #(6.0)WHITELEFTPOINTINGBACKHANDINDEX
268   0x1F449, //  #(6.0)WHITERIGHTPOINTINGBACKHANDINDEX
269   0x1F44D, //  #(6.0)THUMBSUPSIGN
270   0x1F44E, //  #(6.0)THUMBSDOWNSIGN
271   0x1F453, //  #(6.0)EYEGLASSES
272   0x1F46A, //  #(6.0)FAMILY
273   0x1F47D, //  #(6.0)EXTRATERRESTRIALALIEN
274   0x1F4A3, //  #(6.0)BOMB
275   0x1F4B0, //  #(6.0)MONEYBAG
276   0x1F4B3, //  #(6.0)CREDITCARD
277   0x1F4BB, //  #(6.0)PERSONALCOMPUTER
278   0x1F4BF, //  #(6.0)OPTICALDISC
279   0x1F4CB, //  #(6.0)CLIPBOARD
280   0x1F4DA, //  #(6.0)BOOKS
281   0x1F4DF, //  #(6.0)PAGER
282   0x1F4E4, //  #(6.0)OUTBOXTRAY
283   0x1F4E5, //  #(6.0)INBOXTRAY
284   0x1F4E6, //  #(6.0)PACKAGE
285   0x1F4EA, //  #(6.0)CLOSEDMAILBOXWITHLOWEREDFLAG
286   0x1F4EB, //  #(6.0)CLOSEDMAILBOXWITHRAISEDFLAG
287   0x1F4EC, //  #(6.0)OPENMAILBOXWITHRAISEDFLAG
288   0x1F4ED, //  #(6.0)OPENMAILBOXWITHLOWEREDFLAG
289   0x1F4F7, //  #(6.0)CAMERA
290   0x1F4F9, //  #(6.0)VIDEOCAMERA
291   0x1F4FA, //  #(6.0)TELEVISION
292   0x1F4FB, //  #(6.0)RADIO
293   0x1F4FD, //  #(7.0)FILMPROJECTOR
294   0x1F508, //  #(6.0)SPEAKER
295   0x1F50D, //  #(6.0)LEFT-POINTINGMAGNIFYINGGLASS
296   0x1F512, //  #(6.0)LOCK
297   0x1F513, //  #(6.0)OPENLOCK
298   0x1F549, //  #(7.0)OMSYMBOL
299   0x1F54A, //  #(7.0)DOVEOFPEACE
300   0x1F550, //  #(6.0)CLOCKFACEONEOCLOCK
301   0x1F551, //  #(6.0)CLOCKFACETWOOCLOCK
302   0x1F552, //  #(6.0)CLOCKFACETHREEOCLOCK
303   0x1F553, //  #(6.0)CLOCKFACEFOUROCLOCK
304   0x1F554, //  #(6.0)CLOCKFACEFIVEOCLOCK
305   0x1F555, //  #(6.0)CLOCKFACESIXOCLOCK
306   0x1F556, //  #(6.0)CLOCKFACESEVENOCLOCK
307   0x1F557, //  #(6.0)CLOCKFACEEIGHTOCLOCK
308   0x1F558, //  #(6.0)CLOCKFACENINEOCLOCK
309   0x1F559, //  #(6.0)CLOCKFACETENOCLOCK
310   0x1F55A, //  #(6.0)CLOCKFACEELEVENOCLOCK
311   0x1F55B, //  #(6.0)CLOCKFACETWELVEOCLOCK
312   0x1F55C, //  #(6.0)CLOCKFACEONE-THIRTY
313   0x1F55D, //  #(6.0)CLOCKFACETWO-THIRTY
314   0x1F55E, //  #(6.0)CLOCKFACETHREE-THIRTY
315   0x1F55F, //  #(6.0)CLOCKFACEFOUR-THIRTY
316   0x1F560, //  #(6.0)CLOCKFACEFIVE-THIRTY
317   0x1F561, //  #(6.0)CLOCKFACESIX-THIRTY
318   0x1F562, //  #(6.0)CLOCKFACESEVEN-THIRTY
319   0x1F563, //  #(6.0)CLOCKFACEEIGHT-THIRTY
320   0x1F564, //  #(6.0)CLOCKFACENINE-THIRTY
321   0x1F565, //  #(6.0)CLOCKFACETEN-THIRTY
322   0x1F566, //  #(6.0)CLOCKFACEELEVEN-THIRTY
323   0x1F567, //  #(6.0)CLOCKFACETWELVE-THIRTY
324   0x1F56F, //  #(7.0)CANDLE
325   0x1F570, //  #(7.0)MANTELPIECECLOCK
326   0x1F573, //  #(7.0)HOLE
327   0x1F574, //  #(7.0)MANINBUSINESSSUITLEVITATING
328   0x1F575, //  #(7.0)SLEUTHORSPY
329   0x1F576, //  #(7.0)DARKSUNGLASSES
330   0x1F577, //  #(7.0)SPIDER
331   0x1F578, //  #(7.0)SPIDERWEB
332   0x1F579, //  #(7.0)JOYSTICK
333   0x1F587, //  #(7.0)LINKEDPAPERCLIPS
334   0x1F58A, //  #(7.0)LOWERLEFTBALLPOINTPEN
335   0x1F58B, //  #(7.0)LOWERLEFTFOUNTAINPEN
336   0x1F58C, //  #(7.0)LOWERLEFTPAINTBRUSH
337   0x1F58D, //  #(7.0)LOWERLEFTCRAYON
338   0x1F590, //  #(7.0)RAISEDHANDWITHFINGERSSPLAYED
339   0x1F5A5, //  #(7.0)DESKTOPCOMPUTER
340   0x1F5A8, //  #(7.0)PRINTER
341   0x1F5B1, //  #(7.0)THREEBUTTONMOUSE
342   0x1F5B2, //  #(7.0)TRACKBALL
343   0x1F5BC, //  #(7.0)FRAMEWITHPICTURE
344   0x1F5C2, //  #(7.0)CARDINDEXDIVIDERS
345   0x1F5C3, //  #(7.0)CARDFILEBOX
346   0x1F5C4, //  #(7.0)FILECABINET
347   0x1F5D1, //  #(7.0)WASTEBASKET
348   0x1F5D2, //  #(7.0)SPIRALNOTEPAD
349   0x1F5D3, //  #(7.0)SPIRALCALENDARPAD
350   0x1F5DC, //  #(7.0)COMPRESSION
351   0x1F5DD, //  #(7.0)OLDKEY
352   0x1F5DE, //  #(7.0)ROLLED-UPNEWSPAPER
353   0x1F5E1, //  #(7.0)DAGGERKNIFE
354   0x1F5E3, //  #(7.0)SPEAKINGHEADINSILHOUETTE
355   0x1F5E8, //  #(7.0)LEFTSPEECHBUBBLE
356   0x1F5EF, //  #(7.0)RIGHTANGERBUBBLE
357   0x1F5F3, //  #(7.0)BALLOTBOXWITHBALLOT
358   0x1F5FA, //  #(7.0)WORLDMAP
359   0x1F610, //  #(6.0)NEUTRALFACE
360   0x1F687, //  #(6.0)METRO
361   0x1F68D, //  #(6.0)ONCOMINGBUS
362   0x1F691, //  #(6.0)AMBULANCE
363   0x1F694, //  #(6.0)ONCOMINGPOLICECAR
364   0x1F698, //  #(6.0)ONCOMINGAUTOMOBILE
365   0x1F6AD, //  #(6.0)NOSMOKINGSYMBOL
366   0x1F6B2, //  #(6.0)BICYCLE
367   0x1F6B9, //  #(6.0)MENSSYMBOL
368   0x1F6BA, //  #(6.0)WOMENSSYMBOL
369   0x1F6BC, //  #(6.0)BABYSYMBOL
370   0x1F6CB, //  #(7.0)COUCHANDLAMP
371   0x1F6CD, //  #(7.0)SHOPPINGBAGS
372   0x1F6CE, //  #(7.0)BELLHOPBELL
373   0x1F6CF, //  #(7.0)BED
374   0x1F6E0, //  #(7.0)HAMMERANDWRENCH
375   0x1F6E1, //  #(7.0)SHIELD
376   0x1F6E2, //  #(7.0)OILDRUM
377   0x1F6E3, //  #(7.0)MOTORWAY
378   0x1F6E4, //  #(7.0)RAILWAYTRACK
379   0x1F6E5, //  #(7.0)MOTORBOAT
380   0x1F6E9, //  #(7.0)SMALLAIRPLANE
381   0x1F6F0, //  #(7.0)SATELLITE
382   0x1F6F3, //  #(7.0)PASSENGERSHIP
383 };
384
385 } // namespace
386 //TODO: find/create library or API to check emoji properties. OR parse file https://www.unicode.org/Public/14.0.0/ucd/emoji/emoji-data.txt then call the below APIs
387
388 DALI_ADAPTOR_API bool IsEmojiComponent(Character character)
389 {
390   return (TextAbstraction::CHAR_EMOJI_COMPONENT_BALD == character ||
391           TextAbstraction::CHAR_EMOJI_COMPONENT_RED_HAIR == character ||
392           TextAbstraction::CHAR_EMOJI_COMPONENT_CURLY_HAIR == character ||
393           TextAbstraction::CHAR_EMOJI_COMPONENT_WHITE_HAIR == character);
394 }
395
396 DALI_ADAPTOR_API bool IsEmojiModifier(Character character)
397 {
398   return (TextAbstraction::CHAR_EMOJI_MODIFIER_FITZPATRICK_TYPE_1_2 <= character &&
399           TextAbstraction::CHAR_EMOJI_MODIFIER_FITZPATRICK_TYPE_6 >= character);
400 }
401
402 DALI_ADAPTOR_API bool IsCombiningEnclosingKeycap(Character character)
403 {
404   return (TextAbstraction::CHAR_COMBINING_ENCLOSING_KEYCAP == character);
405 }
406
407 DALI_ADAPTOR_API bool IsRegionalIndicator(Character character)
408 {
409   return (TextAbstraction::CHAR_REGIONAL_INDICATOR_SYMBOL_LETTER_A <= character &&
410           TextAbstraction::CHAR_REGIONAL_INDICATOR_SYMBOL_LETTER_Z >= character);
411 }
412
413 DALI_ADAPTOR_API bool IsTextPresentationSelector(Character character)
414 {
415   return (TextAbstraction::CHAR_VARIATION_SELECTOR_15 == character);
416 }
417
418 DALI_ADAPTOR_API bool IsEmojiPresentationSelector(Character character)
419 {
420   return (TextAbstraction::CHAR_VARIATION_SELECTOR_16 == character);
421 }
422
423 DALI_ADAPTOR_API bool IsTagSpec(Character character)
424 {
425   return (TextAbstraction::CHAR_TAG_SPACE <= character &&
426           TextAbstraction::CHAR_TAG_TILDE >= character);
427 }
428
429 DALI_ADAPTOR_API bool IsTagEnd(Character character)
430 {
431   return (TextAbstraction::CHAR_CANCEL_TAG == character);
432 }
433
434 DALI_ADAPTOR_API bool IsEmojiItem(Character character)
435 {
436   return (IsEmojiComponent(character) ||
437           IsEmojiModifier(character) ||
438           IsTextPresentationSelector(character) ||
439           IsEmojiPresentationSelector(character) ||
440           IsTagSpec(character) ||
441           IsTagEnd(character));
442 }
443
444 DALI_ADAPTOR_API bool IsMiscellaneousSymbolsAndArrowsEmoji(Character character)
445 {
446   return (CHAR_NORTH_EAST_WHITE_ARROW <= character &&
447           CHAR_HELLSCHREIBER_PAUSE_SYMBOL >= character);
448 }
449
450 DALI_ADAPTOR_API bool IsDingbatsEmoji(Character character)
451 {
452   return (CHAR_BLACK_SAFETY_SCISSORS <= character &&
453           CHAR_DOUBLE_CURLY_LOOP_EMOJI >= character);
454 }
455
456 DALI_ADAPTOR_API bool IsASCIIDigits(Character character)
457 {
458   return (CHAR_ASCII_DIGIT_0 <= character &&
459           CHAR_ASCII_DIGIT_9 >= character);
460 }
461
462 DALI_ADAPTOR_API bool IsEmojiVariationSequences(Character character)
463 {
464   return SET_CHAR_EMOJI_VARIATION_SEQUENCES.find(character) != SET_CHAR_EMOJI_VARIATION_SEQUENCES.end();
465 }
466
467 } // namespace TextAbstraction
468
469 } // namespace Dali