diff options
Diffstat (limited to 'src/emoji.cpp')
-rw-r--r-- | src/emoji.cpp | 1599 |
1 files changed, 1599 insertions, 0 deletions
diff --git a/src/emoji.cpp b/src/emoji.cpp new file mode 100644 index 0000000..c332083 --- /dev/null +++ b/src/emoji.cpp @@ -0,0 +1,1599 @@ +/****************************************************************************** + * + * Copyright (C) 1997-2018 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ + +#include "emoji.h" +#include "message.h" +#include "ftextstream.h" +#include "util.h" + +static struct emojiEntityInfo +{ + const char *name; + const char *unicode; +} g_emojiEntities[] = +/* generated using the download_github_emojis.py script */ +{ + { ":+1:", "👍" }, + { ":-1:", "👎" }, + { ":100:", "💯" }, + { ":1234:", "🔢" }, + { ":1st_place_medal:", "🥇" }, + { ":2nd_place_medal:", "🥈" }, + { ":3rd_place_medal:", "🥉" }, + { ":8ball:", "🎱" }, + { ":a:", "🅰" }, + { ":ab:", "🆎" }, + { ":abc:", "🔤" }, + { ":abcd:", "🔡" }, + { ":accept:", "🉑" }, + { ":aerial_tramway:", "🚡" }, + { ":afghanistan:", "🇦🇫" }, + { ":airplane:", "✈" }, + { ":aland_islands:", "🇦🇽" }, + { ":alarm_clock:", "⏰" }, + { ":albania:", "🇦🇱" }, + { ":alembic:", "⚗" }, + { ":algeria:", "🇩🇿" }, + { ":alien:", "👽" }, + { ":ambulance:", "🚑" }, + { ":american_samoa:", "🇦🇸" }, + { ":amphora:", "🏺" }, + { ":anchor:", "⚓" }, + { ":andorra:", "🇦🇩" }, + { ":angel:", "👼" }, + { ":anger:", "💢" }, + { ":angola:", "🇦🇴" }, + { ":angry:", "😠" }, + { ":anguilla:", "🇦🇮" }, + { ":anguished:", "😧" }, + { ":ant:", "🐜" }, + { ":antarctica:", "🇦🇶" }, + { ":antigua_barbuda:", "🇦🇬" }, + { ":apple:", "🍎" }, + { ":aquarius:", "♒" }, + { ":argentina:", "🇦🇷" }, + { ":aries:", "♈" }, + { ":armenia:", "🇦🇲" }, + { ":arrow_backward:", "◀" }, + { ":arrow_double_down:", "⏬" }, + { ":arrow_double_up:", "⏫" }, + { ":arrow_down:", "⬇" }, + { ":arrow_down_small:", "🔽" }, + { ":arrow_forward:", "▶" }, + { ":arrow_heading_down:", "⤵" }, + { ":arrow_heading_up:", "⤴" }, + { ":arrow_left:", "⬅" }, + { ":arrow_lower_left:", "↙" }, + { ":arrow_lower_right:", "↘" }, + { ":arrow_right:", "➡" }, + { ":arrow_right_hook:", "↪" }, + { ":arrow_up:", "⬆" }, + { ":arrow_up_down:", "↕" }, + { ":arrow_up_small:", "🔼" }, + { ":arrow_upper_left:", "↖" }, + { ":arrow_upper_right:", "↗" }, + { ":arrows_clockwise:", "🔃" }, + { ":arrows_counterclockwise:", "🔄" }, + { ":art:", "🎨" }, + { ":articulated_lorry:", "🚛" }, + { ":artificial_satellite:", "🛰" }, + { ":aruba:", "🇦🇼" }, + { ":asterisk:", "*⃣" }, + { ":astonished:", "😲" }, + { ":athletic_shoe:", "👟" }, + { ":atm:", "🏧" }, + { ":atom_symbol:", "⚛" }, + { ":australia:", "🇦🇺" }, + { ":austria:", "🇦🇹" }, + { ":avocado:", "🥑" }, + { ":azerbaijan:", "🇦🇿" }, + { ":b:", "🅱" }, + { ":baby:", "👶" }, + { ":baby_bottle:", "🍼" }, + { ":baby_chick:", "🐤" }, + { ":baby_symbol:", "🚼" }, + { ":back:", "🔙" }, + { ":bacon:", "🥓" }, + { ":badminton:", "🏸" }, + { ":baggage_claim:", "🛄" }, + { ":baguette_bread:", "🥖" }, + { ":bahamas:", "🇧🇸" }, + { ":bahrain:", "🇧🇭" }, + { ":balance_scale:", "⚖" }, + { ":balloon:", "🎈" }, + { ":ballot_box:", "🗳" }, + { ":ballot_box_with_check:", "☑" }, + { ":bamboo:", "🎍" }, + { ":banana:", "🍌" }, + { ":bangbang:", "‼" }, + { ":bangladesh:", "🇧🇩" }, + { ":bank:", "🏦" }, + { ":bar_chart:", "📊" }, + { ":barbados:", "🇧🇧" }, + { ":barber:", "💈" }, + { ":baseball:", "⚾" }, + { ":basketball:", "🏀" }, + { ":basketball_man:", "⛹" }, + { ":basketball_woman:", "⛹♀" }, + { ":bat:", "🦇" }, + { ":bath:", "🛀" }, + { ":bathtub:", "🛁" }, + { ":battery:", "🔋" }, + { ":beach_umbrella:", "🏖" }, + { ":bear:", "🐻" }, + { ":bed:", "🛏" }, + { ":bee:", "🐝" }, + { ":beer:", "🍺" }, + { ":beers:", "🍻" }, + { ":beetle:", "🐞" }, + { ":beginner:", "🔰" }, + { ":belarus:", "🇧🇾" }, + { ":belgium:", "🇧🇪" }, + { ":belize:", "🇧🇿" }, + { ":bell:", "🔔" }, + { ":bellhop_bell:", "🛎" }, + { ":benin:", "🇧🇯" }, + { ":bento:", "🍱" }, + { ":bermuda:", "🇧🇲" }, + { ":bhutan:", "🇧🇹" }, + { ":bicyclist:", "🚴" }, + { ":bike:", "🚲" }, + { ":biking_man:", "🚴" }, + { ":biking_woman:", "🚴♀" }, + { ":bikini:", "👙" }, + { ":biohazard:", "☣" }, + { ":bird:", "🐦" }, + { ":birthday:", "🎂" }, + { ":black_circle:", "⚫" }, + { ":black_flag:", "🏴" }, + { ":black_heart:", "🖤" }, + { ":black_joker:", "🃏" }, + { ":black_large_square:", "⬛" }, + { ":black_medium_small_square:", "◾" }, + { ":black_medium_square:", "◼" }, + { ":black_nib:", "✒" }, + { ":black_small_square:", "▪" }, + { ":black_square_button:", "🔲" }, + { ":blonde_man:", "👱" }, + { ":blonde_woman:", "👱♀" }, + { ":blossom:", "🌼" }, + { ":blowfish:", "🐡" }, + { ":blue_book:", "📘" }, + { ":blue_car:", "🚙" }, + { ":blue_heart:", "💙" }, + { ":blush:", "😊" }, + { ":boar:", "🐗" }, + { ":boat:", "⛵" }, + { ":bolivia:", "🇧🇴" }, + { ":bomb:", "💣" }, + { ":book:", "📖" }, + { ":bookmark:", "🔖" }, + { ":bookmark_tabs:", "📑" }, + { ":books:", "📚" }, + { ":boom:", "💥" }, + { ":boot:", "👢" }, + { ":bosnia_herzegovina:", "🇧🇦" }, + { ":botswana:", "🇧🇼" }, + { ":bouquet:", "💐" }, + { ":bow:", "🙇" }, + { ":bow_and_arrow:", "🏹" }, + { ":bowing_man:", "🙇" }, + { ":bowing_woman:", "🙇♀" }, + { ":bowling:", "🎳" }, + { ":boxing_glove:", "🥊" }, + { ":boy:", "👦" }, + { ":brazil:", "🇧🇷" }, + { ":bread:", "🍞" }, + { ":bride_with_veil:", "👰" }, + { ":bridge_at_night:", "🌉" }, + { ":briefcase:", "💼" }, + { ":british_indian_ocean_territory:", "🇮🇴" }, + { ":british_virgin_islands:", "🇻🇬" }, + { ":broken_heart:", "💔" }, + { ":brunei:", "🇧🇳" }, + { ":bug:", "🐛" }, + { ":building_construction:", "🏗" }, + { ":bulb:", "💡" }, + { ":bulgaria:", "🇧🇬" }, + { ":bullettrain_front:", "🚅" }, + { ":bullettrain_side:", "🚄" }, + { ":burkina_faso:", "🇧🇫" }, + { ":burrito:", "🌯" }, + { ":burundi:", "🇧🇮" }, + { ":bus:", "🚌" }, + { ":business_suit_levitating:", "🕴" }, + { ":busstop:", "🚏" }, + { ":bust_in_silhouette:", "👤" }, + { ":busts_in_silhouette:", "👥" }, + { ":butterfly:", "🦋" }, + { ":cactus:", "🌵" }, + { ":cake:", "🍰" }, + { ":calendar:", "📆" }, + { ":call_me_hand:", "🤙" }, + { ":calling:", "📲" }, + { ":cambodia:", "🇰🇭" }, + { ":camel:", "🐫" }, + { ":camera:", "📷" }, + { ":camera_flash:", "📸" }, + { ":cameroon:", "🇨🇲" }, + { ":camping:", "🏕" }, + { ":canada:", "🇨🇦" }, + { ":canary_islands:", "🇮🇨" }, + { ":cancer:", "♋" }, + { ":candle:", "🕯" }, + { ":candy:", "🍬" }, + { ":canoe:", "🛶" }, + { ":cape_verde:", "🇨🇻" }, + { ":capital_abcd:", "🔠" }, + { ":capricorn:", "♑" }, + { ":car:", "🚗" }, + { ":card_file_box:", "🗃" }, + { ":card_index:", "📇" }, + { ":card_index_dividers:", "🗂" }, + { ":caribbean_netherlands:", "🇧🇶" }, + { ":carousel_horse:", "🎠" }, + { ":carrot:", "🥕" }, + { ":cat:", "🐱" }, + { ":cat2:", "🐈" }, + { ":cayman_islands:", "🇰🇾" }, + { ":cd:", "💿" }, + { ":central_african_republic:", "🇨🇫" }, + { ":chad:", "🇹🇩" }, + { ":chains:", "⛓" }, + { ":champagne:", "🍾" }, + { ":chart:", "💹" }, + { ":chart_with_downwards_trend:", "📉" }, + { ":chart_with_upwards_trend:", "📈" }, + { ":checkered_flag:", "🏁" }, + { ":cheese:", "🧀" }, + { ":cherries:", "🍒" }, + { ":cherry_blossom:", "🌸" }, + { ":chestnut:", "🌰" }, + { ":chicken:", "🐔" }, + { ":children_crossing:", "🚸" }, + { ":chile:", "🇨🇱" }, + { ":chipmunk:", "🐿" }, + { ":chocolate_bar:", "🍫" }, + { ":christmas_island:", "🇨🇽" }, + { ":christmas_tree:", "🎄" }, + { ":church:", "⛪" }, + { ":cinema:", "🎦" }, + { ":circus_tent:", "🎪" }, + { ":city_sunrise:", "🌇" }, + { ":city_sunset:", "🌆" }, + { ":cityscape:", "🏙" }, + { ":cl:", "🆑" }, + { ":clamp:", "🗜" }, + { ":clap:", "👏" }, + { ":clapper:", "🎬" }, + { ":classical_building:", "🏛" }, + { ":clinking_glasses:", "🥂" }, + { ":clipboard:", "📋" }, + { ":clock1:", "🕐" }, + { ":clock10:", "🕙" }, + { ":clock1030:", "🕥" }, + { ":clock11:", "🕚" }, + { ":clock1130:", "🕦" }, + { ":clock12:", "🕛" }, + { ":clock1230:", "🕧" }, + { ":clock130:", "🕜" }, + { ":clock2:", "🕑" }, + { ":clock230:", "🕝" }, + { ":clock3:", "🕒" }, + { ":clock330:", "🕞" }, + { ":clock4:", "🕓" }, + { ":clock430:", "🕟" }, + { ":clock5:", "🕔" }, + { ":clock530:", "🕠" }, + { ":clock6:", "🕕" }, + { ":clock630:", "🕡" }, + { ":clock7:", "🕖" }, + { ":clock730:", "🕢" }, + { ":clock8:", "🕗" }, + { ":clock830:", "🕣" }, + { ":clock9:", "🕘" }, + { ":clock930:", "🕤" }, + { ":closed_book:", "📕" }, + { ":closed_lock_with_key:", "🔐" }, + { ":closed_umbrella:", "🌂" }, + { ":cloud:", "☁" }, + { ":cloud_with_lightning:", "🌩" }, + { ":cloud_with_lightning_and_rain:", "⛈" }, + { ":cloud_with_rain:", "🌧" }, + { ":cloud_with_snow:", "🌨" }, + { ":clown_face:", "🤡" }, + { ":clubs:", "♣" }, + { ":cn:", "🇨🇳" }, + { ":cocktail:", "🍸" }, + { ":cocos_islands:", "🇨🇨" }, + { ":coffee:", "☕" }, + { ":coffin:", "⚰" }, + { ":cold_sweat:", "😰" }, + { ":collision:", "💥" }, + { ":colombia:", "🇨🇴" }, + { ":comet:", "☄" }, + { ":comoros:", "🇰🇲" }, + { ":computer:", "💻" }, + { ":computer_mouse:", "🖱" }, + { ":confetti_ball:", "🎊" }, + { ":confounded:", "😖" }, + { ":confused:", "😕" }, + { ":congo_brazzaville:", "🇨🇬" }, + { ":congo_kinshasa:", "🇨🇩" }, + { ":congratulations:", "㊗" }, + { ":construction:", "🚧" }, + { ":construction_worker:", "👷" }, + { ":construction_worker_man:", "👷" }, + { ":construction_worker_woman:", "👷♀" }, + { ":control_knobs:", "🎛" }, + { ":convenience_store:", "🏪" }, + { ":cook_islands:", "🇨🇰" }, + { ":cookie:", "🍪" }, + { ":cool:", "🆒" }, + { ":cop:", "👮" }, + { ":copyright:", "©" }, + { ":corn:", "🌽" }, + { ":costa_rica:", "🇨🇷" }, + { ":cote_divoire:", "🇨🇮" }, + { ":couch_and_lamp:", "🛋" }, + { ":couple:", "👫" }, + { ":couple_with_heart:", "💑" }, + { ":couple_with_heart_man_man:", "👨❤👨" }, + { ":couple_with_heart_woman_man:", "💑" }, + { ":couple_with_heart_woman_woman:", "👩❤👩" }, + { ":couplekiss_man_man:", "👨❤💋👨" }, + { ":couplekiss_man_woman:", "💏" }, + { ":couplekiss_woman_woman:", "👩❤💋👩" }, + { ":cow:", "🐮" }, + { ":cow2:", "🐄" }, + { ":cowboy_hat_face:", "🤠" }, + { ":crab:", "🦀" }, + { ":crayon:", "🖍" }, + { ":credit_card:", "💳" }, + { ":crescent_moon:", "🌙" }, + { ":cricket:", "🏏" }, + { ":croatia:", "🇭🇷" }, + { ":crocodile:", "🐊" }, + { ":croissant:", "🥐" }, + { ":crossed_fingers:", "🤞" }, + { ":crossed_flags:", "🎌" }, + { ":crossed_swords:", "⚔" }, + { ":crown:", "👑" }, + { ":cry:", "😢" }, + { ":crying_cat_face:", "😿" }, + { ":crystal_ball:", "🔮" }, + { ":cuba:", "🇨🇺" }, + { ":cucumber:", "🥒" }, + { ":cupid:", "💘" }, + { ":curacao:", "🇨🇼" }, + { ":curly_loop:", "➰" }, + { ":currency_exchange:", "💱" }, + { ":curry:", "🍛" }, + { ":custard:", "🍮" }, + { ":customs:", "🛃" }, + { ":cyclone:", "🌀" }, + { ":cyprus:", "🇨🇾" }, + { ":czech_republic:", "🇨🇿" }, + { ":dagger:", "🗡" }, + { ":dancer:", "💃" }, + { ":dancers:", "👯" }, + { ":dancing_men:", "👯♂" }, + { ":dancing_women:", "👯" }, + { ":dango:", "🍡" }, + { ":dark_sunglasses:", "🕶" }, + { ":dart:", "🎯" }, + { ":dash:", "💨" }, + { ":date:", "📅" }, + { ":de:", "🇩🇪" }, + { ":deciduous_tree:", "🌳" }, + { ":deer:", "🦌" }, + { ":denmark:", "🇩🇰" }, + { ":department_store:", "🏬" }, + { ":derelict_house:", "🏚" }, + { ":desert:", "🏜" }, + { ":desert_island:", "🏝" }, + { ":desktop_computer:", "🖥" }, + { ":detective:", "🕵" }, + { ":diamond_shape_with_a_dot_inside:", "💠" }, + { ":diamonds:", "♦" }, + { ":disappointed:", "😞" }, + { ":disappointed_relieved:", "😥" }, + { ":dizzy:", "💫" }, + { ":dizzy_face:", "😵" }, + { ":djibouti:", "🇩🇯" }, + { ":do_not_litter:", "🚯" }, + { ":dog:", "🐶" }, + { ":dog2:", "🐕" }, + { ":dollar:", "💵" }, + { ":dolls:", "🎎" }, + { ":dolphin:", "🐬" }, + { ":dominica:", "🇩🇲" }, + { ":dominican_republic:", "🇩🇴" }, + { ":door:", "🚪" }, + { ":doughnut:", "🍩" }, + { ":dove:", "🕊" }, + { ":dragon:", "🐉" }, + { ":dragon_face:", "🐲" }, + { ":dress:", "👗" }, + { ":dromedary_camel:", "🐪" }, + { ":drooling_face:", "🤤" }, + { ":droplet:", "💧" }, + { ":drum:", "🥁" }, + { ":duck:", "🦆" }, + { ":dvd:", "📀" }, + { ":e-mail:", "📧" }, + { ":eagle:", "🦅" }, + { ":ear:", "👂" }, + { ":ear_of_rice:", "🌾" }, + { ":earth_africa:", "🌍" }, + { ":earth_americas:", "🌎" }, + { ":earth_asia:", "🌏" }, + { ":ecuador:", "🇪🇨" }, + { ":egg:", "🥚" }, + { ":eggplant:", "🍆" }, + { ":egypt:", "🇪🇬" }, + { ":eight:", "8⃣" }, + { ":eight_pointed_black_star:", "✴" }, + { ":eight_spoked_asterisk:", "✳" }, + { ":el_salvador:", "🇸🇻" }, + { ":electric_plug:", "🔌" }, + { ":elephant:", "🐘" }, + { ":email:", "✉" }, + { ":end:", "🔚" }, + { ":envelope:", "✉" }, + { ":envelope_with_arrow:", "📩" }, + { ":equatorial_guinea:", "🇬🇶" }, + { ":eritrea:", "🇪🇷" }, + { ":es:", "🇪🇸" }, + { ":estonia:", "🇪🇪" }, + { ":ethiopia:", "🇪🇹" }, + { ":eu:", "🇪🇺" }, + { ":euro:", "💶" }, + { ":european_castle:", "🏰" }, + { ":european_post_office:", "🏤" }, + { ":european_union:", "🇪🇺" }, + { ":evergreen_tree:", "🌲" }, + { ":exclamation:", "❗" }, + { ":expressionless:", "😑" }, + { ":eye:", "👁" }, + { ":eye_speech_bubble:", "👁🗨" }, + { ":eyeglasses:", "👓" }, + { ":eyes:", "👀" }, + { ":face_with_head_bandage:", "🤕" }, + { ":face_with_thermometer:", "🤒" }, + { ":facepunch:", "👊" }, + { ":factory:", "🏭" }, + { ":falkland_islands:", "🇫🇰" }, + { ":fallen_leaf:", "🍂" }, + { ":family:", "👪" }, + { ":family_man_boy:", "👨👦" }, + { ":family_man_boy_boy:", "👨👦👦" }, + { ":family_man_girl:", "👨👧" }, + { ":family_man_girl_boy:", "👨👧👦" }, + { ":family_man_girl_girl:", "👨👧👧" }, + { ":family_man_man_boy:", "👨👨👦" }, + { ":family_man_man_boy_boy:", "👨👨👦👦" }, + { ":family_man_man_girl:", "👨👨👧" }, + { ":family_man_man_girl_boy:", "👨👨👧👦" }, + { ":family_man_man_girl_girl:", "👨👨👧👧" }, + { ":family_man_woman_boy:", "👪" }, + { ":family_man_woman_boy_boy:", "👨👩👦👦" }, + { ":family_man_woman_girl:", "👨👩👧" }, + { ":family_man_woman_girl_boy:", "👨👩👧👦" }, + { ":family_man_woman_girl_girl:", "👨👩👧👧" }, + { ":family_woman_boy:", "👩👦" }, + { ":family_woman_boy_boy:", "👩👦👦" }, + { ":family_woman_girl:", "👩👧" }, + { ":family_woman_girl_boy:", "👩👧👦" }, + { ":family_woman_girl_girl:", "👩👧👧" }, + { ":family_woman_woman_boy:", "👩👩👦" }, + { ":family_woman_woman_boy_boy:", "👩👩👦👦" }, + { ":family_woman_woman_girl:", "👩👩👧" }, + { ":family_woman_woman_girl_boy:", "👩👩👧👦" }, + { ":family_woman_woman_girl_girl:", "👩👩👧👧" }, + { ":faroe_islands:", "🇫🇴" }, + { ":fast_forward:", "⏩" }, + { ":fax:", "📠" }, + { ":fearful:", "😨" }, + { ":feet:", "🐾" }, + { ":female_detective:", "🕵♀" }, + { ":ferris_wheel:", "🎡" }, + { ":ferry:", "⛴" }, + { ":field_hockey:", "🏑" }, + { ":fiji:", "🇫🇯" }, + { ":file_cabinet:", "🗄" }, + { ":file_folder:", "📁" }, + { ":film_projector:", "📽" }, + { ":film_strip:", "🎞" }, + { ":finland:", "🇫🇮" }, + { ":fire:", "🔥" }, + { ":fire_engine:", "🚒" }, + { ":fireworks:", "🎆" }, + { ":first_quarter_moon:", "🌓" }, + { ":first_quarter_moon_with_face:", "🌛" }, + { ":fish:", "🐟" }, + { ":fish_cake:", "🍥" }, + { ":fishing_pole_and_fish:", "🎣" }, + { ":fist:", "✊" }, + { ":fist_left:", "🤛" }, + { ":fist_oncoming:", "👊" }, + { ":fist_raised:", "✊" }, + { ":fist_right:", "🤜" }, + { ":five:", "5⃣" }, + { ":flags:", "🎏" }, + { ":flashlight:", "🔦" }, + { ":fleur_de_lis:", "⚜" }, + { ":flight_arrival:", "🛬" }, + { ":flight_departure:", "🛫" }, + { ":flipper:", "🐬" }, + { ":floppy_disk:", "💾" }, + { ":flower_playing_cards:", "🎴" }, + { ":flushed:", "😳" }, + { ":fog:", "🌫" }, + { ":foggy:", "🌁" }, + { ":football:", "🏈" }, + { ":footprints:", "👣" }, + { ":fork_and_knife:", "🍴" }, + { ":fountain:", "⛲" }, + { ":fountain_pen:", "🖋" }, + { ":four:", "4⃣" }, + { ":four_leaf_clover:", "🍀" }, + { ":fox_face:", "🦊" }, + { ":fr:", "🇫🇷" }, + { ":framed_picture:", "🖼" }, + { ":free:", "🆓" }, + { ":french_guiana:", "🇬🇫" }, + { ":french_polynesia:", "🇵🇫" }, + { ":french_southern_territories:", "🇹🇫" }, + { ":fried_egg:", "🍳" }, + { ":fried_shrimp:", "🍤" }, + { ":fries:", "🍟" }, + { ":frog:", "🐸" }, + { ":frowning:", "😦" }, + { ":frowning_face:", "☹" }, + { ":frowning_man:", "🙍♂" }, + { ":frowning_woman:", "🙍" }, + { ":fu:", "🖕" }, + { ":fuelpump:", "⛽" }, + { ":full_moon:", "🌕" }, + { ":full_moon_with_face:", "🌝" }, + { ":funeral_urn:", "⚱" }, + { ":gabon:", "🇬🇦" }, + { ":gambia:", "🇬🇲" }, + { ":game_die:", "🎲" }, + { ":gb:", "🇬🇧" }, + { ":gear:", "⚙" }, + { ":gem:", "💎" }, + { ":gemini:", "♊" }, + { ":georgia:", "🇬🇪" }, + { ":ghana:", "🇬🇭" }, + { ":ghost:", "👻" }, + { ":gibraltar:", "🇬🇮" }, + { ":gift:", "🎁" }, + { ":gift_heart:", "💝" }, + { ":girl:", "👧" }, + { ":globe_with_meridians:", "🌐" }, + { ":goal_net:", "🥅" }, + { ":goat:", "🐐" }, + { ":golf:", "⛳" }, + { ":golfing_man:", "🏌" }, + { ":golfing_woman:", "🏌♀" }, + { ":gorilla:", "🦍" }, + { ":grapes:", "🍇" }, + { ":greece:", "🇬🇷" }, + { ":green_apple:", "🍏" }, + { ":green_book:", "📗" }, + { ":green_heart:", "💚" }, + { ":green_salad:", "🥗" }, + { ":greenland:", "🇬🇱" }, + { ":grenada:", "🇬🇩" }, + { ":grey_exclamation:", "❕" }, + { ":grey_question:", "❔" }, + { ":grimacing:", "😬" }, + { ":grin:", "😁" }, + { ":grinning:", "😀" }, + { ":guadeloupe:", "🇬🇵" }, + { ":guam:", "🇬🇺" }, + { ":guardsman:", "💂" }, + { ":guardswoman:", "💂♀" }, + { ":guatemala:", "🇬🇹" }, + { ":guernsey:", "🇬🇬" }, + { ":guinea:", "🇬🇳" }, + { ":guinea_bissau:", "🇬🇼" }, + { ":guitar:", "🎸" }, + { ":gun:", "🔫" }, + { ":guyana:", "🇬🇾" }, + { ":haircut:", "💇" }, + { ":haircut_man:", "💇♂" }, + { ":haircut_woman:", "💇" }, + { ":haiti:", "🇭🇹" }, + { ":hamburger:", "🍔" }, + { ":hammer:", "🔨" }, + { ":hammer_and_pick:", "⚒" }, + { ":hammer_and_wrench:", "🛠" }, + { ":hamster:", "🐹" }, + { ":hand:", "✋" }, + { ":handbag:", "👜" }, + { ":handshake:", "🤝" }, + { ":hankey:", "💩" }, + { ":hash:", "#⃣" }, + { ":hatched_chick:", "🐥" }, + { ":hatching_chick:", "🐣" }, + { ":headphones:", "🎧" }, + { ":hear_no_evil:", "🙉" }, + { ":heart:", "❤" }, + { ":heart_decoration:", "💟" }, + { ":heart_eyes:", "😍" }, + { ":heart_eyes_cat:", "😻" }, + { ":heartbeat:", "💓" }, + { ":heartpulse:", "💗" }, + { ":hearts:", "♥" }, + { ":heavy_check_mark:", "✔" }, + { ":heavy_division_sign:", "➗" }, + { ":heavy_dollar_sign:", "💲" }, + { ":heavy_exclamation_mark:", "❗" }, + { ":heavy_heart_exclamation:", "❣" }, + { ":heavy_minus_sign:", "➖" }, + { ":heavy_multiplication_x:", "✖" }, + { ":heavy_plus_sign:", "➕" }, + { ":helicopter:", "🚁" }, + { ":herb:", "🌿" }, + { ":hibiscus:", "🌺" }, + { ":high_brightness:", "🔆" }, + { ":high_heel:", "👠" }, + { ":hocho:", "🔪" }, + { ":hole:", "🕳" }, + { ":honduras:", "🇭🇳" }, + { ":honey_pot:", "🍯" }, + { ":honeybee:", "🐝" }, + { ":hong_kong:", "🇭🇰" }, + { ":horse:", "🐴" }, + { ":horse_racing:", "🏇" }, + { ":hospital:", "🏥" }, + { ":hot_pepper:", "🌶" }, + { ":hotdog:", "🌭" }, + { ":hotel:", "🏨" }, + { ":hotsprings:", "♨" }, + { ":hourglass:", "⌛" }, + { ":hourglass_flowing_sand:", "⏳" }, + { ":house:", "🏠" }, + { ":house_with_garden:", "🏡" }, + { ":houses:", "🏘" }, + { ":hugs:", "🤗" }, + { ":hungary:", "🇭🇺" }, + { ":hushed:", "😯" }, + { ":ice_cream:", "🍨" }, + { ":ice_hockey:", "🏒" }, + { ":ice_skate:", "⛸" }, + { ":icecream:", "🍦" }, + { ":iceland:", "🇮🇸" }, + { ":id:", "🆔" }, + { ":ideograph_advantage:", "🉐" }, + { ":imp:", "👿" }, + { ":inbox_tray:", "📥" }, + { ":incoming_envelope:", "📨" }, + { ":india:", "🇮🇳" }, + { ":indonesia:", "🇮🇩" }, + { ":information_desk_person:", "💁" }, + { ":information_source:", "ℹ" }, + { ":innocent:", "😇" }, + { ":interrobang:", "⁉" }, + { ":iphone:", "📱" }, + { ":iran:", "🇮🇷" }, + { ":iraq:", "🇮🇶" }, + { ":ireland:", "🇮🇪" }, + { ":isle_of_man:", "🇮🇲" }, + { ":israel:", "🇮🇱" }, + { ":it:", "🇮🇹" }, + { ":izakaya_lantern:", "🏮" }, + { ":jack_o_lantern:", "🎃" }, + { ":jamaica:", "🇯🇲" }, + { ":japan:", "🗾" }, + { ":japanese_castle:", "🏯" }, + { ":japanese_goblin:", "👺" }, + { ":japanese_ogre:", "👹" }, + { ":jeans:", "👖" }, + { ":jersey:", "🇯🇪" }, + { ":jordan:", "🇯🇴" }, + { ":joy:", "😂" }, + { ":joy_cat:", "😹" }, + { ":joystick:", "🕹" }, + { ":jp:", "🇯🇵" }, + { ":kaaba:", "🕋" }, + { ":kazakhstan:", "🇰🇿" }, + { ":kenya:", "🇰🇪" }, + { ":key:", "🔑" }, + { ":keyboard:", "⌨" }, + { ":keycap_ten:", "🔟" }, + { ":kick_scooter:", "🛴" }, + { ":kimono:", "👘" }, + { ":kiribati:", "🇰🇮" }, + { ":kiss:", "💋" }, + { ":kissing:", "😗" }, + { ":kissing_cat:", "😽" }, + { ":kissing_closed_eyes:", "😚" }, + { ":kissing_heart:", "😘" }, + { ":kissing_smiling_eyes:", "😙" }, + { ":kiwi_fruit:", "🥝" }, + { ":knife:", "🔪" }, + { ":koala:", "🐨" }, + { ":koko:", "🈁" }, + { ":kosovo:", "🇽🇰" }, + { ":kr:", "🇰🇷" }, + { ":kuwait:", "🇰🇼" }, + { ":kyrgyzstan:", "🇰🇬" }, + { ":label:", "🏷" }, + { ":lantern:", "🏮" }, + { ":laos:", "🇱🇦" }, + { ":large_blue_circle:", "🔵" }, + { ":large_blue_diamond:", "🔷" }, + { ":large_orange_diamond:", "🔶" }, + { ":last_quarter_moon:", "🌗" }, + { ":last_quarter_moon_with_face:", "🌜" }, + { ":latin_cross:", "✝" }, + { ":latvia:", "🇱🇻" }, + { ":laughing:", "😆" }, + { ":leaves:", "🍃" }, + { ":lebanon:", "🇱🇧" }, + { ":ledger:", "📒" }, + { ":left_luggage:", "🛅" }, + { ":left_right_arrow:", "↔" }, + { ":leftwards_arrow_with_hook:", "↩" }, + { ":lemon:", "🍋" }, + { ":leo:", "♌" }, + { ":leopard:", "🐆" }, + { ":lesotho:", "🇱🇸" }, + { ":level_slider:", "🎚" }, + { ":liberia:", "🇱🇷" }, + { ":libra:", "♎" }, + { ":libya:", "🇱🇾" }, + { ":liechtenstein:", "🇱🇮" }, + { ":light_rail:", "🚈" }, + { ":link:", "🔗" }, + { ":lion:", "🦁" }, + { ":lips:", "👄" }, + { ":lipstick:", "💄" }, + { ":lithuania:", "🇱🇹" }, + { ":lizard:", "🦎" }, + { ":lock:", "🔒" }, + { ":lock_with_ink_pen:", "🔏" }, + { ":lollipop:", "🍭" }, + { ":loop:", "➿" }, + { ":loud_sound:", "🔊" }, + { ":loudspeaker:", "📢" }, + { ":love_hotel:", "🏩" }, + { ":love_letter:", "💌" }, + { ":low_brightness:", "🔅" }, + { ":luxembourg:", "🇱🇺" }, + { ":lying_face:", "🤥" }, + { ":m:", "Ⓜ" }, + { ":macau:", "🇲🇴" }, + { ":macedonia:", "🇲🇰" }, + { ":madagascar:", "🇲🇬" }, + { ":mag:", "🔍" }, + { ":mag_right:", "🔎" }, + { ":mahjong:", "🀄" }, + { ":mailbox:", "📫" }, + { ":mailbox_closed:", "📪" }, + { ":mailbox_with_mail:", "📬" }, + { ":mailbox_with_no_mail:", "📭" }, + { ":malawi:", "🇲🇼" }, + { ":malaysia:", "🇲🇾" }, + { ":maldives:", "🇲🇻" }, + { ":male_detective:", "🕵" }, + { ":mali:", "🇲🇱" }, + { ":malta:", "🇲🇹" }, + { ":man:", "👨" }, + { ":man_artist:", "👨🎨" }, + { ":man_astronaut:", "👨🚀" }, + { ":man_cartwheeling:", "🤸♂" }, + { ":man_cook:", "👨🍳" }, + { ":man_dancing:", "🕺" }, + { ":man_facepalming:", "🤦♂" }, + { ":man_factory_worker:", "👨🏭" }, + { ":man_farmer:", "👨🌾" }, + { ":man_firefighter:", "👨🚒" }, + { ":man_health_worker:", "👨⚕" }, + { ":man_in_tuxedo:", "🤵" }, + { ":man_judge:", "👨⚖" }, + { ":man_juggling:", "🤹♂" }, + { ":man_mechanic:", "👨🔧" }, + { ":man_office_worker:", "👨💼" }, + { ":man_pilot:", "👨✈" }, + { ":man_playing_handball:", "🤾♂" }, + { ":man_playing_water_polo:", "🤽♂" }, + { ":man_scientist:", "👨🔬" }, + { ":man_shrugging:", "🤷♂" }, + { ":man_singer:", "👨🎤" }, + { ":man_student:", "👨🎓" }, + { ":man_teacher:", "👨🏫" }, + { ":man_technologist:", "👨💻" }, + { ":man_with_gua_pi_mao:", "👲" }, + { ":man_with_turban:", "👳" }, + { ":mandarin:", "🍊" }, + { ":mans_shoe:", "👞" }, + { ":mantelpiece_clock:", "🕰" }, + { ":maple_leaf:", "🍁" }, + { ":marshall_islands:", "🇲🇭" }, + { ":martial_arts_uniform:", "🥋" }, + { ":martinique:", "🇲🇶" }, + { ":mask:", "😷" }, + { ":massage:", "💆" }, + { ":massage_man:", "💆♂" }, + { ":massage_woman:", "💆" }, + { ":mauritania:", "🇲🇷" }, + { ":mauritius:", "🇲🇺" }, + { ":mayotte:", "🇾🇹" }, + { ":meat_on_bone:", "🍖" }, + { ":medal_military:", "🎖" }, + { ":medal_sports:", "🏅" }, + { ":mega:", "📣" }, + { ":melon:", "🍈" }, + { ":memo:", "📝" }, + { ":men_wrestling:", "🤼♂" }, + { ":menorah:", "🕎" }, + { ":mens:", "🚹" }, + { ":metal:", "🤘" }, + { ":metro:", "🚇" }, + { ":mexico:", "🇲🇽" }, + { ":micronesia:", "🇫🇲" }, + { ":microphone:", "🎤" }, + { ":microscope:", "🔬" }, + { ":middle_finger:", "🖕" }, + { ":milk_glass:", "🥛" }, + { ":milky_way:", "🌌" }, + { ":minibus:", "🚐" }, + { ":minidisc:", "💽" }, + { ":mobile_phone_off:", "📴" }, + { ":moldova:", "🇲🇩" }, + { ":monaco:", "🇲🇨" }, + { ":money_mouth_face:", "🤑" }, + { ":money_with_wings:", "💸" }, + { ":moneybag:", "💰" }, + { ":mongolia:", "🇲🇳" }, + { ":monkey:", "🐒" }, + { ":monkey_face:", "🐵" }, + { ":monorail:", "🚝" }, + { ":montenegro:", "🇲🇪" }, + { ":montserrat:", "🇲🇸" }, + { ":moon:", "🌔" }, + { ":morocco:", "🇲🇦" }, + { ":mortar_board:", "🎓" }, + { ":mosque:", "🕌" }, + { ":motor_boat:", "🛥" }, + { ":motor_scooter:", "🛵" }, + { ":motorcycle:", "🏍" }, + { ":motorway:", "🛣" }, + { ":mount_fuji:", "🗻" }, + { ":mountain:", "⛰" }, + { ":mountain_bicyclist:", "🚵" }, + { ":mountain_biking_man:", "🚵" }, + { ":mountain_biking_woman:", "🚵♀" }, + { ":mountain_cableway:", "🚠" }, + { ":mountain_railway:", "🚞" }, + { ":mountain_snow:", "🏔" }, + { ":mouse:", "🐭" }, + { ":mouse2:", "🐁" }, + { ":movie_camera:", "🎥" }, + { ":moyai:", "🗿" }, + { ":mozambique:", "🇲🇿" }, + { ":mrs_claus:", "🤶" }, + { ":muscle:", "💪" }, + { ":mushroom:", "🍄" }, + { ":musical_keyboard:", "🎹" }, + { ":musical_note:", "🎵" }, + { ":musical_score:", "🎼" }, + { ":mute:", "🔇" }, + { ":myanmar:", "🇲🇲" }, + { ":nail_care:", "💅" }, + { ":name_badge:", "📛" }, + { ":namibia:", "🇳🇦" }, + { ":national_park:", "🏞" }, + { ":nauru:", "🇳🇷" }, + { ":nauseated_face:", "🤢" }, + { ":necktie:", "👔" }, + { ":negative_squared_cross_mark:", "❎" }, + { ":nepal:", "🇳🇵" }, + { ":nerd_face:", "🤓" }, + { ":netherlands:", "🇳🇱" }, + { ":neutral_face:", "😐" }, + { ":new:", "🆕" }, + { ":new_caledonia:", "🇳🇨" }, + { ":new_moon:", "🌑" }, + { ":new_moon_with_face:", "🌚" }, + { ":new_zealand:", "🇳🇿" }, + { ":newspaper:", "📰" }, + { ":newspaper_roll:", "🗞" }, + { ":next_track_button:", "⏭" }, + { ":ng:", "🆖" }, + { ":ng_man:", "🙅♂" }, + { ":ng_woman:", "🙅" }, + { ":nicaragua:", "🇳🇮" }, + { ":niger:", "🇳🇪" }, + { ":nigeria:", "🇳🇬" }, + { ":night_with_stars:", "🌃" }, + { ":nine:", "9⃣" }, + { ":niue:", "🇳🇺" }, + { ":no_bell:", "🔕" }, + { ":no_bicycles:", "🚳" }, + { ":no_entry:", "⛔" }, + { ":no_entry_sign:", "🚫" }, + { ":no_good:", "🙅" }, + { ":no_good_man:", "🙅♂" }, + { ":no_good_woman:", "🙅" }, + { ":no_mobile_phones:", "📵" }, + { ":no_mouth:", "😶" }, + { ":no_pedestrians:", "🚷" }, + { ":no_smoking:", "🚭" }, + { ":non-potable_water:", "🚱" }, + { ":norfolk_island:", "🇳🇫" }, + { ":north_korea:", "🇰🇵" }, + { ":northern_mariana_islands:", "🇲🇵" }, + { ":norway:", "🇳🇴" }, + { ":nose:", "👃" }, + { ":notebook:", "📓" }, + { ":notebook_with_decorative_cover:", "📔" }, + { ":notes:", "🎶" }, + { ":nut_and_bolt:", "🔩" }, + { ":o:", "⭕" }, + { ":o2:", "🅾" }, + { ":ocean:", "🌊" }, + { ":octopus:", "🐙" }, + { ":oden:", "🍢" }, + { ":office:", "🏢" }, + { ":oil_drum:", "🛢" }, + { ":ok:", "🆗" }, + { ":ok_hand:", "👌" }, + { ":ok_man:", "🙆♂" }, + { ":ok_woman:", "🙆" }, + { ":old_key:", "🗝" }, + { ":older_man:", "👴" }, + { ":older_woman:", "👵" }, + { ":om:", "🕉" }, + { ":oman:", "🇴🇲" }, + { ":on:", "🔛" }, + { ":oncoming_automobile:", "🚘" }, + { ":oncoming_bus:", "🚍" }, + { ":oncoming_police_car:", "🚔" }, + { ":oncoming_taxi:", "🚖" }, + { ":one:", "1⃣" }, + { ":open_book:", "📖" }, + { ":open_file_folder:", "📂" }, + { ":open_hands:", "👐" }, + { ":open_mouth:", "😮" }, + { ":open_umbrella:", "☂" }, + { ":ophiuchus:", "⛎" }, + { ":orange:", "🍊" }, + { ":orange_book:", "📙" }, + { ":orthodox_cross:", "☦" }, + { ":outbox_tray:", "📤" }, + { ":owl:", "🦉" }, + { ":ox:", "🐂" }, + { ":package:", "📦" }, + { ":page_facing_up:", "📄" }, + { ":page_with_curl:", "📃" }, + { ":pager:", "📟" }, + { ":paintbrush:", "🖌" }, + { ":pakistan:", "🇵🇰" }, + { ":palau:", "🇵🇼" }, + { ":palestinian_territories:", "🇵🇸" }, + { ":palm_tree:", "🌴" }, + { ":panama:", "🇵🇦" }, + { ":pancakes:", "🥞" }, + { ":panda_face:", "🐼" }, + { ":paperclip:", "📎" }, + { ":paperclips:", "🖇" }, + { ":papua_new_guinea:", "🇵🇬" }, + { ":paraguay:", "🇵🇾" }, + { ":parasol_on_ground:", "⛱" }, + { ":parking:", "🅿" }, + { ":part_alternation_mark:", "〽" }, + { ":partly_sunny:", "⛅" }, + { ":passenger_ship:", "🛳" }, + { ":passport_control:", "🛂" }, + { ":pause_button:", "⏸" }, + { ":paw_prints:", "🐾" }, + { ":peace_symbol:", "☮" }, + { ":peach:", "🍑" }, + { ":peanuts:", "🥜" }, + { ":pear:", "🍐" }, + { ":pen:", "🖊" }, + { ":pencil:", "📝" }, + { ":pencil2:", "✏" }, + { ":penguin:", "🐧" }, + { ":pensive:", "😔" }, + { ":performing_arts:", "🎭" }, + { ":persevere:", "😣" }, + { ":person_fencing:", "🤺" }, + { ":person_frowning:", "🙍" }, + { ":person_with_blond_hair:", "👱" }, + { ":person_with_pouting_face:", "🙎" }, + { ":peru:", "🇵🇪" }, + { ":philippines:", "🇵🇭" }, + { ":phone:", "☎" }, + { ":pick:", "⛏" }, + { ":pig:", "🐷" }, + { ":pig2:", "🐖" }, + { ":pig_nose:", "🐽" }, + { ":pill:", "💊" }, + { ":pineapple:", "🍍" }, + { ":ping_pong:", "🏓" }, + { ":pisces:", "♓" }, + { ":pitcairn_islands:", "🇵🇳" }, + { ":pizza:", "🍕" }, + { ":place_of_worship:", "🛐" }, + { ":plate_with_cutlery:", "🍽" }, + { ":play_or_pause_button:", "⏯" }, + { ":point_down:", "👇" }, + { ":point_left:", "👈" }, + { ":point_right:", "👉" }, + { ":point_up:", "☝" }, + { ":point_up_2:", "👆" }, + { ":poland:", "🇵🇱" }, + { ":police_car:", "🚓" }, + { ":policeman:", "👮" }, + { ":policewoman:", "👮♀" }, + { ":poodle:", "🐩" }, + { ":poop:", "💩" }, + { ":popcorn:", "🍿" }, + { ":portugal:", "🇵🇹" }, + { ":post_office:", "🏣" }, + { ":postal_horn:", "📯" }, + { ":postbox:", "📮" }, + { ":potable_water:", "🚰" }, + { ":potato:", "🥔" }, + { ":pouch:", "👝" }, + { ":poultry_leg:", "🍗" }, + { ":pound:", "💷" }, + { ":pout:", "😡" }, + { ":pouting_cat:", "😾" }, + { ":pouting_man:", "🙎♂" }, + { ":pouting_woman:", "🙎" }, + { ":pray:", "🙏" }, + { ":prayer_beads:", "📿" }, + { ":pregnant_woman:", "🤰" }, + { ":previous_track_button:", "⏮" }, + { ":prince:", "🤴" }, + { ":princess:", "👸" }, + { ":printer:", "🖨" }, + { ":puerto_rico:", "🇵🇷" }, + { ":punch:", "👊" }, + { ":purple_heart:", "💜" }, + { ":purse:", "👛" }, + { ":pushpin:", "📌" }, + { ":put_litter_in_its_place:", "🚮" }, + { ":qatar:", "🇶🇦" }, + { ":question:", "❓" }, + { ":rabbit:", "🐰" }, + { ":rabbit2:", "🐇" }, + { ":racehorse:", "🐎" }, + { ":racing_car:", "🏎" }, + { ":radio:", "📻" }, + { ":radio_button:", "🔘" }, + { ":radioactive:", "☢" }, + { ":rage:", "😡" }, + { ":railway_car:", "🚃" }, + { ":railway_track:", "🛤" }, + { ":rainbow:", "🌈" }, + { ":rainbow_flag:", "🏳🌈" }, + { ":raised_back_of_hand:", "🤚" }, + { ":raised_hand:", "✋" }, + { ":raised_hand_with_fingers_splayed:", "🖐" }, + { ":raised_hands:", "🙌" }, + { ":raising_hand:", "🙋" }, + { ":raising_hand_man:", "🙋♂" }, + { ":raising_hand_woman:", "🙋" }, + { ":ram:", "🐏" }, + { ":ramen:", "🍜" }, + { ":rat:", "🐀" }, + { ":record_button:", "⏺" }, + { ":recycle:", "♻" }, + { ":red_car:", "🚗" }, + { ":red_circle:", "🔴" }, + { ":registered:", "®" }, + { ":relaxed:", "☺" }, + { ":relieved:", "😌" }, + { ":reminder_ribbon:", "🎗" }, + { ":repeat:", "🔁" }, + { ":repeat_one:", "🔂" }, + { ":rescue_worker_helmet:", "⛑" }, + { ":restroom:", "🚻" }, + { ":reunion:", "🇷🇪" }, + { ":revolving_hearts:", "💞" }, + { ":rewind:", "⏪" }, + { ":rhinoceros:", "🦏" }, + { ":ribbon:", "🎀" }, + { ":rice:", "🍚" }, + { ":rice_ball:", "🍙" }, + { ":rice_cracker:", "🍘" }, + { ":rice_scene:", "🎑" }, + { ":right_anger_bubble:", "🗯" }, + { ":ring:", "💍" }, + { ":robot:", "🤖" }, + { ":rocket:", "🚀" }, + { ":rofl:", "🤣" }, + { ":roll_eyes:", "🙄" }, + { ":roller_coaster:", "🎢" }, + { ":romania:", "🇷🇴" }, + { ":rooster:", "🐓" }, + { ":rose:", "🌹" }, + { ":rosette:", "🏵" }, + { ":rotating_light:", "🚨" }, + { ":round_pushpin:", "📍" }, + { ":rowboat:", "🚣" }, + { ":rowing_man:", "🚣" }, + { ":rowing_woman:", "🚣♀" }, + { ":ru:", "🇷🇺" }, + { ":rugby_football:", "🏉" }, + { ":runner:", "🏃" }, + { ":running:", "🏃" }, + { ":running_man:", "🏃" }, + { ":running_shirt_with_sash:", "🎽" }, + { ":running_woman:", "🏃♀" }, + { ":rwanda:", "🇷🇼" }, + { ":sa:", "🈂" }, + { ":sagittarius:", "♐" }, + { ":sailboat:", "⛵" }, + { ":sake:", "🍶" }, + { ":samoa:", "🇼🇸" }, + { ":san_marino:", "🇸🇲" }, + { ":sandal:", "👡" }, + { ":santa:", "🎅" }, + { ":sao_tome_principe:", "🇸🇹" }, + { ":satellite:", "📡" }, + { ":satisfied:", "😆" }, + { ":saudi_arabia:", "🇸🇦" }, + { ":saxophone:", "🎷" }, + { ":school:", "🏫" }, + { ":school_satchel:", "🎒" }, + { ":scissors:", "✂" }, + { ":scorpion:", "🦂" }, + { ":scorpius:", "♏" }, + { ":scream:", "😱" }, + { ":scream_cat:", "🙀" }, + { ":scroll:", "📜" }, + { ":seat:", "💺" }, + { ":secret:", "㊙" }, + { ":see_no_evil:", "🙈" }, + { ":seedling:", "🌱" }, + { ":selfie:", "🤳" }, + { ":senegal:", "🇸🇳" }, + { ":serbia:", "🇷🇸" }, + { ":seven:", "7⃣" }, + { ":seychelles:", "🇸🇨" }, + { ":shallow_pan_of_food:", "🥘" }, + { ":shamrock:", "☘" }, + { ":shark:", "🦈" }, + { ":shaved_ice:", "🍧" }, + { ":sheep:", "🐑" }, + { ":shell:", "🐚" }, + { ":shield:", "🛡" }, + { ":shinto_shrine:", "⛩" }, + { ":ship:", "🚢" }, + { ":shirt:", "👕" }, + { ":shit:", "💩" }, + { ":shoe:", "👞" }, + { ":shopping:", "🛍" }, + { ":shopping_cart:", "🛒" }, + { ":shower:", "🚿" }, + { ":shrimp:", "🦐" }, + { ":sierra_leone:", "🇸🇱" }, + { ":signal_strength:", "📶" }, + { ":singapore:", "🇸🇬" }, + { ":sint_maarten:", "🇸🇽" }, + { ":six:", "6⃣" }, + { ":six_pointed_star:", "🔯" }, + { ":ski:", "🎿" }, + { ":skier:", "⛷" }, + { ":skull:", "💀" }, + { ":skull_and_crossbones:", "☠" }, + { ":sleeping:", "😴" }, + { ":sleeping_bed:", "🛌" }, + { ":sleepy:", "😪" }, + { ":slightly_frowning_face:", "🙁" }, + { ":slightly_smiling_face:", "🙂" }, + { ":slot_machine:", "🎰" }, + { ":slovakia:", "🇸🇰" }, + { ":slovenia:", "🇸🇮" }, + { ":small_airplane:", "🛩" }, + { ":small_blue_diamond:", "🔹" }, + { ":small_orange_diamond:", "🔸" }, + { ":small_red_triangle:", "🔺" }, + { ":small_red_triangle_down:", "🔻" }, + { ":smile:", "😄" }, + { ":smile_cat:", "😸" }, + { ":smiley:", "😃" }, + { ":smiley_cat:", "😺" }, + { ":smiling_imp:", "😈" }, + { ":smirk:", "😏" }, + { ":smirk_cat:", "😼" }, + { ":smoking:", "🚬" }, + { ":snail:", "🐌" }, + { ":snake:", "🐍" }, + { ":sneezing_face:", "🤧" }, + { ":snowboarder:", "🏂" }, + { ":snowflake:", "❄" }, + { ":snowman:", "⛄" }, + { ":snowman_with_snow:", "☃" }, + { ":sob:", "😭" }, + { ":soccer:", "⚽" }, + { ":solomon_islands:", "🇸🇧" }, + { ":somalia:", "🇸🇴" }, + { ":soon:", "🔜" }, + { ":sos:", "🆘" }, + { ":sound:", "🔉" }, + { ":south_africa:", "🇿🇦" }, + { ":south_georgia_south_sandwich_islands:", "🇬🇸" }, + { ":south_sudan:", "🇸🇸" }, + { ":space_invader:", "👾" }, + { ":spades:", "♠" }, + { ":spaghetti:", "🍝" }, + { ":sparkle:", "❇" }, + { ":sparkler:", "🎇" }, + { ":sparkles:", "✨" }, + { ":sparkling_heart:", "💖" }, + { ":speak_no_evil:", "🙊" }, + { ":speaker:", "🔈" }, + { ":speaking_head:", "🗣" }, + { ":speech_balloon:", "💬" }, + { ":speedboat:", "🚤" }, + { ":spider:", "🕷" }, + { ":spider_web:", "🕸" }, + { ":spiral_calendar:", "🗓" }, + { ":spiral_notepad:", "🗒" }, + { ":spoon:", "🥄" }, + { ":squid:", "🦑" }, + { ":sri_lanka:", "🇱🇰" }, + { ":st_barthelemy:", "🇧🇱" }, + { ":st_helena:", "🇸🇭" }, + { ":st_kitts_nevis:", "🇰🇳" }, + { ":st_lucia:", "🇱🇨" }, + { ":st_pierre_miquelon:", "🇵🇲" }, + { ":st_vincent_grenadines:", "🇻🇨" }, + { ":stadium:", "🏟" }, + { ":star:", "⭐" }, + { ":star2:", "🌟" }, + { ":star_and_crescent:", "☪" }, + { ":star_of_david:", "✡" }, + { ":stars:", "🌠" }, + { ":station:", "🚉" }, + { ":statue_of_liberty:", "🗽" }, + { ":steam_locomotive:", "🚂" }, + { ":stew:", "🍲" }, + { ":stop_button:", "⏹" }, + { ":stop_sign:", "🛑" }, + { ":stopwatch:", "⏱" }, + { ":straight_ruler:", "📏" }, + { ":strawberry:", "🍓" }, + { ":stuck_out_tongue:", "😛" }, + { ":stuck_out_tongue_closed_eyes:", "😝" }, + { ":stuck_out_tongue_winking_eye:", "😜" }, + { ":studio_microphone:", "🎙" }, + { ":stuffed_flatbread:", "🥙" }, + { ":sudan:", "🇸🇩" }, + { ":sun_behind_large_cloud:", "🌥" }, + { ":sun_behind_rain_cloud:", "🌦" }, + { ":sun_behind_small_cloud:", "🌤" }, + { ":sun_with_face:", "🌞" }, + { ":sunflower:", "🌻" }, + { ":sunglasses:", "😎" }, + { ":sunny:", "☀" }, + { ":sunrise:", "🌅" }, + { ":sunrise_over_mountains:", "🌄" }, + { ":surfer:", "🏄" }, + { ":surfing_man:", "🏄" }, + { ":surfing_woman:", "🏄♀" }, + { ":suriname:", "🇸🇷" }, + { ":sushi:", "🍣" }, + { ":suspension_railway:", "🚟" }, + { ":swaziland:", "🇸🇿" }, + { ":sweat:", "😓" }, + { ":sweat_drops:", "💦" }, + { ":sweat_smile:", "😅" }, + { ":sweden:", "🇸🇪" }, + { ":sweet_potato:", "🍠" }, + { ":swimmer:", "🏊" }, + { ":swimming_man:", "🏊" }, + { ":swimming_woman:", "🏊♀" }, + { ":switzerland:", "🇨🇭" }, + { ":symbols:", "🔣" }, + { ":synagogue:", "🕍" }, + { ":syria:", "🇸🇾" }, + { ":syringe:", "💉" }, + { ":taco:", "🌮" }, + { ":tada:", "🎉" }, + { ":taiwan:", "🇹🇼" }, + { ":tajikistan:", "🇹🇯" }, + { ":tanabata_tree:", "🎋" }, + { ":tangerine:", "🍊" }, + { ":tanzania:", "🇹🇿" }, + { ":taurus:", "♉" }, + { ":taxi:", "🚕" }, + { ":tea:", "🍵" }, + { ":telephone:", "☎" }, + { ":telephone_receiver:", "📞" }, + { ":telescope:", "🔭" }, + { ":tennis:", "🎾" }, + { ":tent:", "⛺" }, + { ":thailand:", "🇹🇭" }, + { ":thermometer:", "🌡" }, + { ":thinking:", "🤔" }, + { ":thought_balloon:", "💭" }, + { ":three:", "3⃣" }, + { ":thumbsdown:", "👎" }, + { ":thumbsup:", "👍" }, + { ":ticket:", "🎫" }, + { ":tickets:", "🎟" }, + { ":tiger:", "🐯" }, + { ":tiger2:", "🐅" }, + { ":timer_clock:", "⏲" }, + { ":timor_leste:", "🇹🇱" }, + { ":tipping_hand_man:", "💁♂" }, + { ":tipping_hand_woman:", "💁" }, + { ":tired_face:", "😫" }, + { ":tm:", "™" }, + { ":togo:", "🇹🇬" }, + { ":toilet:", "🚽" }, + { ":tokelau:", "🇹🇰" }, + { ":tokyo_tower:", "🗼" }, + { ":tomato:", "🍅" }, + { ":tonga:", "🇹🇴" }, + { ":tongue:", "👅" }, + { ":top:", "🔝" }, + { ":tophat:", "🎩" }, + { ":tornado:", "🌪" }, + { ":tr:", "🇹🇷" }, + { ":trackball:", "🖲" }, + { ":tractor:", "🚜" }, + { ":traffic_light:", "🚥" }, + { ":train:", "🚋" }, + { ":train2:", "🚆" }, + { ":tram:", "🚊" }, + { ":triangular_flag_on_post:", "🚩" }, + { ":triangular_ruler:", "📐" }, + { ":trident:", "🔱" }, + { ":trinidad_tobago:", "🇹🇹" }, + { ":triumph:", "😤" }, + { ":trolleybus:", "🚎" }, + { ":trophy:", "🏆" }, + { ":tropical_drink:", "🍹" }, + { ":tropical_fish:", "🐠" }, + { ":truck:", "🚚" }, + { ":trumpet:", "🎺" }, + { ":tshirt:", "👕" }, + { ":tulip:", "🌷" }, + { ":tumbler_glass:", "🥃" }, + { ":tunisia:", "🇹🇳" }, + { ":turkey:", "🦃" }, + { ":turkmenistan:", "🇹🇲" }, + { ":turks_caicos_islands:", "🇹🇨" }, + { ":turtle:", "🐢" }, + { ":tuvalu:", "🇹🇻" }, + { ":tv:", "📺" }, + { ":twisted_rightwards_arrows:", "🔀" }, + { ":two:", "2⃣" }, + { ":two_hearts:", "💕" }, + { ":two_men_holding_hands:", "👬" }, + { ":two_women_holding_hands:", "👭" }, + { ":u5272:", "🈹" }, + { ":u5408:", "🈴" }, + { ":u55b6:", "🈺" }, + { ":u6307:", "🈯" }, + { ":u6708:", "🈷" }, + { ":u6709:", "🈶" }, + { ":u6e80:", "🈵" }, + { ":u7121:", "🈚" }, + { ":u7533:", "🈸" }, + { ":u7981:", "🈲" }, + { ":u7a7a:", "🈳" }, + { ":uganda:", "🇺🇬" }, + { ":uk:", "🇬🇧" }, + { ":ukraine:", "🇺🇦" }, + { ":umbrella:", "☔" }, + { ":unamused:", "😒" }, + { ":underage:", "🔞" }, + { ":unicorn:", "🦄" }, + { ":united_arab_emirates:", "🇦🇪" }, + { ":unlock:", "🔓" }, + { ":up:", "🆙" }, + { ":upside_down_face:", "🙃" }, + { ":uruguay:", "🇺🇾" }, + { ":us:", "🇺🇸" }, + { ":us_virgin_islands:", "🇻🇮" }, + { ":uzbekistan:", "🇺🇿" }, + { ":v:", "✌" }, + { ":vanuatu:", "🇻🇺" }, + { ":vatican_city:", "🇻🇦" }, + { ":venezuela:", "🇻🇪" }, + { ":vertical_traffic_light:", "🚦" }, + { ":vhs:", "📼" }, + { ":vibration_mode:", "📳" }, + { ":video_camera:", "📹" }, + { ":video_game:", "🎮" }, + { ":vietnam:", "🇻🇳" }, + { ":violin:", "🎻" }, + { ":virgo:", "♍" }, + { ":volcano:", "🌋" }, + { ":volleyball:", "🏐" }, + { ":vs:", "🆚" }, + { ":vulcan_salute:", "🖖" }, + { ":walking:", "🚶" }, + { ":walking_man:", "🚶" }, + { ":walking_woman:", "🚶♀" }, + { ":wallis_futuna:", "🇼🇫" }, + { ":waning_crescent_moon:", "🌘" }, + { ":waning_gibbous_moon:", "🌖" }, + { ":warning:", "⚠" }, + { ":wastebasket:", "🗑" }, + { ":watch:", "⌚" }, + { ":water_buffalo:", "🐃" }, + { ":watermelon:", "🍉" }, + { ":wave:", "👋" }, + { ":wavy_dash:", "〰" }, + { ":waxing_crescent_moon:", "🌒" }, + { ":waxing_gibbous_moon:", "🌔" }, + { ":wc:", "🚾" }, + { ":weary:", "😩" }, + { ":wedding:", "💒" }, + { ":weight_lifting_man:", "🏋" }, + { ":weight_lifting_woman:", "🏋♀" }, + { ":western_sahara:", "🇪🇭" }, + { ":whale:", "🐳" }, + { ":whale2:", "🐋" }, + { ":wheel_of_dharma:", "☸" }, + { ":wheelchair:", "♿" }, + { ":white_check_mark:", "✅" }, + { ":white_circle:", "⚪" }, + { ":white_flag:", "🏳" }, + { ":white_flower:", "💮" }, + { ":white_large_square:", "⬜" }, + { ":white_medium_small_square:", "◽" }, + { ":white_medium_square:", "◻" }, + { ":white_small_square:", "▫" }, + { ":white_square_button:", "🔳" }, + { ":wilted_flower:", "🥀" }, + { ":wind_chime:", "🎐" }, + { ":wind_face:", "🌬" }, + { ":wine_glass:", "🍷" }, + { ":wink:", "😉" }, + { ":wolf:", "🐺" }, + { ":woman:", "👩" }, + { ":woman_artist:", "👩🎨" }, + { ":woman_astronaut:", "👩🚀" }, + { ":woman_cartwheeling:", "🤸♀" }, + { ":woman_cook:", "👩🍳" }, + { ":woman_facepalming:", "🤦♀" }, + { ":woman_factory_worker:", "👩🏭" }, + { ":woman_farmer:", "👩🌾" }, + { ":woman_firefighter:", "👩🚒" }, + { ":woman_health_worker:", "👩⚕" }, + { ":woman_judge:", "👩⚖" }, + { ":woman_juggling:", "🤹♀" }, + { ":woman_mechanic:", "👩🔧" }, + { ":woman_office_worker:", "👩💼" }, + { ":woman_pilot:", "👩✈" }, + { ":woman_playing_handball:", "🤾♀" }, + { ":woman_playing_water_polo:", "🤽♀" }, + { ":woman_scientist:", "👩🔬" }, + { ":woman_shrugging:", "🤷♀" }, + { ":woman_singer:", "👩🎤" }, + { ":woman_student:", "👩🎓" }, + { ":woman_teacher:", "👩🏫" }, + { ":woman_technologist:", "👩💻" }, + { ":woman_with_turban:", "👳♀" }, + { ":womans_clothes:", "👚" }, + { ":womans_hat:", "👒" }, + { ":women_wrestling:", "🤼♀" }, + { ":womens:", "🚺" }, + { ":world_map:", "🗺" }, + { ":worried:", "😟" }, + { ":wrench:", "🔧" }, + { ":writing_hand:", "✍" }, + { ":x:", "❌" }, + { ":yellow_heart:", "💛" }, + { ":yemen:", "🇾🇪" }, + { ":yen:", "💴" }, + { ":yin_yang:", "☯" }, + { ":yum:", "😋" }, + { ":zambia:", "🇿🇲" }, + { ":zap:", "⚡" }, + { ":zero:", "0⃣" }, + { ":zimbabwe:", "🇿🇼" }, + { ":zipper_mouth_face:", "🤐" }, + { ":zzz:", "💤" } +}; + +static const int g_numEmojiEntities = (int)(sizeof(g_emojiEntities)/sizeof(*g_emojiEntities)); + +EmojiEntityMapper *EmojiEntityMapper::s_instance = 0; + +EmojiEntityMapper::EmojiEntityMapper() +{ + m_name2symGh = new QDict<int>(1009); + m_name2symGh->setAutoDelete(TRUE); + // 2 loops to be able to give precedence to the unicodeName (CLDR) + for (int i = 0; i < g_numEmojiEntities; i++) + { + m_name2symGh->insert(g_emojiEntities[i].name, new int(i)); + } +} + +EmojiEntityMapper::~EmojiEntityMapper() +{ + delete m_name2symGh; +} + +/** Returns the one and only instance of the Emoji entity mapper */ +EmojiEntityMapper *EmojiEntityMapper::instance() +{ + if (s_instance==0) + { + s_instance = new EmojiEntityMapper; + } + return s_instance; +} + +/** Deletes the one and only instance of the Emoji entity mapper */ +void EmojiEntityMapper::deleteInstance() +{ + delete s_instance; + s_instance=0; +} + +/*! + * @brief Returns a code for the requested Emoji entity name + * @param symName Emoji entity name + * @return the code for the requested Emoji entity name, + * in case the requested Emoji item does not exist `-1` is returned. + */ +int EmojiEntityMapper::symbol2index(const QCString &symName) const +{ + int *val = m_name2symGh->find(symName); + return val ? *val : -1; +} + +/*! + * @brief Writes the list of supported emojis to the given file. + */ +void EmojiEntityMapper::writeEmojiFile(QFile &file) +{ + FTextStream t(&file); + for (int i = 0; i < g_numEmojiEntities; i++) + { + t << g_emojiEntities[i].name << endl; + } +} + +/*! @brief Access routine to the unicode sequence for the Emoji entity + * + * @param symb code of the requested Emoji entity returned by symbol2index() + * @return the unicode sequence of the Emoji entity, + */ +const char *EmojiEntityMapper::unicode(int index) const +{ + return index>=0 && index<g_numEmojiEntities ? g_emojiEntities[index].unicode : 0; +} + +/*! @brief Access routine to the name of the Emoji entity + * + * @param symb code of the requested Emoji entity returned by symbol2index() + * @return the name of the Emoji entity in GitHub format (i.e. :smile:) + */ +const char *EmojiEntityMapper::name(int index) const +{ + return index>=0 && index<g_numEmojiEntities ? g_emojiEntities[index].name : 0; +} + + |