diff --git a/Base/.gitignore b/Base/.gitignore index f9be8dfe090..d9468659a2a 100644 --- a/Base/.gitignore +++ b/Base/.gitignore @@ -1 +1,2 @@ !* +home/anon/Documents/emoji.txt diff --git a/Base/home/anon/Documents/emoji.txt b/Base/home/anon/Documents/emoji.txt deleted file mode 100644 index 348a83fcb6e..00000000000 --- a/Base/home/anon/Documents/emoji.txt +++ /dev/null @@ -1,509 +0,0 @@ -Faces & Misc Emoji ------------------- - -☀️ - U+2600 U+FE0F SUN -☁️ - U+2601 U+FE0F CLOUD -☹️ - U+2639 U+FE0F FROWNING FACE -☺️ - U+263A U+FE0F SMILING FACE -✌️ - U+270C U+FE0F VICTORY HAND -✍️ - U+270D U+FE0F WRITING HAND -🅰️ - U+1F170 A BUTTON (BLOOD TYPE) -🅱️ - U+1F171 B BUTTON (BLOOD TYPE) -🅾️ - U+1F17E O BUTTON (BLOOD TYPE) -🅿️ - U+1F17F P BUTTON -🆎 - U+1F18E AB BUTTON (BLOOD TYPE) -🆑 - U+1F191 CL BUTTON -🆔 - U+1F194 ID BUTTON -🆖 - U+1F196 NG BUTTON -🆗 - U+1F197 OK BUTTON -🆘 - U+1F198 SOS BUTTON -🆙 - U+1F199 UP! BUTTON -🆚 - U+1F19A VS BUTTON -🈁 - U+1F201 JAPANESE “HERE” BUTTON -🈂️ - U+1F202 JAPANESE “SERVICE CHARGE” BUTTON -🈳 - U+1F233 JAPANESE “VACANCY” BUTTON -🈴 - U+1F234 JAPANESE “PASSING GRADE” BUTTON -🈶 - U+1F236 JAPANESE “NOT FREE OF CHARGE” BUTTON -🈷️ - U+1F237 JAPANESE “MONTHLY AMOUNT” BUTTON -🈸 - U+1F238 JAPANESE “APPLICATION” BUTTON -🉑 - U+1F251 JAPANESE “ACCEPTABLE” BUTTON -🌈 - U+1F308 RAINBOW -🌋 - U+1F30B VOLCANO -🌍 - U+1F30D GLOBE SHOWING EUROPE-AFRICA -🌎 - U+1F30E GLOBE SHOWING AMERICAS -🌏 - U+1F30F GLOBE SHOWING ASIA-AUSTRALIA -🌑 - U+1F311 NEW MOON -🌒 - U+1F312 WAXING CRESCENT MOON -🌓 - U+1F313 FIRST QUARTER MOON -🌔 - U+1F314 WAXING GIBBOUS MOON -🌕 - U+1F315 FULL MOON -🌖 - U+1F316 WANING GIBBOUS MOON -🌗 - U+1F317 LAST QUARTER MOON -🌘 - U+1F318 WANING CRESCENT MOON -🌙 - U+1F319 CRESCENT MOON -🌚 - U+1F31A NEW MOON FACE -🌛 - U+1F31B FIRST QUARTER MOON FACE -🌜 - U+1F31C LAST QUARTER MOON FACE -🌝 - U+1F31D FULL MOON FACE -🌤️ - U+1F324 U+FE0F SUN BEHIND SMALL CLOUD -🌥️ - U+1F325 U+FE0F SUN BEHIND LARGE CLOUD -🌦️ - U+1F326 U+FE0F SUN BEHIND RAIN CLOUD -🌧️ - U+1F327 U+FE0F CLOUD WITH RAIN -🌨️ - U+1F328 U+FE0F CLOUD WITH SNOW -🌩️ - U+1F329 U+FE0F CLOUD WITH LIGHTNING -🌭 - U+1F32D HOT DOG -🌮 - U+1F32E TACO -🌯 - U+1F32F BURRITO -🌱 - U+1F331 SEEDLING -🌲 - U+1F332 EVERGREEN TREE -🌴 - U+1F334 PALM TREE -🌵 - U+1F335 CACTUS -🌻 - U+1F33B SUNFLOWER -🍄 - U+1F344 MUSHROOM -🍅 - U+1F345 TOMATO -🍆 - U+1F346 EGGPLANT -🍇 - U+1F347 GRAPES -🍈 - U+1F348 MELON -🍉 - U+1F349 WATERMELON -🍊 - U+1F34A TANGERINE -🍋 - U+1F34B LEMON -🍌 - U+1F34C BANANA -🍍 - U+1F34D PINEAPPLE -🍎 - U+1F34E RED APPLE -🍏 - U+1F34E GREEN APPLE -🍐 - U+1F350 PEAR -🍑 - U+1F351 PEACH -🍒 - U+1F352 CHERRIES -🍓 - U+1F353 STRAWBERRY -🍔 - U+1F354 HAMBURGER -🍕 - U+1F355 SLICE OF PIZZA -🍟 - U+1F35F FRENCH FRIES -🍩 - U+1F369 DOUGHNUT -🍪 - U+1F36A COOKIE -🍳 - U+1F373 COOKING -🍷 - U+1F377 WINE GLASS -🍹 - U+1F379 TROPICAL DRINK -🎄 - U+1F384 CHRISTMAS TREE -🎉 - U+1F389 PARTY POPPER -🎨 - U+1F3A8 ARTIST PALETTE -🎹 - U+1F3B9 MUSICAL KEYBOARD -🏔️ - U+1F3D4 SNOW-CAPPED MOUNTAIN -🏜️ - U+1F3DC DESERT -🏝️ - U+1F3DD DESERT ISLAND -🐌 - U+1F40C SNAIL -🐙 - U+1F419 OCTOPUS -🐞 - U+1F41E LADY BEETLE -👀 - U+1F440 EYES -👆 - U+1F446 BACKHAND INDEX POINTING UP -👇 - U+1F447 BACKHAND INDEX POINTING DOWN -👈 - U+1F448 BACKHAND INDEX POINTING LEFT -👉 - U+1F449 BACKHAND INDEX POINTING RIGHT -👋 - U+1F44B WAVING HAND -👌 - U+1F44C OK HAND -👍 - U+1F44D THUMBS UP SIGN -👎 - U+1F44E THUMBS DOWN SIGN -👏 - U+1F44F CLAPPING HANDS -👑 - U+1F451 CROWN -👽 - U+1F47D ALIEN -💀 - U+1F480 SKULL -💌 - U+1F48C LOVE LETTER -💖 - U+1F496 SPARKLING HEART -💡 - U+1F4A1 ELECTRIC LIGHT BULB -💣 - U+1F4A3 BOMB -💦 - U+1F4A6 SWEAT DROPLETS -💯 - U+1F4AF HUNDRED POINTS -💾 - U+1F4BE FLOPPY DISK -📈 - U+1F4C8 CHART INCREASING -📉 - U+1F4C9 CHART DECREASING -📊 - U+1F4CA BAR CHART -📌 - U+1F4CC PUSHPIN -📍 - U+1F4CD ROUND PUSHPIN -📵 - U+1F4F5 NO MOBILE PHONES -📷 - U+1F4F7 CAMERA -📸 - U+1F4F8 CAMERA WITH FLASH -📺 - U+1F4FA TELEVISION -📻 - U+1F4FB RADIO -🔥 - U+1F525 FIRE -🔴 - U+1F534 RED CIRCLE -🔵 - U+1F535 BLUE CIRCLE -🔶 - U+1F536 LARGE ORANGE DIAMOND -🔷 - U+1F537 LARGE BLUE DIAMOND -🔸 - U+1F538 SMALL ORANGE DIAMOND -🔹 - U+1F539 SMALL BLUE DIAMOND -🔺 - U+1F53A UP-POINTING RED TRIANGLE -🔻 - U+1F53B DOWN-POINTING RED TRIANGLE -🕊 - U+1F54A DOVE -🕐 - U+1F550 ONE O’CLOCK -🕑 - U+1F551 TWO O’CLOCK -🕒 - U+1F552 THREE O’CLOCK -🕓 - U+1F553 FOUR O’CLOCK -🕔 - U+1F554 FIVE O’CLOCK -🕕 - U+1F555 SIX O’CLOCK -🕖 - U+1F556 SEVEN O’CLOCK -🕗 - U+1F557 EIGHT O’CLOCK -🕘 - U+1F558 NINE O’CLOCK -🕙 - U+1F559 TEN O’CLOCK -🕚 - U+1F55A ELEVEN O’CLOCK -🕛 - U+1F55B TWELVE O’CLOCK -🕜 - U+1F55C ONE-THIRTY -🕝 - U+1F55D TWO-THIRTY -🕞 - U+1F55E THREE-THIRTY -🕟 - U+1F55F FOUR-THIRTY -🕠 - U+1F560 FIVE-THIRTY -🕡 - U+1F561 SIX-THIRTY -🕢 - U+1F562 SEVEN-THIRTY -🕣 - U+1F563 EIGHT-THIRTY -🕤 - U+1F564 NINE-THIRTY -🕥 - U+1F565 TEN-THIRTY -🕦 - U+1F566 ELEVEN-THIRTY -🕧 - U+1F567 TWELVE-THIRTY -🕯 - U+1F56F CANDLE -🕳️ - U+1F573 HOLE -🕶️ - U+1F576 SUNGLASSES -🖊 - U+1F58A PEN -🖋 - U+1F58B FOUNTAIN PEN -🖌 - U+1F58C PAINTBRUSH -🖍 - U+1F58D CRAYON -🖐️ - U+1F590 HAND WITH FINGERS SPLAYED -🗝 - U+1F5DD OLD KEY -🗞 - U+1F5DE ROLLED-UP NEWSPAPER -🗡 - U+1F5E1 DAGGER -🗽 - U+1F5FD STATUE OF LIBERTY -😀 - U+1F600 GRINNING FACE -😁 - U+1F601 GRINNING FACE WITH SMILING EYES -😂 - U+1F602 FACE WITH TEARS OF JOY -😃 - U+1F603 SMILING FACE WITH OPEN MOUTH -😄 - U+1F604 SMILING FACE WITH OPEN MOUTH AND SMILING EYES -😆 - U+1F606 SMILING FACE WITH OPEN MOUTH AND TIGHTLY-CLOSED EYES -😈 - U+1F608 SMILING FACE WITH HORNS -😊 - U+1F60A SMILING FACE WITH SMILING EYES -😎 - U+1F60E SMILING FACE WITH SUNGLASSES -😬 - U+1F62C GRIMACING FACE -😮‍💨 - U+1F62E U+200D U+1F4A8 FACE EXHALING -😵‍💫 - U+1F635 U+200D U+1F4AB FACE WITH SPIRAL EYES -😶 - U+1F636 FACE WITHOUT MOUTH -😶‍🌫️ - U+1F636 U+200D U+1F32B U+FE0F FACE IN CLOUDS -😸 - U+1F638 GRINNING CAT WITH SMILING EYES -😺 - U+1F63A SMILING CAT FACE -😼 - U+1F63C CAT FACE WITH WRY SMILE -😽 - U+1F63D KISSING CAT FACE WITH CLOSED EYES -😾 - U+1F63E POUTING CAT FACE -😿 - U+1F63F CRYING CAT FACE -😹 - U+1F639 CAT FACE WITH TEARS OF JOY -🙀 - U+1F640 WEARY CAT FACE -🙂 - U+1F642 SLIGHTLY SMILING FACE -🙃 - U+1F643 UPSIDE-DOWN FACE -🚀 - U+1F680 ROCKET -🚥 - U+1F6A5 HORIZONTAL TRAFFIC LIGHT -🚦 - U+1F6A6 VERTICAL TRAFFIC LIGHT -🛖 - U+1F6D6 HUT -🛠️ - U+1F6E0 HAMMER AND WRENCH -🛡 - U+1F6E1 SHIELD -🟠 - U+1F7E0 ORANGE CIRLE -🟡 - U+1F7E1 YELLOW CIRLE -🟢 - U+1F7E2 GREEN CIRLE -🟣 - U+1F7E3 PURPLE CIRLE -🟤 - U+1F7E4 BROWN CIRLE -🟥 - U+1F7E5 RED SQUARE -🟦 - U+1F7E6 BLUE SQUARE -🟧 - U+1F7E7 ORANGE SQUARE -🟨 - U+1F7E8 YELLOW SQUARE -🟩 - U+1F7E9 GREEN SQUARE -🟪 - U+1F7EA PURPLE SQUARE -🟫 - U+1F7EB BROWN SQUARE -🤍 - U+1F90D WHITE HEART -🤎 - U+1F90E BROWN HEART -🤏 - U+1F90F PINCHING HAND -🤔 - U+1F914 THINKING FACE -🤖 - U+1F916 ROBOT -🤗 - U+1F917 SMILING FACE WITH OPEN HANDS -🤙 - U+1F919 CALL ME HAND -🤚 - U+1F91A RAISED BACK OF HAND -🤝 - U+1F91D HANDSHAKE -🤡 - U+1F921 CLOWN FACE -🤣 - U+1F923 ROLLING ON THE FLOOR LAUGHING -🤤 - U+1F924 DROOLING FACE -🤦 - U+1F926 FACE PALM -🤧 - U+1F927 SNEEZING FACE -🤪 - U+1F92A ZANY FACE -🤫 - U+1F92B SHUSHING FACE -🤭 - U+1F92D FACE WITH HAND OVER MOUTH -🥇 - U+1F947 FIRST PLACE MEDAL -🥈 - U+1F948 SECOND PLACE MEDAL -🥑 - U+1F951 AVOCADO -🥓 - U+1F953 BACON -🥕 - U+1F955 CARROT -🥛 - U+1F95B GLASS OF MILK -🥝 - U+1F95D KIWIFRUIT -🥦 - U+1F966 BROCCOLI -🥱 - U+1F971 YAWNING FACE -🥲 - U+1F972 SMILING FACE WITH TEAR -🥳 - U+1F973 PARTYING FACE -🥴 - U+1F974 WOOZY FACE -🥸 - U+1F978 DISGUISED FACE -🥹 - U+1F979 FACE HOLDING BACK TEARS -🥺 - U+1F97A PLEADING FACE -🦁 - U+1F981 LION FACE -🦄 - U+1F984 UNICORN FACE -🧋 - U+1F9CB BUBBLE TEA -🧐 - U+1F9D0 FACE WITH MONOCLE -🪤 - U+1FAA4 MOUSE TRAP -🫠 - U+1FAE0 MELTING FACE -🫡 - U+1FAE1 SALUTING FACE -🫢 - U+1FAE2 FACE WITH OPEN EYES AND HAND OVER MOUTH -🫣 - U+1FAE3 FACE WITH PEEKING EYE -🫤 - U+1FAE4 FACE WITH DIAGONAL MOUTH -🫥 - U+1FAE5 DOTTED LINE FACE -🫧 - U+1FAE7 BUBBLES -🧱 - U+1F9F1 BRICK -🧲 - U+1F9F2 MAGNET -🩱 - U+1FA71 ONE-PIECE SWIMSUIT -🩲 - U+1FA72 BRIEFS -🩳 - U+1FA73 SHORTS -🩸 - U+1FA78 DROP OF BLOOD -🩹 - U+1FA79 ADHESIVE BANDAGE -🪀 - U+1FA80 YO-YO -🪑 - U+1FA91 CHAIR -🪜 - U+1FA9C LADDER -🪢 - U+1FAA2 KNOT -🪵 - U+1FAB5 WOOD -🫑 - U+1FAD1 BELL PEPPER -🫒 - U+1FAD2 OLIVE -🫱 - U+1FAF1 RIGHTWARDS HAND -🫲 - U+1FAF2 LEFTWARDS HAND -🫳 - U+1FAF3 PALM DOWN HAND -🫴 - U+1FAF4 PALM UP HAND -🫶 - U+1FAF6 HEART HANDS -• - U+2022 BULLET -☕ - U+2615 HOT BEVERAGE -♋ - U+264B CANCER -⚓ - U+2693 ANCHOR -⚠ - U+26A0 WARNING SIGN -⚡ - U+26A1 HIGH VOLTAGE SIGN -⛓️ - U+26D3 CHAINS -⛔ - U+26D4 NO ENTRY -⛰️ - U+26F0 MOUNTAIN -⛱️ - U+26F1 UMBRELLA ON GROUND -⛽ - U+26FD FUEL PUMP -✋ - U+270B RAISED HAND -✨ - U+2728 SPARKLES -❤ - U+2764 RED HEART -⬆ - U+2B06 UPWARDS BLACK ARROW -⬇ - U+2B07 DOWNWARDS BLACK ARROW -⭐ - U+2B50 STAR - -ZWJ Sequence Emoji (limited cross-platform support) ---------- - -🐱‍🐶 - U+1F431 U+200D U+1F436 CATDOG FACE - -Yak Emoji (limited cross-platform support) ---------- - -􌴀 - U+10CD00 HAIRYAK -􌴁 - U+10CD01 IMMINENTYAKSHAVE -􌴂 - U+10CD02 SHAVEDYAK -􌴃 - U+10CD03 YAKPLUS -􌴄 - U+10CD04 YAKPING -􌴅 - U+10CD05 YAKMINUS -􌴆 - U+10CD06 YAKTANGLE -􌴇 - U+10CD07 YAKBAIT -􌴈 - U+10CD08 REYAKTED -􌴉 - U+10CD09 SLEEPYAK -􌴊 - U+10CD0A YAKBRAIN -􌴋 - U+10CD0B GOLDYAK -􌴌 - U+10CD0C YAKKING -􌴍 - U+10CD0D YAKMAIL -􌴎 - U+10CD0E YAKMAGNET -􌴏 - U+10CD0F YAKFIRE -􌴐 - U+10CD10 YAKSPLODE -􌴑 - U+10CD11 YAKSHED -􌴒 - U+10CD12 YAKFUSED -􌴓 - U+10CD13 8BITYAK -􌴔 - U+10CD14 SKELEYAK -􌴕 - U+10CD15 NEOYAK -􌴖 - U+10CD16 YAKEA -􌴗 - U+10CD17 YAKID2 -􌴘 - U+10CD18 YAKSLICE -􌴙 - U+10CD19 YAKSTICKER -􌴚 - U+10CD1A YAKKIE -􌴛 - U+10CD1B ANGELYAK -􌴜 - U+10CD1C YAK -􌴝 - U+10CD1D YAKGONE -􌴞 - U+10CD1E YAKMEASURE -􌴟 - U+10CD1F YAKCOWBOY -􌴠 - U+10CD20 YAKSPEED -􌴡 - U+10CD21 YAKMANDO -􌴢 - U+10CD22 NINJYAK -􌴣 - U+10CD23 YOWL -􌵠 - U+10CD60 PARTYAK -􌵡 - U+10CD61 YAKKISS -􌵢 - U+10CD62 THOUSANDYAKSTARE -􌵣 - U+10CD63 YAKBLUSH -􌵤 - U+10CD64 YAKSHRUG -􌵥 - U+10CD65 YAKTHONK -􌵦 - U+10CD66 YAKSAD -􌵧 - U+10CD67 BABYAK -􌵨 - U+10CD68 YAKKETYSAX -􌵩 - U+10CD69 YAKBANE -􌶐 - U+10CD90 YAKSTACK -􌶑 - U+10CD91 YAKCHAIN -􌶒 - U+10CD92 YAKRING -􌶓 - U+10CD93 YAKOVERFLOW -􌶰 - U+10CDB0 XMASYAK -􌶱 - U+10CDB1 YAKTOBERFEST -􌷐 - U+10CDD0 YAKSTEPS -􌷠 - U+10CDE0 YAKRAGE-FRAME-1 -􌷡 - U+10CDE1 YAKRAGE-FRAME-2 -􌷢 - U+10CDE2 YAKRAGE-FRAME-3 -􌷣 - U+10CDE3 YAKRAGE-FRAME-4 -􌷤 - U+10CDE4 YAKRAGE-FRAME-5 -􌷥 - U+10CDE5 YAKRAGE-FRAME-6 - -ZWJ Sequence Flags ------------------- - -🏳️‍🐞 - U+1F3F3 U+FE0F U+200D U+1F41E SerenityOS flag (limited cross-platform support) -🏳️‍🌈 - U+1F3F3 U+FE0F U+200D U+1F308 Rainbow flag -🏳️‍⚧️ - U+1F3F3 U+FE0F U+200D U+26A7 U+FE0F Transgender flag -🏴‍☠️ - U+1F3F4 U+200D U+2620 U+FE0F Pirate flag -🏳️‍ - U+1F3F3 U+FE0F U+200D U+F8FF Klingon flag (limited cross-platform support) -🏳️‍🖖 - U+1F3F3 U+FE0F U+200D U+1F596 Vulcan flag (limited cross-platform support) - -Regional Indicator Symbol Flags -------------------------------- - -🇦🇪 - U+1F1E6 U+1F1EA AE United Arab Emirates -🇦🇲 - U+1F1E6 U+1F1F2 AM Armenia -🇦🇶 - U+1F1E6 U+1F1F6 AQ Antarctica -🇦🇹 - U+1F1E6 U+1F1F9 AT Austria -🇦🇽 - U+1F1E6 U+1F1FD AX Åland Islands -🇧🇮 - U+1F1E7 U+1F1EE BI Burundi -🇧🇻 - U+1F1E7 U+1F1FB BV Bouvet Island -🇨🇬 - U+1F1E8 U+1F1EC CG Congo - Brazzaville -🇨🇭 - U+1F1E8 U+1F1ED CH Switzerland -🇨🇮 - U+1F1E8 U+1F1EE CI Côte d'Ivoire -🇨🇵 - U+1F1E8 U+1F1F5 CP Clipperton Island -🇨🇷 - U+1F1E8 U+1F1F7 CR Costa Rica -🇨🇺 - U+1F1E8 U+1F1FA CU Cuba -🇩🇪 - U+1F1E9 U+1F1EA DE Germany -🇩🇯 - U+1F1E9 U+1F1EF DJ DJIBOUTI -🇩🇰 - U+1F1E9 U+1F1F0 DK Denmark -🇩🇴 - U+1F1E9 U+1F1F4 DO Dominican Republic -🇪🇦 - U+1F1EA U+1F1E6 EA Ceuta & Melilla -🇪🇭 - U+1F1EA U+1F1ED EH Western Sahara -🇪🇺 - U+1F1EA U+1F1FA EU European Union -🇫🇮 - U+1F1EB U+1F1EE FI Finland -🇫🇴 - U+1F1EB U+1F1F4 FO Faroe Islands -🇫🇷 - U+1F1EB U+1F1F7 FR France -🇬🇧 - U+1F1EC U+1F1E7 GB United Kingdom -🇬🇫 - U+1F1EC U+1F1EB GF French Guiana -🇬🇬 - U+1F1EC U+1F1EC GG Guernsey -🇬🇱 - U+1F1EC U+1F1F1 GL Greenland -🇬🇷 - U+1F1EC U+1F1F7 GR Greece -🇬🇹 - U+1F1EC U+1F1F9 GT Guatemala -🇭🇺 - U+1F1ED U+1F1FA HU Hungary -🇮🇩 - U+1F1EE_U+1F1E9 ID Indonesia -🇮🇱 - U+1F1EE U+1F1F1 IL Israel -🇮🇷 - U+1F1EE U+1F1F7 IR Iran -🇮🇸 - U+1F1EE U+1F1F8 IS Iceland -🇯🇴 - U+1F1EF U+1F1F4 JO Jordan -🇰🇳 - U+1F1F0 U+1F1F3 KN St. Kitts & Nevis -🇱🇦 - U+1F1F1 U+1F1E6 LA Laos -🇱🇧 - U+1F1F1 U+1F1E7 LB Lebanon -🇲🇫 - U+1F1F2_U+1F1EB MF St. Martin -🇲🇰 - U+1F1F2 U+1F1F0 MK North Macedonia -🇳🇫 - U+1F1F3 U+1F1EB NF Norfolk Island -🇳🇱 - U+1F1F3 U+1F1F1 NL Netherlands -🇳🇴 - U+1F1F3 U+1F1F4 NO Norway -🇵🇦 - U+1F1F5 U+1F1E6 PA Panama -🇵🇭 - U+1F1F5 U+1F1ED PH Philippines -🇵🇱 - U+1F1F5 U+1F1F1 PL Poland -🇵🇸 - U+1F1F5 U+1F1F8 PS Palestine -🇵🇼 - U+1F1F5 U+1F1FC PW Palau -🇷🇺 - U+1F1F7 U+1F1FA RU Russia -🇸🇪 - U+1F1F8 U+1F1EA SE Sweden -🇸🇯 - U+1F1F8 U+1F1EF SJ Svalbard & Jan Mayen -🇸🇹 - U+1F1F8 U+1F1F9 ST São Tomé & Príncipe -🇸🇾 - U+1F1F8 U+1F1FE SY Syria -🇹🇷 - U+1F1F9 U+1F1F7 TR Turkey -🇹🇼 - U+1F1F9 U+1F1FC TW Taiwan -🇺🇦 - U+1F1FA U+1F1E6 UA Ukraine -🇺🇲 - U+1F1FA_U+1F1F2 UM U.S. Outlying Islands -🇺🇳 - U+1F1FA U+1F1F3 UN United Nations -🇺🇸 - U+1F1FA U+1F1F8 US United States -🇻🇳 - U+1F1FB U+1F1F3 VN Vietnam - -Emoji Tag Sequence Flags (limited cross-platform support) ------------------------- - -🏴󠁣󠁡󠁱󠁣󠁿 - U+1F3F4 U+E0063 U+E0061 U+E0071 U+E0063 U+E007F CA-QC Quebec -🏴󠁤󠁥󠁢󠁢󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0062 U+E007F DE-BB Brandenburg -🏴󠁤󠁥󠁢󠁥󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0065 U+E007F DE-BE Berlin -🏴󠁤󠁥󠁢󠁷󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0077 U+E007F DE-BW Baden-Württemberg -🏴󠁤󠁥󠁢󠁹󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0062 U+E0079 U+E007F DE-BY Bavaria -🏴󠁤󠁥󠁨󠁢󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0062 U+E007F DE-HB Bremen -🏴󠁤󠁥󠁨󠁥󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0065 U+E007F DE-HE Hesse -🏴󠁤󠁥󠁨󠁨󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0068 U+E0068 U+E007F DE-HH Hamburg -🏴󠁤󠁥󠁭󠁶󠁿 - U+1F3F4 U+E0064 U+E0065 U+E006D U+E0076 U+E007F DE-MV Mecklenburg-Vorpommern -🏴󠁤󠁥󠁮󠁩󠁿 - U+1F3F4 U+E0064 U+E0065 U+E006E U+E0069 U+E007F DE-NI Lower Saxony -🏴󠁤󠁥󠁮󠁷󠁿 - U+1F3F4 U+E0064 U+E0065 U+E006E U+E0077 U+E007F DE-NW North Rhine-Westphalia -🏴󠁤󠁥󠁲󠁰󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0072 U+E0070 U+E007F DE-RP Rhineland-Palatinate -🏴󠁤󠁥󠁳󠁨󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E0068 U+E007F DE-SH Schleswig-Holstein -🏴󠁤󠁥󠁳󠁬󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E006C U+E007F DE-SL Saarland -🏴󠁤󠁥󠁳󠁮󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E006E U+E007F DE-SN Saxony -🏴󠁤󠁥󠁳󠁴󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0073 U+E0074 U+E007F DE-ST Saxony-Anhalt -🏴󠁤󠁥󠁴󠁨󠁿 - U+1F3F4 U+E0064 U+E0065 U+E0074 U+E0068 U+E007F DE-TH Thuringia -🏴󠁥󠁳󠁣󠁴󠁿 - U+1F3F4 U+E0065 U+E0073 U+E0063 U+E0074 U+E007F ES-CT Catalonia -🏴󠁥󠁳󠁰󠁶󠁿 - U+1F3F4 U+E0065 U+E0073 U+E0070 U+E0076 U+E007F ES-PV Basque Country -🏴󠁦󠁩󠀰󠀳󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0033 U+E007F FI-03 South Ostrobothnia -🏴󠁦󠁩󠀰󠀴󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0034 U+E007F FI-04 South Savonia -🏴󠁦󠁩󠀰󠀵󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0035 U+E007F FI-05 Kainuu -🏴󠁦󠁩󠀰󠀶󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0036 U+E007F FI-06 Kanta-Häme (Tavastia Proper) -🏴󠁦󠁩󠀰󠀷󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0037 U+E007F FI-07 Central Ostrobothnia -🏴󠁦󠁩󠀰󠀸󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0030 U+E0038 U+E007F FI-08 Central Finland -🏴󠁦󠁩󠀱󠀳󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0033 U+E007F FI-13 North Karelia -🏴󠁦󠁩󠀱󠀵󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0035 U+E007F FI-15 Northern Savonia -🏴󠁦󠁩󠀱󠀶󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0036 U+E007F FI-16 Päijänne Tavastia -🏴󠁦󠁩󠀱󠀷󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0037 U+E007F FI-17 Satakunta -🏴󠁦󠁩󠀱󠀸󠁿 - U+1F3F4 U+E0066 U+E0069 U+E0031 U+E0038 U+E007F FI-18 Uusimaa -🏴󠁩󠁥󠁬󠁿 - U+1F3F4 U+E0069 U+E0065 U+E006C U+E007F IE-L Leinster -🏴󠁩󠁥󠁭󠁿 - U+1F3F4 U+E0069 U+E0065 U+E006D U+E007F IE-M Munster -🏴󠁩󠁥󠁵󠁿 - U+1F3F4 U+E0069 U+E0065 U+E0075 U+E007F IE-U Ulster -🏴󠁳󠁥󠁭󠁿 - U+1F3F4 U+E0073 U+E0065 U+E006D U+E007F SE-M Skåne -🏴󠁳󠁫󠁢󠁣󠁿 - U+1F3F4 U+E0073 U+E006B U+E0062 U+E0063 U+E007F SK-BC Banská Bystrica -🏴󠁳󠁫󠁢󠁬󠁿 - U+1F3F4 U+E0073 U+E006B U+E0062 U+E006C U+E007F SK-BL Bratislava -🏴󠁳󠁫󠁫󠁩󠁿 - U+1F3F4 U+E0073 U+E006B U+E006B U+E0069 U+E007F SK-KI Košice -🏴󠁳󠁫󠁮󠁩󠁿 - U+1F3F4 U+E0073 U+E006B U+E006E U+E0069 U+E007F SK-NI Nitra -🏴󠁳󠁫󠁰󠁶󠁿 - U+1F3F4 U+E0073 U+E006B U+E0070 U+E0076 U+E007F SK-PV Prešov -🏴󠁳󠁫󠁴󠁡󠁿 - U+1F3F4 U+E0073 U+E006B U+E0074 U+E0061 U+E007F SK-TA Trnava -🏴󠁳󠁫󠁴󠁣󠁿 - U+1F3F4 U+E0073 U+E006B U+E0074 U+E0063 U+E007F SK-TC Trenčín -🏴󠁳󠁫󠁺󠁩󠁿 - U+1F3F4 U+E0073 U+E006B U+E007A U+E0069 U+E007F SK-ZI Žilina -🏴󠁵󠁡󠀰󠀵󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0035 U+E007F UA-05 Vinnychchyna -🏴󠁵󠁡󠀰󠀷󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0037 U+E007F UA-07 Volyn -🏴󠁵󠁡󠀰󠀹󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0030 U+E0039 U+E007F UA-09 Luhanshchyna -🏴󠁵󠁡󠀱󠀲󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0032 U+E007F UA-12 Dnipropetrovshchyna -🏴󠁵󠁡󠀱󠀴󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0034 U+E007F UA-14 Donechchyna -🏴󠁵󠁡󠀱󠀸󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0031 U+E0038 U+E007F UA-18 Zhytomyrshchyna -🏴󠁵󠁡󠀲󠀱󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0031 U+E007F UA-21 Zakarpattia -🏴󠁵󠁡󠀲󠀳󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0033 U+E007F UA-23 Zaporizhzhya -🏴󠁵󠁡󠀲󠀶󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0032 U+E0036 U+E007F UA-26 Prykarpattia -🏴󠁵󠁡󠀳󠀰󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0030 U+E007F UA-30 Kiev -🏴󠁵󠁡󠀳󠀲󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0032 U+E007F UA-32 Kyivshchyna -🏴󠁵󠁡󠀳󠀵󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0033 U+E0035 U+E007F UA-35 Kirovohradschyna -🏴󠁵󠁡󠀴󠀰󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0030 U+E007F UA-40 Sevastopol -🏴󠁵󠁡󠀴󠀳󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0033 U+E007F UA-43 Crimea -🏴󠁵󠁡󠀴󠀶󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0036 U+E007F UA-46 Lvivshchyna -🏴󠁵󠁡󠀴󠀸󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0034 U+E0038 U+E007F UA-48 Mykolayivschyna -🏴󠁵󠁡󠀵󠀱󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0031 U+E007F UA-51 Odeshchyna -🏴󠁵󠁡󠀵󠀳󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0033 U+E007F UA-53 Poltavshchyna -🏴󠁵󠁡󠀵󠀶󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0036 U+E007F UA-56 Rivnenshchyna -🏴󠁵󠁡󠀵󠀹󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0035 U+E0039 U+E007F UA-59 Sumshchyna -🏴󠁵󠁡󠀶󠀱󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0031 U+E007F UA-61 Ternopilshchyna -🏴󠁵󠁡󠀶󠀳󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0033 U+E007F UA-63 Kharkivshchyna -🏴󠁵󠁡󠀶󠀵󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0035 U+E007F UA-65 Khersonshchyna -🏴󠁵󠁡󠀶󠀸󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0036 U+E0038 U+E007F UA-68 Khmelnychchyna -🏴󠁵󠁡󠀷󠀱󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0031 U+E007F UA-71 Cherkashchyna -🏴󠁵󠁡󠀷󠀴󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0034 U+E007F UA-74 Chernihivshchyna -🏴󠁵󠁡󠀷󠀷󠁿 - U+1F3F4 U+E0075 U+E0061 U+E0037 U+E0037 U+E007F UA-77 Chernivtsi Oblast - diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f80c58178a..101d4465faf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -206,6 +206,7 @@ option(BUILD_EVERYTHING "Build all optional components" ON) include(utils) include(wasm_spec_tests) +include(emoji_txt) serenity_component( Tests diff --git a/Meta/CMake/emoji_txt.cmake b/Meta/CMake/emoji_txt.cmake new file mode 100644 index 00000000000..387be723399 --- /dev/null +++ b/Meta/CMake/emoji_txt.cmake @@ -0,0 +1,23 @@ +option(ENABLE_EMOJI_TXT_GENERATION "Enable download of emoji-test.txt and generation of emoji.txt at build time" ON) + +set(EMOJI_TEST_TXT_PATH ${CMAKE_BINARY_DIR}/emoji-test.txt) +set(EMOJI_TEST_TXT_URL https://unicode.org/Public/emoji/14.0/emoji-test.txt) + +if(ENABLE_EMOJI_TXT_GENERATION) + if(NOT EXISTS ${EMOJI_TEST_TXT_PATH}) + file(DOWNLOAD ${EMOJI_TEST_TXT_URL} ${EMOJI_TEST_TXT_PATH}) + endif() + set(EMOJI_RES_PATH "${SerenityOS_SOURCE_DIR}/Base/res/emoji") + set(EMOJI_TXT_INSTALL_PATH "${SerenityOS_SOURCE_DIR}/Base/home/anon/Documents/emoji.txt") + add_custom_command( + OUTPUT ${EMOJI_TXT_INSTALL_PATH} + COMMAND ${SerenityOS_SOURCE_DIR}/Meta/generate-emoji-txt.sh "${EMOJI_TEST_TXT_PATH}" "${EMOJI_RES_PATH}" "${EMOJI_TXT_INSTALL_PATH}" + # This will make this command only run when the modified time of the directory changes, + # which only happens if files within it are added or deleted, but not when a file is modified. + # This is fine for this use-case, because the contents of a file changing should not affect + # the generated emoji.txt file. + MAIN_DEPENDENCY ${EMOJI_RES_PATH} + USES_TERMINAL + ) + add_custom_target(generate_emoji_txt ALL DEPENDS ${EMOJI_TXT_INSTALL_PATH}) +endif() diff --git a/Meta/generate-emoji-txt.sh b/Meta/generate-emoji-txt.sh new file mode 100755 index 00000000000..9b247025e5a --- /dev/null +++ b/Meta/generate-emoji-txt.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +set -e + +if [ $# -ne 3 ]; then + echo "Usage: $0 " + exit 1 +fi + +INPUT_FILE="$1" +EMOJI_DIR="$2" +OUTPUT_PATH="$3" + +# empty the generated file first +:>| "$OUTPUT_PATH" + +first_heading=true +while IFS= read -r line +do + if [[ $line == \#\ subgroup:\ * || $line == \#\ group:\ * ]]; then + if [ $first_heading = false ]; then + echo "" >> "$OUTPUT_PATH" + fi + echo "$line" >> "$OUTPUT_PATH" + first_heading=false + elif [[ ${#line} -ne 0 && $line != \#* ]]; then + codepoints_string=${line%%;*} + IFS=" " read -r -a codepoints <<< "$codepoints_string" + for i in "${!codepoints[@]}"; do + # strip leading zeros + codepoints[$i]="${codepoints[$i]#"${codepoints[$i]%%[!0]*}"}" + # add U+ prefix + codepoints[$i]="U+${codepoints[$i]}" + done + + # when doing a lookup we want to remove all U+FE0F (emoji presentation specifier) codepoints + lookup_filename_parts=() + for codepoint in "${codepoints[@]}"; do + if [[ $codepoint != "U+FE0F" ]]; then + lookup_filename_parts+=("$codepoint") + fi + done + + IFS=_ + lookup_filename="${lookup_filename_parts[*]}.png" + + if [ -f "$EMOJI_DIR/$lookup_filename" ]; then + emoji_and_name=${line#*# } + emoji=${emoji_and_name%% E*} + name_with_version=${emoji_and_name#* } + name=${name_with_version#* } + qualification=${line#*; } + qualification=${qualification%%#*} + # remove trailing whitespace characters + qualification="${qualification%"${qualification##*[![:space:]]}"}" + + IFS=" " + echo "$emoji - ${codepoints[*]} ${name^^} ($qualification)" >> "$OUTPUT_PATH" + fi + fi +done < "$INPUT_FILE"