diff --git a/Cargo.lock b/Cargo.lock index 8e11e38d..323f4273 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -795,6 +795,7 @@ dependencies = [ "image", "serde", "syntect", + "unicode_names2", ] [[package]] @@ -2418,6 +2419,12 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +[[package]] +name = "unicode_names2" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87d6678d7916394abad0d4b19df4d3802e1fd84abd7d701f39b75ee71b9e8cf1" + [[package]] name = "untrusted" version = "0.7.1" diff --git a/egui_demo_lib/Cargo.toml b/egui_demo_lib/Cargo.toml index 7ae13163..4753c0f0 100644 --- a/egui_demo_lib/Cargo.toml +++ b/egui_demo_lib/Cargo.toml @@ -25,6 +25,7 @@ all-features = true [dependencies] egui = { version = "0.12.0", path = "../egui", default-features = false } epi = { version = "0.12.0", path = "../epi" } +unicode_names2 = { version = "0.4.0", default-features = false } # feature "http": image = { version = "0.23", default-features = false, features = ["jpeg", "png"], optional = true } diff --git a/egui_demo_lib/src/apps/demo/font_book.rs b/egui_demo_lib/src/apps/demo/font_book.rs index b4b47f86..2572296b 100644 --- a/egui_demo_lib/src/apps/demo/font_book.rs +++ b/egui_demo_lib/src/apps/demo/font_book.rs @@ -1,40 +1,17 @@ +use std::collections::BTreeMap; + pub struct FontBook { - standard: bool, - emojis: bool, filter: String, text_style: egui::TextStyle, + named_chars: BTreeMap>, } impl Default for FontBook { fn default() -> Self { Self { - standard: false, - emojis: true, filter: Default::default(), text_style: egui::TextStyle::Button, - } - } -} - -impl FontBook { - fn characters_ui(&self, ui: &mut egui::Ui, characters: &[(u32, char, &str)]) { - use egui::{Button, Label}; - for &(_, chr, name) in characters { - if self.filter.is_empty() - || name.contains(&self.filter) - || self.filter == chr.to_string() - { - let button = Button::new(chr).text_style(self.text_style).frame(false); - - let tooltip_ui = |ui: &mut egui::Ui| { - ui.add(Label::new(chr).text_style(self.text_style)); - ui.label(format!("{}\nU+{:X}\n\nClick to copy", name, chr as u32)); - }; - - if ui.add(button).on_hover_ui(tooltip_ui).clicked() { - ui.output().copied_text = chr.to_string(); - } - } + named_chars: Default::default(), } } } @@ -54,13 +31,12 @@ impl super::Demo for FontBook { impl super::View for FontBook { fn ui(&mut self, ui: &mut egui::Ui) { - use super::font_contents_emoji::FULL_EMOJI_LIST; - use super::font_contents_ubuntu::UBUNTU_FONT_CHARACTERS; - ui.label(format!( - "The default egui fonts supports {} standard characters and {} emojis.", - UBUNTU_FONT_CHARACTERS.len(), - FULL_EMOJI_LIST.len(), + "The selected font supports {} characters.", + self.named_chars + .get(&self.text_style) + .map(|map| map.len()) + .unwrap_or_default() )); ui.horizontal_wrapped(|ui| { @@ -86,12 +62,6 @@ impl super::View for FontBook { } }); - ui.horizontal(|ui| { - ui.label("Show:"); - ui.checkbox(&mut self.standard, "Standard"); - ui.checkbox(&mut self.emojis, "Emojis"); - }); - ui.horizontal(|ui| { ui.label("Filter:"); ui.text_edit_singleline(&mut self.filter); @@ -101,19 +71,180 @@ impl super::View for FontBook { } }); + let text_style = self.text_style; + let filter = &self.filter; + let named_chars = self.named_chars.entry(text_style).or_insert_with(|| { + ui.fonts()[text_style] + .characters() + .iter() + .filter(|chr| !chr.is_whitespace() && !chr.is_ascii_control()) + .map(|&chr| (chr, char_name(chr))) + .collect() + }); + ui.separator(); egui::ScrollArea::auto_sized().show(ui, |ui| { ui.horizontal_wrapped(|ui| { ui.spacing_mut().item_spacing = egui::Vec2::splat(2.0); - if self.standard { - self.characters_ui(ui, UBUNTU_FONT_CHARACTERS); - } - if self.emojis { - self.characters_ui(ui, FULL_EMOJI_LIST); + for (&chr, name) in named_chars { + if filter.is_empty() || name.contains(filter) || *filter == chr.to_string() { + let button = egui::Button::new(chr).text_style(text_style).frame(false); + + let tooltip_ui = |ui: &mut egui::Ui| { + ui.add(egui::Label::new(chr).text_style(text_style)); + ui.label(format!("{}\nU+{:X}\n\nClick to copy", name, chr as u32)); + }; + + if ui.add(button).on_hover_ui(tooltip_ui).clicked() { + ui.output().copied_text = chr.to_string(); + } + } } }); }); } } + +fn char_name(chr: char) -> String { + unicode_names2::name(chr) + .map(|name| name.to_string().to_lowercase()) + .unwrap_or_else(|| { + match chr { + // Special private-use-area extensions found in `emoji-icon-font.ttf`: + // Private use area extensions: + '\u{FE4E5}' => "flag japan".to_owned(), + '\u{FE4E6}' => "flag usa".to_owned(), + '\u{FE4E7}' => "flag".to_owned(), + '\u{FE4E8}' => "flag".to_owned(), + '\u{FE4E9}' => "flag".to_owned(), + '\u{FE4EA}' => "flag great britain".to_owned(), + '\u{FE4EB}' => "flag".to_owned(), + '\u{FE4EC}' => "flag".to_owned(), + '\u{FE4ED}' => "flag".to_owned(), + '\u{FE4EE}' => "flag south korea".to_owned(), + '\u{FE82C}' => "number sign in square".to_owned(), + '\u{FE82E}' => "digit one in square".to_owned(), + '\u{FE82F}' => "digit two in square".to_owned(), + '\u{FE830}' => "digit three in square".to_owned(), + '\u{FE831}' => "digit four in square".to_owned(), + '\u{FE832}' => "digit five in square".to_owned(), + '\u{FE833}' => "digit six in square".to_owned(), + '\u{FE834}' => "digit seven in square".to_owned(), + '\u{FE835}' => "digit eight in square".to_owned(), + '\u{FE836}' => "digit nine in square".to_owned(), + '\u{FE837}' => "digit zero in square".to_owned(), + + // Special private-use-area extensions found in `emoji-icon-font.ttf`: + // Web services / operating systems / browsers + '\u{E600}' => "web-dribbble".to_owned(), + '\u{E601}' => "web-stackoverflow".to_owned(), + '\u{E602}' => "web-vimeo".to_owned(), + '\u{E603}' => "web-twitter".to_owned(), + '\u{E604}' => "web-facebook".to_owned(), + '\u{E605}' => "web-googleplus".to_owned(), + '\u{E606}' => "web-pinterest".to_owned(), + '\u{E607}' => "web-tumblr".to_owned(), + '\u{E608}' => "web-linkedin".to_owned(), + '\u{E60A}' => "web-stumbleupon".to_owned(), + '\u{E60B}' => "web-lastfm".to_owned(), + '\u{E60C}' => "web-rdio".to_owned(), + '\u{E60D}' => "web-spotify".to_owned(), + '\u{E60E}' => "web-qq".to_owned(), + '\u{E60F}' => "web-instagram".to_owned(), + '\u{E610}' => "web-dropbox".to_owned(), + '\u{E611}' => "web-evernote".to_owned(), + '\u{E612}' => "web-flattr".to_owned(), + '\u{E613}' => "web-skype".to_owned(), + '\u{E614}' => "web-renren".to_owned(), + '\u{E615}' => "web-sina-weibo".to_owned(), + '\u{E616}' => "web-paypal".to_owned(), + '\u{E617}' => "web-picasa".to_owned(), + '\u{E618}' => "os-android".to_owned(), + '\u{E619}' => "web-mixi".to_owned(), + '\u{E61A}' => "web-behance".to_owned(), + '\u{E61B}' => "web-circles".to_owned(), + '\u{E61C}' => "web-vk".to_owned(), + '\u{E61D}' => "web-smashing".to_owned(), + '\u{E61E}' => "web-forrst".to_owned(), + '\u{E61F}' => "os-windows".to_owned(), + '\u{E620}' => "web-flickr".to_owned(), + '\u{E621}' => "web-picassa".to_owned(), + '\u{E622}' => "web-deviantart".to_owned(), + '\u{E623}' => "web-steam".to_owned(), + '\u{E624}' => "web-github".to_owned(), + '\u{E625}' => "web-git".to_owned(), + '\u{E626}' => "web-blogger".to_owned(), + '\u{E627}' => "web-soundcloud".to_owned(), + '\u{E628}' => "web-reddit".to_owned(), + '\u{E629}' => "web-delicious".to_owned(), + '\u{E62A}' => "browser-chrome".to_owned(), + '\u{E62B}' => "browser-firefox".to_owned(), + '\u{E62C}' => "browser-ie".to_owned(), + '\u{E62D}' => "browser-opera".to_owned(), + '\u{E62E}' => "browser-safari".to_owned(), + '\u{E62F}' => "web-google-drive".to_owned(), + '\u{E630}' => "web-wordpress".to_owned(), + '\u{E631}' => "web-joomla".to_owned(), + '\u{E632}' => "lastfm".to_owned(), + '\u{E633}' => "web-foursquare".to_owned(), + '\u{E634}' => "web-yelp".to_owned(), + '\u{E635}' => "web-drupal".to_owned(), + '\u{E636}' => "youtube".to_owned(), + '\u{F189}' => "vk".to_owned(), + '\u{F1A6}' => "digg".to_owned(), + '\u{F1CA}' => "web-vine".to_owned(), + '\u{F8FF}' => "os-apple".to_owned(), + + // Special private-use-area extensions found in `Ubuntu-Light.ttf` + '\u{F000}' => "uniF000".to_owned(), + '\u{F001}' => "fi".to_owned(), + '\u{F002}' => "fl".to_owned(), + '\u{F506}' => "one seventh".to_owned(), + '\u{F507}' => "two sevenths".to_owned(), + '\u{F508}' => "three sevenths".to_owned(), + '\u{F509}' => "four sevenths".to_owned(), + '\u{F50A}' => "fiv esevenths".to_owned(), + '\u{F50B}' => "six sevenths".to_owned(), + '\u{F50C}' => "one ninth".to_owned(), + '\u{F50D}' => "two ninths".to_owned(), + '\u{F50E}' => "four ninths".to_owned(), + '\u{F50F}' => "five ninths".to_owned(), + '\u{F510}' => "seven ninths".to_owned(), + '\u{F511}' => "eight ninths".to_owned(), + '\u{F800}' => "zero.alt".to_owned(), + '\u{F801}' => "one.alt".to_owned(), + '\u{F802}' => "two.alt".to_owned(), + '\u{F803}' => "three.alt".to_owned(), + '\u{F804}' => "four.alt".to_owned(), + '\u{F805}' => "five.alt".to_owned(), + '\u{F806}' => "six.alt".to_owned(), + '\u{F807}' => "seven.alt".to_owned(), + '\u{F808}' => "eight.alt".to_owned(), + '\u{F809}' => "nine.alt".to_owned(), + '\u{F80A}' => "zero.sups".to_owned(), + '\u{F80B}' => "one.sups".to_owned(), + '\u{F80C}' => "two.sups".to_owned(), + '\u{F80D}' => "three.sups".to_owned(), + '\u{F80E}' => "four.sups".to_owned(), + '\u{F80F}' => "five.sups".to_owned(), + '\u{F810}' => "six.sups".to_owned(), + '\u{F811}' => "seven.sups".to_owned(), + '\u{F812}' => "eight.sups".to_owned(), + '\u{F813}' => "nine.sups".to_owned(), + '\u{F814}' => "zero.sinf".to_owned(), + '\u{F815}' => "one.sinf".to_owned(), + '\u{F816}' => "two.sinf".to_owned(), + '\u{F817}' => "three.sinf".to_owned(), + '\u{F818}' => "four.sinf".to_owned(), + '\u{F819}' => "five.sinf".to_owned(), + '\u{F81A}' => "six.sinf".to_owned(), + '\u{F81B}' => "seven.sinf".to_owned(), + '\u{F81C}' => "eight.sinf".to_owned(), + '\u{F81D}' => "nine.sinf".to_owned(), + + _ => "unknown".to_owned(), + } + }) +} diff --git a/egui_demo_lib/src/apps/demo/font_contents_emoji.rs b/egui_demo_lib/src/apps/demo/font_contents_emoji.rs deleted file mode 100644 index d348ea10..00000000 --- a/egui_demo_lib/src/apps/demo/font_contents_emoji.rs +++ /dev/null @@ -1,2756 +0,0 @@ -/// A list of ~all~ most emojis available in `emoji-icon-font.ttf` -/// -/// Also viewable at -/// Source: -#[allow(unused)] -#[rustfmt::skip] -pub const EMOJI_ICON_FONT_LIST: &[(u32, char, &str)] = &[ - (0xA9, '©', "copyright"), - (0xAE, '®', "registered"), - (0x2030, '‰', "perthousand"), - (0x20AC, '€', "currency-euro"), - (0x211E, '℞', "retrograde"), - (0x2126, 'Ω', "omega"), - (0x2135, 'ℵ', "aleph"), - (0x21BA, '↺', "rotate-ccw"), - (0x21BB, '↻', "rotate-cw"), - (0x221E, '∞', "infinity"), - (0x2297, '⊗', "close"), - (0x229E, '⊞', "square-plus"), - (0x229F, '⊟', "square-minus"), - (0x2316, '⌖', "crosshairs"), - (0x2318, '⌘', "command"), - (0x231A, '⌚', "watch"), - (0x2328, '⌨', "keyboard-wireless"), - (0x2386, '⎆', "enter"), - (0x2388, '⎈', "helm"), - (0x2397, '⎗', "previous-page"), - (0x2398, '⎘', "next-page"), - (0x2399, '⎙', "print-screen"), - (0x23CF, '⏏', "eject"), - (0x23E9, '⏩', "forward"), - (0x23EA, '⏪', "backward"), - (0x23ED, '⏭', "last"), - (0x23EE, '⏮', "first"), - (0x23F0, '⏰', "alarm"), - (0x23F1, '⏱', "stopwatch"), - (0x23F3, '⏳', "hourglass"), - (0x23F4, '⏴', "caret-left"), - (0x23F5, '⏵', "caret-right"), - (0x23F6, '⏶', "caret-up"), - (0x23F7, '⏷', "caret-down"), - (0x23F8, '⏸', "pause"), - (0x23F9, '⏹', "stop"), - (0x23FA, '⏺', "circle"), - (0x2593, '▓', "chessboard"), - (0x25A0, '■', "square"), - (0x25A3, '▣', "checkbox-partial"), - (0x25B6, '▶', "play"), - (0x25CB, '○', "circle-open"), - (0x25CE, '◎', "bullseye"), - (0x25D1, '◑', "contrast"), - (0x25D4, '◔', "pie-chart-reverse"), - (0x25D5, '◕', "pie-chart"), - (0x2600, '☀', "sun"), - (0x2601, '☁', "cloud"), - (0x2602, '☂', "umbrella"), - (0x2603, '☃', "snowman"), - (0x2604, '☄', "comet"), - (0x2605, '★', "star"), - (0x2606, '☆', "star-open"), - (0x2609, '☉', "record"), - (0x260E, '☎', "phone"), - (0x2610, '☐', "checkbox-unchecked"), - (0x2611, '☑', "checkbox-checked"), - (0x2615, '☕', "drink-coffee"), - (0x2618, '☘', "shamrock"), - (0x261C, '☜', "point-left"), - (0x261D, '☝', "point-up"), - (0x261E, '☞', "point-right"), - (0x261F, '☟', "point-down"), - (0x2620, '☠', "skull-and-bones"), - (0x2622, '☢', "radiation"), - (0x2623, '☣', "biohazard"), - (0x2624, '☤', "caduceus"), - (0x2625, '☥', "ankh"), - (0x2626, '☦', "cross-orthodox"), - (0x2627, '☧', "chi-rho"), - (0x2628, '☨', "cross-of-lorraine"), - (0x2629, '☩', "cross-of-jerusalem"), - (0x262A, '☪', "star-and-crescent"), - (0x262B, '☫', "farsi"), - (0x262C, '☬', "khanda"), - (0x262E, '☮', "peace"), - (0x262F, '☯', "tao"), - (0x2630, '☰', "menu"), - (0x2638, '☸', "wheel-of-dharma"), - (0x2639, '☹', "smiley-sad"), - (0x263A, '☺', "smiley"), - (0x2640, '♀', "gender-female"), - (0x2642, '♂', "gender-male"), - (0x2654, '♔', "chess-white-king"), - (0x2655, '♕', "chess-white-queen"), - (0x2656, '♖', "chess-white-rook"), - (0x2657, '♗', "chess-white-bishop"), - (0x2658, '♘', "chess-white-knight"), - (0x2659, '♙', "chess-white-pawn"), - (0x265A, '♚', "chess-black-king"), - (0x265B, '♛', "chess-black-queen"), - (0x265C, '♜', "chess-black-rook"), - (0x265D, '♝', "chess-black-bishop"), - (0x265E, '♞', "chess-black-knight"), - (0x265F, '♟', "chess-black-pawn"), - (0x2660, '♠', "spades"), - (0x2661, '♡', "heart-open"), - (0x2663, '♣', "clubs"), - (0x2665, '♥', "heart"), - (0x2666, '♦', "diamonds"), - (0x2669, '♩', "music-quarter-note"), - (0x266A, '♪', "music-eighth-note"), - (0x266B, '♫', "music-eigth-notes"), - (0x266C, '♬', "music-sixteenth-notes"), - (0x267B, '♻', "recycle"), - (0x267E, '♾', "permanent-paper"), - (0x267F, '♿', "wheelchair"), - (0x2690, '⚐', "flag-open"), - (0x2691, '⚑', "flag"), - (0x2692, '⚒', "hammer-and-pick"), - (0x2693, '⚓', "anchor"), - (0x2694, '⚔', "crossed-swords"), - (0x2695, '⚕', "asclepius"), - (0x2696, '⚖', "scales"), - (0x2698, '⚘', "flower"), - (0x2699, '⚙', "gear"), - (0x269B, '⚛', "atom"), - (0x269C, '⚜', "fleur-de-lis"), - (0x26A0, '⚠', "warning"), - (0x26A1, '⚡', "bolt"), - (0x26A2, '⚢', "gender-female-female"), - (0x26A3, '⚣', "gender-male-male"), - (0x26A4, '⚤', "gender-male-female"), - (0x26A6, '⚦', "gender-transgender"), - (0x26A7, '⚧', "gender-non-binary"), - (0x26B0, '⚰', "coffin"), - (0x26BD, '⚽', "football-soccer"), - (0x26BE, '⚾', "baseball"), - (0x26C3, '⛃', "database"), - (0x26CF, '⛏', "pick"), - (0x26D3, '⛓', "dna"), - (0x26D4, '⛔', "no-entry"), - (0x26E4, '⛤', "pentagram"), - (0x26E7, '⛧', "pentagram-inverted"), - (0x26E8, '⛨', "shield-with-cross"), - (0x26E9, '⛩', "temple"), - (0x26EA, '⛪', "church"), - (0x26ED, '⛭', "gear-no-hub"), - (0x26F1, '⛱', "beach"), - (0x26F2, '⛲', "fountain"), - (0x26F6, '⛶', "four-corners"), - (0x26F7, '⛷', "skier"), - (0x26F8, '⛸', "ice-skater"), - (0x26FA, '⛺', "tent"), - (0x26FC, '⛼', "headstone"), - (0x26FD, '⛽', "fuel-pump"), - (0x2702, '✂', "scissors"), - (0x2706, '✆', "phone-location"), - (0x2707, '✇', "film-reel"), - (0x2708, '✈', "airplane"), - (0x2709, '✉', "envelope"), - (0x270A, '✊', "hand-fist"), - (0x270B, '✋', "hand"), - (0x270F, '✏', "pencil"), - (0x2714, '✔', "check"), - (0x2716, '✖', "multiply"), - (0x271A, '✚', "plus"), - (0x271D, '✝', "latin-cross"), - (0x271F, '✟', "latin-cross-outline"), - (0x2720, '✠', "maltese-cross"), - (0x2721, '✡', "star-of-david"), - (0x272A, '✪', "star-circled"), - (0x2731, '✱', "asterisk-six"), - (0x2734, '✴', "star-eight-points"), - (0x273F, '✿', "black-florette"), - (0x2740, '❀', "florette"), - (0x2744, '❄', "snowflake"), - (0x2765, '❥', "heart-tilted"), - (0x2796, '➖', "minus"), - (0x2797, '➗', "divide"), - (0x27A1, '➡', "arrow-right"), - (0x27F2, '⟲', "rotate-cw-side"), - (0x27F3, '⟳', "rotate-ccw-side"), - (0x2B05, '⬅', "arrow-left"), - (0x2B06, '⬆', "arrow-up"), - (0x2B07, '⬇', "arrow-down"), - (0x2B08, '⬈', "arrow-up-right"), - (0x2B09, '⬉', "arrow-up-left"), - (0x2B0A, '⬊', "arrow-down-right"), - (0x2B0B, '⬋', "arrow-down-left"), - (0x2B0C, '⬌', "arrow-left-right"), - (0x2B0D, '⬍', "arrow-up-down"), - (0x2B1F, '⬟', "pentagon"), - (0x2B23, '⬣', "hexagon"), - (0x2B88, '⮈', "circle-arrow-left"), - (0x2B89, '⮉', "circle-arrow-up"), - (0x2B8A, '⮊', "circle-arrow-right"), - (0x2B8B, '⮋', "circle-arrow-down"), - (0x2BA8, '⮨', "arrow-reply"), - (0x2BA9, '⮩', "arrow-forward"), - (0x2BAA, '⮪', "arrow-undo"), - (0x2BAB, '⮫', "arrow-redo"), - (0xE600, '', "web-dribbble"), - (0xE601, '', "web-stackoverflow"), - (0xE602, '', "web-vimeo"), - (0xE603, '', "web-twitter"), - (0xE604, '', "web-facebook"), - (0xE605, '', "web-googleplus"), - (0xE606, '', "web-pinterest"), - (0xE607, '', "web-tumblr"), - (0xE608, '', "web-linkedin"), - (0xE60A, '', "web-stumbleupon"), - (0xE60B, '', "web-lastfm"), - (0xE60C, '', "web-rdio"), - (0xE60D, '', "web-spotify"), - (0xE60E, '', "web-qq"), - (0xE60F, '', "web-instagram"), - (0xE610, '', "web-dropbox"), - (0xE611, '', "web-evernote"), - (0xE612, '', "web-flattr"), - (0xE613, '', "web-skype"), - (0xE614, '', "web-renren"), - (0xE615, '', "web-sina-weibo"), - (0xE616, '', "web-paypal"), - (0xE617, '', "web-picasa"), - (0xE618, '', "os-android"), - (0xE619, '', "web-mixi"), - (0xE61A, '', "web-behance"), - (0xE61B, '', "web-circles"), - (0xE61C, '', "web-vk"), - (0xE61D, '', "web-smashing"), - (0xE61E, '', "web-forrst"), - (0xE61F, '', "os-windows"), - (0xE620, '', "web-flickr"), - (0xE621, '', "web-picassa"), - (0xE622, '', "web-deviantart"), - (0xE623, '', "web-steam"), - (0xE624, '', "web-github"), - (0xE625, '', "web-git"), - (0xE626, '', "web-blogger"), - (0xE627, '', "web-soundcloud"), - (0xE628, '', "web-reddit"), - (0xE629, '', "web-delicious"), - (0xE62A, '', "browser-chrome"), - (0xE62B, '', "browser-firefox"), - (0xE62C, '', "browser-ie"), - (0xE62D, '', "browser-opera"), - (0xE62E, '', "browser-safari"), - (0xE62F, '', "web-google-drive"), - (0xE630, '', "web-wordpress"), - (0xE631, '', "web-joomla"), - (0xE632, '', "lastfm"), - (0xE633, '', "web-foursquare"), - (0xE634, '', "web-yelp"), - (0xE635, '', "web-drupal"), - (0xE636, '', "youtube"), - (0xF189, '', "vk"), - (0xF1A6, '', "digg"), - (0xF1CA, '', "web-vine"), - (0xF8FF, '', "os-apple"), - (0xFE5C, '﹜', "brace-right"), - (0xFF01, '!', "exclamation-mark"), - (0xFF03, '#', "number"), - (0xFF04, '$', "currency-dollar"), - (0xFF05, '%', "percent"), - (0xFF06, '&', "ampersand"), - (0xFF08, '(', "parenthesis-left"), - (0xFF09, ')', "parenthesis-right"), - (0xFF0A, '*', "asterisk-five"), - (0xFF10, '0', "digit-zero"), - (0xFF11, '1', "digit-one"), - (0xFF12, '2', "digit-two"), - (0xFF13, '3', "digit-three"), - (0xFF14, '4', "digit-four"), - (0xFF15, '5', "digit-five"), - (0xFF16, '6', "digit-six"), - (0xFF17, '7', "digit-seven"), - (0xFF18, '8', "digit-eight"), - (0xFF19, '9', "digit-nine"), - (0xFF1F, '?', "question-mark"), - (0xFF20, '@', "at-symbol"), - (0xFF21, 'A', "letter-A"), - (0xFF22, 'B', "letter-B"), - (0xFF23, 'C', "letter-C"), - (0xFF24, 'D', "letter-D"), - (0xFF25, 'E', "letter-E"), - (0xFF26, 'F', "letter-F"), - (0xFF27, 'G', "letter-G"), - (0xFF28, 'H', "letter-H"), - (0xFF29, 'I', "letter-I"), - (0xFF2A, 'J', "letter-J"), - (0xFF2B, 'K', "letter-K"), - (0xFF2C, 'L', "letter-L"), - (0xFF2D, 'M', "letter-M"), - (0xFF2E, 'N', "letter-N"), - (0xFF2F, 'O', "letter-O"), - (0xFF30, 'P', "letter-P"), - (0xFF31, 'Q', "letter-Q"), - (0xFF32, 'R', "letter-R"), - (0xFF33, 'S', "stack-window"), - (0xFF34, 'T', "letter-S"), - (0xFF35, 'U', "letter-T"), - (0xFF36, 'V', "letter-U"), - (0xFF37, 'W', "letter-V"), - (0xFF38, 'X', "letter-W"), - (0xFF39, 'Y', "letter-X"), - (0xFF3A, 'Z', "letter-Z"), - (0xFF3B, '[', "square-bracket-left"), - (0xFF3C, '\', "at"), - (0xFF3D, ']', "square-bracket-right"), - (0xFF41, 'a', "letter-a"), - (0xFF42, 'b', "letter-b"), - (0xFF43, 'c', "letter-c"), - (0xFF44, 'd', "letter-d"), - (0xFF45, 'e', "letter-e"), - (0xFF46, 'f', "letter-f"), - (0xFF47, 'g', "letter-g"), - (0xFF48, 'h', "letter-h"), - (0xFF49, 'i', "letter-i"), - (0xFF4A, 'j', "letter-j"), - (0xFF4B, 'k', "letter-k"), - (0xFF4C, 'l', "letter-l"), - (0xFF4D, 'm', "letter-m"), - (0xFF4E, 'n', "letter-n"), - (0xFF4F, 'o', "letter-o"), - (0xFF50, 'p', "letter-p"), - (0xFF51, 'q', "letter-q"), - (0xFF52, 'r', "letter-r"), - (0xFF53, 's', "letter-s"), - (0xFF54, 't', "letter-t"), - (0xFF55, 'u', "letter-u"), - (0xFF56, 'v', "letter-v"), - (0xFF57, 'w', "letter-w"), - (0xFF58, 'x', "letter-x"), - (0xFF59, 'y', "letter-y"), - (0xFF5A, 'z', "letter-z"), - (0xFF5B, '{', "brace-left"), - (0xFFE1, '£', "currency-pound"), - (0xFFE5, '¥', "yen"), - (0x1D11E, '𝄞', "g-clef"), - (0x1F0A1, '🂡', "ace-of-spades"), - (0x1F0B1, '🂱', "ace-of-hearts"), - (0x1F0C1, '🃁', "ace-of-diamonds"), - (0x1F0D1, '🃑', "ace-of-clubs"), - (0x1F308, '🌈', "rainbow"), - (0x1F30A, '🌊', "water-wave"), - (0x1F30D, '🌍', "globe2"), - (0x1F310, '🌐', "globe-meridians"), - (0x1F311, '🌑', "moon-new"), - (0x1F312, '🌒', "moon-waxing-crescent"), - (0x1F313, '🌓', "moon-first-quarter"), - (0x1F314, '🌔', "moon-waxing-gibbous"), - (0x1F315, '🌕', "moon-full"), - (0x1F316, '🌖', "moon-waning-gibbous"), - (0x1F317, '🌗', "moon-last-quarter"), - (0x1F318, '🌘', "moon-waning-crescent"), - (0x1F320, '🌠', "star-shooting"), - (0x1F332, '🌲', "tree-pine"), - (0x1F333, '🌳', "tree"), - (0x1F334, '🌴', "tree-palm"), - (0x1F335, '🌵', "cactus"), - (0x1F33F, '🌿', "herb"), - (0x1F340, '🍀', "four-leaf-clover"), - (0x1F341, '🍁', "maple-leaf"), - (0x1F342, '🍂', "leaf"), - (0x1F344, '🍄', "mushroom"), - (0x1F345, '🍅', "tomato3"), - (0x1F347, '🍇', "grapes"), - (0x1F34B, '🍋', "lemon"), - (0x1F34E, '🍎', "apple"), - (0x1F350, '🍐', "pear"), - (0x1F354, '🍔', "food-hamburger"), - (0x1F355, '🍕', "food-pizza"), - (0x1F357, '🍗', "chicken-leg"), - (0x1F359, '🍙', "rice-ball"), - (0x1F35A, '🍚', "food-rice"), - (0x1F35C, '🍜', "steaming-bowl"), - (0x1F35D, '🍝', "food-spaghetti"), - (0x1F35E, '🍞', "bread"), - (0x1F35F, '🍟', "fries"), - (0x1F363, '🍣', "sushi"), - (0x1F368, '🍨', "food-ice-cream"), - (0x1F369, '🍩', "donut"), - (0x1F36A, '🍪', "gingerbread"), - (0x1F36C, '🍬', "candy"), - (0x1F36D, '🍭', "lollipop"), - (0x1F372, '🍲', "pot-food"), - (0x1F373, '🍳', "cooking"), - (0x1F374, '🍴', "fork-knife"), - (0x1F377, '🍷', "drink-wine"), - (0x1F378, '🍸', "drink-cocktail"), - (0x1F379, '🍹', "drink-tropical"), - (0x1F37A, '🍺', "drink-beer"), - (0x1F37C, '🍼', "baby-bottle"), - (0x1F37D, '🍽', "fork-knife-plate"), - (0x1F381, '🎁', "gift"), - (0x1F382, '🎂', "cake"), - (0x1F383, '🎃', "jack-o-lantern"), - (0x1F384, '🎄', "christmas-tree"), - (0x1F385, '🎅', "face-santa-claus"), - (0x1F386, '🎆', "fireworks"), - (0x1F388, '🎈', "balloon"), - (0x1F393, '🎓', "graduation"), - (0x1F396, '🎖', "medal-military"), - (0x1F39E, '🎞', "film"), - (0x1F39F, '🎟', "ticket"), - (0x1F3A1, '🎡', "ferris-wheel"), - (0x1F3A2, '🎢', "rollercoaster"), - (0x1F3A4, '🎤', "microphone"), - (0x1F3A5, '🎥', "camera-movie"), - (0x1F3A6, '🎦', "cinema"), - (0x1F3A7, '🎧', "headphone"), - (0x1F3A8, '🎨', "palette"), - (0x1F3A9, '🎩', "tophat"), - (0x1F3AA, '🎪', "circus"), - (0x1F3AC, '🎬', "movie"), - (0x1F3AD, '🎭', "performing-arts"), - (0x1F3AE, '🎮', "videogame"), - (0x1F3AF, '🎯', "target"), - (0x1F3B0, '🎰', "slot-machine"), - (0x1F3B1, '🎱', "billiards"), - (0x1F3B2, '🎲', "die"), - (0x1F3B3, '🎳', "bowling"), - (0x1F3B7, '🎷', "saxophone"), - (0x1F3B8, '🎸', "guitar"), - (0x1F3B9, '🎹', "piano"), - (0x1F3BA, '🎺', "music-trumpet"), - (0x1F3BB, '🎻', "music-violin"), - (0x1F3BE, '🎾', "tennis"), - (0x1F3C1, '🏁', "flag-checkered"), - (0x1F3C2, '🏂', "snowboarding"), - (0x1F3C3, '🏃', "running"), - (0x1F3C5, '🏅', "medal-sports"), - (0x1F3C6, '🏆', "trophy"), - (0x1F3C8, '🏈', "football-american"), - (0x1F3CA, '🏊', "swimming"), - (0x1F3CB, '🏋', "weighlifting"), - (0x1F3CD, '🏍', "motorbike"), - (0x1F3E0, '🏠', "home"), - (0x1F3E1, '🏡', "volume-mute"), - (0x1F3E2, '🏢', "building"), - (0x1F3E6, '🏦', "bank"), - (0x1F3E8, '🏨', "hotel"), - (0x1F3EA, '🏪', "convenience-store"), - (0x1F3EB, '🏫', "school"), - (0x1F3ED, '🏭', "factory"), - (0x1F3F0, '🏰', "castle"), - (0x1F3F7, '🏷', "label"), - (0x1F404, '🐄', "animal-cow"), - (0x1F407, '🐇', "animal-rabbit"), - (0x1F408, '🐈', "animal-cat"), - (0x1F40C, '🐌', "animal-snail"), - (0x1F40D, '🐍', "snake"), - (0x1F40E, '🐎', "animal-horse"), - (0x1F410, '🐐', "animal-goat"), - (0x1F413, '🐓', "animal-rooster"), - (0x1F414, '🐔', "food-chicken"), - (0x1F416, '🐖', "animal-pig"), - (0x1F41B, '🐛', "animal-bug"), - (0x1F41C, '🐜', "animal-ant"), - (0x1F427, '🐧', "linux"), - (0x1F42A, '🐪', "animal-dromedary-camel"), - (0x1F42B, '🐫', "animal-bactrian-camel"), - (0x1F42C, '🐬', "animal-dolphin"), - (0x1F431, '🐱', "face-kitty"), - (0x1F435, '🐵', "face-monkey"), - (0x1F436, '🐶', "face-chihuahua"), - (0x1F439, '🐹', "face-hamster"), - (0x1F43B, '🐻', "face-bear"), - (0x1F43C, '🐼', "panda"), - (0x1F43E, '🐾', "paw-prints"), - (0x1F441, '👁', "eye"), - (0x1F442, '👂', "ear"), - (0x1F44D, '👍', "thumbs-up"), - (0x1F44E, '👎', "thumbs-down"), - (0x1F451, '👑', "crown"), - (0x1F453, '👓', "eyeglasses"), - (0x1F454, '👔', "outfit-necktie"), - (0x1F455, '👕', "outfit-shirt"), - (0x1F457, '👗', "outfit-dress"), - (0x1F459, '👙', "outfit-bikini"), - (0x1F45B, '👛', "purse"), - (0x1F45C, '👜', "handbag"), - (0x1F460, '👠', "high-heeled-shoes"), - (0x1F461, '👡', "sandals"), - (0x1F463, '👣', "footprints"), - (0x1F464, '👤', "user"), - (0x1F465, '👥', "users"), - (0x1F466, '👦', "face-boy"), - (0x1F467, '👧', "face-girl"), - (0x1F468, '👨', "face-man"), - (0x1F469, '👩', "face-woman"), - (0x1F46A, '👪', "family"), - (0x1F46B, '👫', "man-and-woman"), - (0x1F46C, '👬', "man-and-man"), - (0x1F46D, '👭', "woman-and-woman"), - (0x1F473, '👳', "face-man-with-turban"), - (0x1F474, '👴', "face-old-chinese-man"), - (0x1F476, '👶', "face-baby"), - (0x1F477, '👷', "construction-worker"), - (0x1F478, '👸', "face-princess"), - (0x1F47B, '👻', "ghost"), - (0x1F47D, '👽', "alien"), - (0x1F47F, '👿', "imp"), - (0x1F480, '💀', "skull"), - (0x1F481, '💁', "face-callcenter"), - (0x1F482, '💂', "guard"), - (0x1F483, '💃', "dancing"), - (0x1F484, '💄', "lipstick"), - (0x1F489, '💉', "syringe"), - (0x1F48A, '💊', "pill"), - (0x1F48B, '💋', "kiss"), - (0x1F48D, '💍', "ring"), - (0x1F48E, '💎', "diamond"), - (0x1F490, '💐', "bouquet"), - (0x1F493, '💓', "heart-beating"), - (0x1F494, '💔', "heart-broken"), - (0x1F495, '💕', "hearts"), - (0x1F498, '💘', "heart-with-arrow"), - (0x1F49D, '💝', "heart-ribbon"), - (0x1F4A1, '💡', "lightbulb"), - (0x1F4A3, '💣', "bomb"), - (0x1F4A5, '💥', "explosion"), - (0x1F4A7, '💧', "droplet"), - (0x1F4AC, '💬', "speech-bubble"), - (0x1F4B0, '💰', "money-bag"), - (0x1F4B1, '💱', "currency-exchange"), - (0x1F4B3, '💳', "creditcard"), - (0x1F4B5, '💵', "banknote"), - (0x1F4BA, '💺', "chair"), - (0x1F4BB, '💻', "laptop"), - (0x1F4BC, '💼', "suitcase"), - (0x1F4BE, '💾', "floppy"), - (0x1F4BF, '💿', "disk"), - (0x1F4C5, '📅', "calendar-month"), - (0x1F4C6, '📆', "calendar-day"), - (0x1F4C8, '📈', "chart-up"), - (0x1F4C9, '📉', "chart-down"), - (0x1F4CA, '📊', "chart"), - (0x1F4CB, '📋', "clipboard"), - (0x1F4CC, '📌', "pushpin"), - (0x1F4CE, '📎', "paperclip"), - (0x1F4CF, '📏', "ruler2"), - (0x1F4D0, '📐', "ruler"), - (0x1F4D2, '📒', "addressbook"), - (0x1F4D3, '📓', "notebook"), - (0x1F4D5, '📕', "book"), - (0x1F4D6, '📖', "book-open"), - (0x1F4DA, '📚', "books"), - (0x1F4DE, '📞', "phone-receiver"), - (0x1F4DF, '📟', "pager"), - (0x1F4E1, '📡', "satellite-disk"), - (0x1F4E4, '📤', "outbox"), - (0x1F4E5, '📥', "inbox"), - (0x1F4F0, '📰', "newspaper"), - (0x1F4F1, '📱', "phone-mobile"), - (0x1F4F7, '📷', "photo-camera"), - (0x1F4F8, '📸', "photo-camera-flash"), - (0x1F4F9, '📹', "video-camera"), - (0x1F4FA, '📺', "television"), - (0x1F4FB, '📻', "radio"), - (0x1F4FD, '📽', "projector"), - (0x1F4FE, '📾', "music-player"), - (0x1F500, '🔀', "shuffle"), - (0x1F501, '🔁', "loop"), - (0x1F503, '🔃', "loop-alt"), - (0x1F506, '🔆', "brightness"), - (0x1F508, '🔈', "volume"), - (0x1F509, '🔉', "volume-low"), - (0x1F50A, '🔊', "volume-high"), - (0x1F50B, '🔋', "battery"), - (0x1F50C, '🔌', "electric-cord"), - (0x1F50D, '🔍', "search-left"), - (0x1F50E, '🔎', "search-right"), - (0x1F50F, '🔏', "lock"), - (0x1F511, '🔑', "key"), - (0x1F513, '🔓', "lock-open"), - (0x1F514, '🔔', "bell"), - (0x1F516, '🔖', "bookmark"), - (0x1F517, '🔗', "link"), - (0x1F518, '🔘', "radio-checked"), - (0x1F525, '🔥', "fire"), - (0x1F526, '🔦', "flashlight"), - (0x1F527, '🔧', "wrench"), - (0x1F528, '🔨', "hammer"), - (0x1F529, '🔩', "nut-and-bolt"), - (0x1F52A, '🔪', "knife"), - (0x1F52B, '🔫', "pistol"), - (0x1F52C, '🔬', "microscope"), - (0x1F52D, '🔭', "telescope"), - (0x1F542, '🕂', "cross-pommee"), - (0x1F548, '🕈', "celtic-cross"), - (0x1F549, '🕉', "om"), - (0x1F54A, '🕊', "peace-dove"), - (0x1F553, '🕓', "clock"), - (0x1F56B, '🕫', "bullhorn"), - (0x1F56F, '🕯', "candle"), - (0x1F571, '🕱', "death"), - (0x1F575, '🕵', "spy"), - (0x1F576, '🕶', "sunglasses"), - (0x1F577, '🕷', "spider"), - (0x1F578, '🕸', "spider7-web"), - (0x1F579, '🕹', "joystick"), - (0x1F583, '🖃', "envelope-stamped"), - (0x1F58A, '🖊', "pen"), - (0x1F5A5, '🖥', "pc-desktop"), - (0x1F5A7, '🖧', "computer-network"), - (0x1F5A9, '🖩', "calculator"), - (0x1F5AD, '🖭', "tape"), - (0x1F5AE, '🖮', "keyboard"), - (0x1F5B1, '🖱', "mouse"), - (0x1F5B3, '🖳', "pc-old"), - (0x1F5B4, '🖴', "hard-disk"), - (0x1F5B5, '🖵', "monitor"), - (0x1F5B6, '🖶', "printer"), - (0x1F5B9, '🖹', "file-text"), - (0x1F5BB, '🖻', "file-image"), - (0x1F5BC, '🖼', "picture"), - (0x1F5C0, '🗀', "folder"), - (0x1F5C1, '🗁', "folder-open"), - (0x1F5C4, '🗄', "cabinet"), - (0x1F5CA, '🗊', "notepad"), - (0x1F5CB, '🗋', "file"), - (0x1F5D0, '🗐', "copy"), - (0x1F5D1, '🗑', "garbage-can"), - (0x1F5D5, '🗕', "minimize"), - (0x1F5D6, '🗖', "maximize-window"), - (0x1F5D9, '🗙', "cancel"), - (0x1F5DB, '🗛', "font-size"), - (0x1F5DD, '🗝', "key-alt"), - (0x1F5E0, '🗠', "chart-line"), - (0x1F5E1, '🗡', "dagger"), - (0x1F5FA, '🗺', "world-map"), - (0x1F603, '😃', "smiley-happy"), - (0x1F604, '😄', "smiley-grin"), - (0x1F608, '😈', "smiley-evil"), - (0x1F60E, '😎', "smiley-cool"), - (0x1F680, '🚀', "rocket"), - (0x1F68C, '🚌', "bus"), - (0x1F68D, '🚍', "bus-front"), - (0x1F697, '🚗', "car"), - (0x1F698, '🚘', "car-front"), - (0x1F69A, '🚚', "truck"), - (0x1F6A6, '🚦', "traffic-light"), - (0x1F6AB, '🚫', "forbidden"), - (0x1F6AC, '🚬', "smoking"), - (0x1F6AD, '🚭', "smoking-forbidden"), - (0x1F6B2, '🚲', "bicycle"), - (0x1F6B4, '🚴', "bicyclist"), - (0x1F6B6, '🚶', "pedestrian"), - (0x1F6BB, '🚻', "restroom"), - (0x1F6BC, '🚼', "baby"), - (0x1F6C2, '🛂', "passport-control"), - (0x1F6C5, '🛅', "left-luggage"), - (0x1F6E0, '🛠', "hammer-wrench"), - (0x1F6E1, '🛡', "shield"), -]; - -#[allow(unused)] -#[rustfmt::skip] -pub const NOTO_EMOJI_LIST: &[(u32, char, &str)] = &[ - (0xA9, '©', "copyright sign"), - (0xAE, '®', "registered sign"), - (0x203C, '‼', "double exclamation mark"), - (0x2049, '⁉', "exclamation question mark"), - (0x20E3, '⃣', "combining enclosing keycap"), - (0x2122, '™', "trade mark sign"), - (0x2139, 'ℹ', "information source"), - (0x2194, '↔', "left right arrow"), - (0x2195, '↕', "up down arrow"), - (0x2196, '↖', "north west arrow"), - (0x2197, '↗', "north east arrow"), - (0x2198, '↘', "south east arrow"), - (0x2199, '↙', "south west arrow"), - (0x21A9, '↩', "leftwards arrow with hook"), - (0x21AA, '↪', "rightwards arrow with hook"), - (0x231A, '⌚', "watch"), - (0x231B, '⌛', "hourglass"), - (0x23E9, '⏩', "black right-pointing double triangle"), - (0x23EA, '⏪', "black left-pointing double triangle"), - (0x23EB, '⏫', "black up-pointing double triangle"), - (0x23EC, '⏬', "black down-pointing double triangle"), - (0x23F0, '⏰', "alarm clock"), - (0x23F3, '⏳', "hourglass with flowing sand"), - (0x24C2, 'Ⓜ', "circled latin capital letter m"), - (0x25AA, '▪', "black small square"), - (0x25AB, '▫', "white small square"), - (0x25B6, '▶', "black right-pointing triangle"), - (0x25C0, '◀', "black left-pointing triangle"), - (0x25CA, '◊', "lozenge"), - (0x25FB, '◻', "white medium square"), - (0x25FC, '◼', "black medium square"), - (0x25FD, '◽', "white medium small square"), - (0x25FE, '◾', "black medium small square"), - (0x2600, '☀', "black sun with rays"), - (0x2601, '☁', "cloud"), - (0x260E, '☎', "black telephone"), - (0x2611, '☑', "ballot box with check"), - (0x2614, '☔', "umbrella with rain drops"), - (0x2615, '☕', "hot beverage"), - (0x261D, '☝', "white up pointing index"), - (0x263A, '☺', "white smiling face"), - (0x2648, '♈', "aries"), - (0x2649, '♉', "taurus"), - (0x264A, '♊', "gemini"), - (0x264B, '♋', "cancer"), - (0x264C, '♌', "leo"), - (0x264D, '♍', "virgo"), - (0x264E, '♎', "libra"), - (0x264F, '♏', "scorpius"), - (0x2650, '♐', "sagittarius"), - (0x2651, '♑', "capricorn"), - (0x2652, '♒', "aquarius"), - (0x2653, '♓', "pisces"), - (0x2660, '♠', "black spade suit"), - (0x2663, '♣', "black club suit"), - (0x2665, '♥', "black heart suit"), - (0x2666, '♦', "black diamond suit"), - (0x2668, '♨', "hot springs"), - (0x267B, '♻', "black universal recycling symbol"), - (0x267F, '♿', "wheelchair symbol"), - (0x2693, '⚓', "anchor"), - (0x26A0, '⚠', "warning sign"), - (0x26A1, '⚡', "high voltage sign"), - (0x26AA, '⚪', "medium white circle"), - (0x26AB, '⚫', "medium black circle"), - (0x26BD, '⚽', "soccer ball"), - (0x26BE, '⚾', "baseball"), - (0x26C4, '⛄', "snowman without snow"), - (0x26C5, '⛅', "sun behind cloud"), - (0x26CE, '⛎', "ophiuchus"), - (0x26D4, '⛔', "no entry"), - (0x26EA, '⛪', "church"), - (0x26F2, '⛲', "fountain"), - (0x26F3, '⛳', "flag in hole"), - (0x26F5, '⛵', "sailboat"), - (0x26FA, '⛺', "tent"), - (0x26FD, '⛽', "fuel pump"), - (0x2702, '✂', "black scissors"), - (0x2705, '✅', "white heavy check mark"), - (0x2708, '✈', "airplane"), - (0x2709, '✉', "envelope"), - (0x270A, '✊', "raised fist"), - (0x270B, '✋', "raised hand"), - (0x270C, '✌', "victory hand"), - (0x270F, '✏', "pencil"), - (0x2712, '✒', "black nib"), - (0x2714, '✔', "heavy check mark"), - (0x2716, '✖', "heavy multiplication x"), - (0x2728, '✨', "sparkles"), - (0x2733, '✳', "eight spoked asterisk"), - (0x2734, '✴', "eight pointed black star"), - (0x2744, '❄', "snowflake"), - (0x2747, '❇', "sparkle"), - (0x274C, '❌', "cross mark"), - (0x274E, '❎', "negative squared cross mark"), - (0x2753, '❓', "black question mark ornament"), - (0x2754, '❔', "white question mark ornament"), - (0x2755, '❕', "white exclamation mark ornament"), - (0x2757, '❗', "heavy exclamation mark symbol"), - (0x2764, '❤', "heavy black heart"), - (0x2795, '➕', "heavy plus sign"), - (0x2796, '➖', "heavy minus sign"), - (0x2797, '➗', "heavy division sign"), - (0x27A1, '➡', "black rightwards arrow"), - (0x27B0, '➰', "curly loop"), - (0x27BF, '➿', "double curly loop"), - (0x2934, '⤴', "arrow pointing rightwards then curving upwards"), - (0x2935, '⤵', "arrow pointing rightwards then curving downwards"), - (0x2B05, '⬅', "leftwards black arrow"), - (0x2B06, '⬆', "upwards black arrow"), - (0x2B07, '⬇', "downwards black arrow"), - (0x2B1B, '⬛', "black large square"), - (0x2B1C, '⬜', "white large square"), - (0x2B50, '⭐', "white medium star"), - (0x2B55, '⭕', "heavy large circle"), - (0x3030, '〰', "wavy dash"), - (0x303D, '〽', "part alternation mark"), - (0x3297, '㊗', "circled ideograph congratulation"), - (0x3299, '㊙', "circled ideograph secret"), - (0x1F004, '🀄', "mahjong tile red dragon"), - (0x1F0CF, '🃏', "playing card black joker"), - (0x1F170, '🅰', "negative squared latin capital letter a"), - (0x1F171, '🅱', "negative squared latin capital letter b"), - (0x1F17E, '🅾', "negative squared latin capital letter o"), - (0x1F17F, '🅿', "negative squared latin capital letter p"), - (0x1F18E, '🆎', "negative squared ab"), - (0x1F191, '🆑', "squared cl"), - (0x1F192, '🆒', "squared cool"), - (0x1F193, '🆓', "squared free"), - (0x1F194, '🆔', "squared id"), - (0x1F195, '🆕', "squared new"), - (0x1F196, '🆖', "squared ng"), - (0x1F197, '🆗', "squared ok"), - (0x1F198, '🆘', "squared sos"), - (0x1F199, '🆙', "squared up with exclamation mark"), - (0x1F19A, '🆚', "squared vs"), - (0x1F1E6, '🇦', "regional indicator symbol letter a"), - (0x1F1E7, '🇧', "regional indicator symbol letter b"), - (0x1F1E8, '🇨', "regional indicator symbol letter c"), - (0x1F1E9, '🇩', "regional indicator symbol letter d"), - (0x1F1EA, '🇪', "regional indicator symbol letter e"), - (0x1F1EB, '🇫', "regional indicator symbol letter f"), - (0x1F1EC, '🇬', "regional indicator symbol letter g"), - (0x1F1ED, '🇭', "regional indicator symbol letter h"), - (0x1F1EE, '🇮', "regional indicator symbol letter i"), - (0x1F1EF, '🇯', "regional indicator symbol letter j"), - (0x1F1F0, '🇰', "regional indicator symbol letter k"), - (0x1F1F1, '🇱', "regional indicator symbol letter l"), - (0x1F1F2, '🇲', "regional indicator symbol letter m"), - (0x1F1F3, '🇳', "regional indicator symbol letter n"), - (0x1F1F4, '🇴', "regional indicator symbol letter o"), - (0x1F1F5, '🇵', "regional indicator symbol letter p"), - (0x1F1F6, '🇶', "regional indicator symbol letter q"), - (0x1F1F7, '🇷', "regional indicator symbol letter r"), - (0x1F1F8, '🇸', "regional indicator symbol letter s"), - (0x1F1F9, '🇹', "regional indicator symbol letter t"), - (0x1F1FA, '🇺', "regional indicator symbol letter u"), - (0x1F1FB, '🇻', "regional indicator symbol letter v"), - (0x1F1FC, '🇼', "regional indicator symbol letter w"), - (0x1F1FD, '🇽', "regional indicator symbol letter x"), - (0x1F1FE, '🇾', "regional indicator symbol letter y"), - (0x1F1FF, '🇿', "regional indicator symbol letter z"), - (0x1F201, '🈁', "squared katakana koko"), - (0x1F202, '🈂', "squared katakana sa"), - (0x1F21A, '🈚', "squared cjk unified ideograph-7121"), - (0x1F22F, '🈯', "squared cjk unified ideograph-6307"), - (0x1F232, '🈲', "squared cjk unified ideograph-7981"), - (0x1F233, '🈳', "squared cjk unified ideograph-7a7a"), - (0x1F234, '🈴', "squared cjk unified ideograph-5408"), - (0x1F235, '🈵', "squared cjk unified ideograph-6e80"), - (0x1F236, '🈶', "squared cjk unified ideograph-6709"), - (0x1F237, '🈷', "squared cjk unified ideograph-6708"), - (0x1F238, '🈸', "squared cjk unified ideograph-7533"), - (0x1F239, '🈹', "squared cjk unified ideograph-5272"), - (0x1F23A, '🈺', "squared cjk unified ideograph-55b6"), - (0x1F250, '🉐', "circled ideograph advantage"), - (0x1F251, '🉑', "circled ideograph accept"), - (0x1F300, '🌀', "cyclone"), - (0x1F301, '🌁', "foggy"), - (0x1F302, '🌂', "closed umbrella"), - (0x1F303, '🌃', "night with stars"), - (0x1F304, '🌄', "sunrise over mountains"), - (0x1F305, '🌅', "sunrise"), - (0x1F306, '🌆', "cityscape at dusk"), - (0x1F307, '🌇', "sunset over buildings"), - (0x1F308, '🌈', "rainbow"), - (0x1F309, '🌉', "bridge at night"), - (0x1F30A, '🌊', "water wave"), - (0x1F30B, '🌋', "volcano"), - (0x1F30C, '🌌', "milky way"), - (0x1F30D, '🌍', "earth globe europe-africa"), - (0x1F30E, '🌎', "earth globe americas"), - (0x1F30F, '🌏', "earth globe asia-australia"), - (0x1F310, '🌐', "globe with meridians"), - (0x1F311, '🌑', "new moon symbol"), - (0x1F312, '🌒', "waxing crescent moon symbol"), - (0x1F313, '🌓', "first quarter moon symbol"), - (0x1F314, '🌔', "waxing gibbous moon symbol"), - (0x1F315, '🌕', "full moon symbol"), - (0x1F316, '🌖', "waning gibbous moon symbol"), - (0x1F317, '🌗', "last quarter moon symbol"), - (0x1F318, '🌘', "waning crescent moon symbol"), - (0x1F319, '🌙', "crescent moon"), - (0x1F31A, '🌚', "new moon with face"), - (0x1F31B, '🌛', "first quarter moon with face"), - (0x1F31C, '🌜', "last quarter moon with face"), - (0x1F31D, '🌝', "full moon with face"), - (0x1F31E, '🌞', "sun with face"), - (0x1F31F, '🌟', "glowing star"), - (0x1F320, '🌠', "shooting star"), - (0x1F330, '🌰', "chestnut"), - (0x1F331, '🌱', "seedling"), - (0x1F332, '🌲', "evergreen tree"), - (0x1F333, '🌳', "deciduous tree"), - (0x1F334, '🌴', "palm tree"), - (0x1F335, '🌵', "cactus"), - (0x1F337, '🌷', "tulip"), - (0x1F338, '🌸', "cherry blossom"), - (0x1F339, '🌹', "rose"), - (0x1F33A, '🌺', "hibiscus"), - (0x1F33B, '🌻', "sunflower"), - (0x1F33C, '🌼', "blossom"), - (0x1F33D, '🌽', "ear of maize"), - (0x1F33E, '🌾', "ear of rice"), - (0x1F33F, '🌿', "herb"), - (0x1F340, '🍀', "four leaf clover"), - (0x1F341, '🍁', "maple leaf"), - (0x1F342, '🍂', "fallen leaf"), - (0x1F343, '🍃', "leaf fluttering in wind"), - (0x1F344, '🍄', "mushroom"), - (0x1F345, '🍅', "tomato"), - (0x1F346, '🍆', "aubergine"), - (0x1F347, '🍇', "grapes"), - (0x1F348, '🍈', "melon"), - (0x1F349, '🍉', "watermelon"), - (0x1F34A, '🍊', "tangerine"), - (0x1F34B, '🍋', "lemon"), - (0x1F34C, '🍌', "banana"), - (0x1F34D, '🍍', "pineapple"), - (0x1F34E, '🍎', "red apple"), - (0x1F34F, '🍏', "green apple"), - (0x1F350, '🍐', "pear"), - (0x1F351, '🍑', "peach"), - (0x1F352, '🍒', "cherries"), - (0x1F353, '🍓', "strawberry"), - (0x1F354, '🍔', "hamburger"), - (0x1F355, '🍕', "slice of pizza"), - (0x1F356, '🍖', "meat on bone"), - (0x1F357, '🍗', "poultry leg"), - (0x1F358, '🍘', "rice cracker"), - (0x1F359, '🍙', "rice ball"), - (0x1F35A, '🍚', "cooked rice"), - (0x1F35B, '🍛', "curry and rice"), - (0x1F35C, '🍜', "steaming bowl"), - (0x1F35D, '🍝', "spaghetti"), - (0x1F35E, '🍞', "bread"), - (0x1F35F, '🍟', "french fries"), - (0x1F360, '🍠', "roasted sweet potato"), - (0x1F361, '🍡', "dango"), - (0x1F362, '🍢', "oden"), - (0x1F363, '🍣', "sushi"), - (0x1F364, '🍤', "fried shrimp"), - (0x1F365, '🍥', "fish cake with swirl design"), - (0x1F366, '🍦', "soft ice cream"), - (0x1F367, '🍧', "shaved ice"), - (0x1F368, '🍨', "ice cream"), - (0x1F369, '🍩', "doughnut"), - (0x1F36A, '🍪', "cookie"), - (0x1F36B, '🍫', "chocolate bar"), - (0x1F36C, '🍬', "candy"), - (0x1F36D, '🍭', "lollipop"), - (0x1F36E, '🍮', "custard"), - (0x1F36F, '🍯', "honey pot"), - (0x1F370, '🍰', "shortcake"), - (0x1F371, '🍱', "bento box"), - (0x1F372, '🍲', "pot of food"), - (0x1F373, '🍳', "cooking"), - (0x1F374, '🍴', "fork and knife"), - (0x1F375, '🍵', "teacup without handle"), - (0x1F376, '🍶', "sake bottle and cup"), - (0x1F377, '🍷', "wine glass"), - (0x1F378, '🍸', "cocktail glass"), - (0x1F379, '🍹', "tropical drink"), - (0x1F37A, '🍺', "beer mug"), - (0x1F37B, '🍻', "clinking beer mugs"), - (0x1F37C, '🍼', "baby bottle"), - (0x1F380, '🎀', "ribbon"), - (0x1F381, '🎁', "wrapped present"), - (0x1F382, '🎂', "birthday cake"), - (0x1F383, '🎃', "jack-o-lantern"), - (0x1F384, '🎄', "christmas tree"), - (0x1F385, '🎅', "father christmas"), - (0x1F386, '🎆', "fireworks"), - (0x1F387, '🎇', "firework sparkler"), - (0x1F388, '🎈', "balloon"), - (0x1F389, '🎉', "party popper"), - (0x1F38A, '🎊', "confetti ball"), - (0x1F38B, '🎋', "tanabata tree"), - (0x1F38C, '🎌', "crossed flags"), - (0x1F38D, '🎍', "pine decoration"), - (0x1F38E, '🎎', "japanese dolls"), - (0x1F38F, '🎏', "carp streamer"), - (0x1F390, '🎐', "wind chime"), - (0x1F391, '🎑', "moon viewing ceremony"), - (0x1F392, '🎒', "school satchel"), - (0x1F393, '🎓', "graduation cap"), - (0x1F3A0, '🎠', "carousel horse"), - (0x1F3A1, '🎡', "ferris wheel"), - (0x1F3A2, '🎢', "roller coaster"), - (0x1F3A3, '🎣', "fishing pole and fish"), - (0x1F3A4, '🎤', "microphone"), - (0x1F3A5, '🎥', "movie camera"), - (0x1F3A6, '🎦', "cinema"), - (0x1F3A7, '🎧', "headphone"), - (0x1F3A8, '🎨', "artist palette"), - (0x1F3A9, '🎩', "top hat"), - (0x1F3AA, '🎪', "circus tent"), - (0x1F3AB, '🎫', "ticket"), - (0x1F3AC, '🎬', "clapper board"), - (0x1F3AD, '🎭', "performing arts"), - (0x1F3AE, '🎮', "video game"), - (0x1F3AF, '🎯', "direct hit"), - (0x1F3B0, '🎰', "slot machine"), - (0x1F3B1, '🎱', "billiards"), - (0x1F3B2, '🎲', "game die"), - (0x1F3B3, '🎳', "bowling"), - (0x1F3B4, '🎴', "flower playing cards"), - (0x1F3B5, '🎵', "musical note"), - (0x1F3B6, '🎶', "multiple musical notes"), - (0x1F3B7, '🎷', "saxophone"), - (0x1F3B8, '🎸', "guitar"), - (0x1F3B9, '🎹', "musical keyboard"), - (0x1F3BA, '🎺', "trumpet"), - (0x1F3BB, '🎻', "violin"), - (0x1F3BC, '🎼', "musical score"), - (0x1F3BD, '🎽', "running shirt with sash"), - (0x1F3BE, '🎾', "tennis racquet and ball"), - (0x1F3BF, '🎿', "ski and ski boot"), - (0x1F3C0, '🏀', "basketball and hoop"), - (0x1F3C1, '🏁', "chequered flag"), - (0x1F3C2, '🏂', "snowboarder"), - (0x1F3C3, '🏃', "runner"), - (0x1F3C4, '🏄', "surfer"), - (0x1F3C6, '🏆', "trophy"), - (0x1F3C7, '🏇', "horse racing"), - (0x1F3C8, '🏈', "american football"), - (0x1F3C9, '🏉', "rugby football"), - (0x1F3CA, '🏊', "swimmer"), - (0x1F3E0, '🏠', "house building"), - (0x1F3E1, '🏡', "house with garden"), - (0x1F3E2, '🏢', "office building"), - (0x1F3E3, '🏣', "japanese post office"), - (0x1F3E4, '🏤', "european post office"), - (0x1F3E5, '🏥', "hospital"), - (0x1F3E6, '🏦', "bank"), - (0x1F3E7, '🏧', "automated teller machine"), - (0x1F3E8, '🏨', "hotel"), - (0x1F3E9, '🏩', "love hotel"), - (0x1F3EA, '🏪', "convenience store"), - (0x1F3EB, '🏫', "school"), - (0x1F3EC, '🏬', "department store"), - (0x1F3ED, '🏭', "factory"), - (0x1F3EE, '🏮', "izakaya lantern"), - (0x1F3EF, '🏯', "japanese castle"), - (0x1F3F0, '🏰', "european castle"), - (0x1F400, '🐀', "rat"), - (0x1F401, '🐁', "mouse"), - (0x1F402, '🐂', "ox"), - (0x1F403, '🐃', "water buffalo"), - (0x1F404, '🐄', "cow"), - (0x1F405, '🐅', "tiger"), - (0x1F406, '🐆', "leopard"), - (0x1F407, '🐇', "rabbit"), - (0x1F408, '🐈', "cat"), - (0x1F409, '🐉', "dragon"), - (0x1F40A, '🐊', "crocodile"), - (0x1F40B, '🐋', "whale"), - (0x1F40C, '🐌', "snail"), - (0x1F40D, '🐍', "snake"), - (0x1F40E, '🐎', "horse"), - (0x1F40F, '🐏', "ram"), - (0x1F410, '🐐', "goat"), - (0x1F411, '🐑', "sheep"), - (0x1F412, '🐒', "monkey"), - (0x1F413, '🐓', "rooster"), - (0x1F414, '🐔', "chicken"), - (0x1F415, '🐕', "dog"), - (0x1F416, '🐖', "pig"), - (0x1F417, '🐗', "boar"), - (0x1F418, '🐘', "elephant"), - (0x1F419, '🐙', "octopus"), - (0x1F41A, '🐚', "spiral shell"), - (0x1F41B, '🐛', "bug"), - (0x1F41C, '🐜', "ant"), - (0x1F41D, '🐝', "honeybee"), - (0x1F41E, '🐞', "lady beetle"), - (0x1F41F, '🐟', "fish"), - (0x1F420, '🐠', "tropical fish"), - (0x1F421, '🐡', "blowfish"), - (0x1F422, '🐢', "turtle"), - (0x1F423, '🐣', "hatching chick"), - (0x1F424, '🐤', "baby chick"), - (0x1F425, '🐥', "front-facing baby chick"), - (0x1F426, '🐦', "bird"), - (0x1F427, '🐧', "penguin"), - (0x1F428, '🐨', "koala"), - (0x1F429, '🐩', "poodle"), - (0x1F42B, '🐫', "bactrian camel"), - (0x1F42C, '🐬', "dolphin"), - (0x1F42D, '🐭', "mouse face"), - (0x1F42E, '🐮', "cow face"), - (0x1F42F, '🐯', "tiger face"), - (0x1F430, '🐰', "rabbit face"), - (0x1F431, '🐱', "cat face"), - (0x1F432, '🐲', "dragon face"), - (0x1F433, '🐳', "spouting whale"), - (0x1F434, '🐴', "horse face"), - (0x1F435, '🐵', "monkey face"), - (0x1F436, '🐶', "dog face"), - (0x1F437, '🐷', "pig face"), - (0x1F438, '🐸', "frog face"), - (0x1F439, '🐹', "hamster face"), - (0x1F43A, '🐺', "wolf face"), - (0x1F43B, '🐻', "bear face"), - (0x1F43C, '🐼', "panda face"), - (0x1F43D, '🐽', "pig nose"), - (0x1F43E, '🐾', "paw prints"), - (0x1F440, '👀', "eyes"), - (0x1F442, '👂', "ear"), - (0x1F443, '👃', "nose"), - (0x1F444, '👄', "mouth"), - (0x1F445, '👅', "tongue"), - (0x1F446, '👆', "white up pointing backhand index"), - (0x1F447, '👇', "white down pointing backhand index"), - (0x1F448, '👈', "white left pointing backhand index"), - (0x1F449, '👉', "white right pointing backhand index"), - (0x1F44A, '👊', "fisted hand sign"), - (0x1F44B, '👋', "waving hand sign"), - (0x1F44C, '👌', "ok hand sign"), - (0x1F44D, '👍', "thumbs up sign"), - (0x1F44E, '👎', "thumbs down sign"), - (0x1F44F, '👏', "clapping hands sign"), - (0x1F450, '👐', "open hands sign"), - (0x1F451, '👑', "crown"), - (0x1F452, '👒', "womans hat"), - (0x1F453, '👓', "eyeglasses"), - (0x1F454, '👔', "necktie"), - (0x1F455, '👕', "t-shirt"), - (0x1F456, '👖', "jeans"), - (0x1F457, '👗', "dress"), - (0x1F458, '👘', "kimono"), - (0x1F459, '👙', "bikini"), - (0x1F45A, '👚', "womans clothes"), - (0x1F45B, '👛', "purse"), - (0x1F45C, '👜', "handbag"), - (0x1F45D, '👝', "pouch"), - (0x1F45E, '👞', "mans shoe"), - (0x1F45F, '👟', "athletic shoe"), - (0x1F460, '👠', "high-heeled shoe"), - (0x1F461, '👡', "womans sandal"), - (0x1F462, '👢', "womans boots"), - (0x1F463, '👣', "footprints"), - (0x1F464, '👤', "bust in silhouette"), - (0x1F465, '👥', "busts in silhouette"), - (0x1F466, '👦', "boy"), - (0x1F467, '👧', "girl"), - (0x1F468, '👨', "man"), - (0x1F469, '👩', "woman"), - (0x1F46A, '👪', "family"), - (0x1F46B, '👫', "man and woman holding hands"), - (0x1F46C, '👬', "two men holding hands"), - (0x1F46D, '👭', "two women holding hands"), - (0x1F46E, '👮', "police officer"), - (0x1F46F, '👯', "woman with bunny ears"), - (0x1F470, '👰', "bride with veil"), - (0x1F471, '👱', "person with blond hair"), - (0x1F472, '👲', "man with gua pi mao"), - (0x1F473, '👳', "man with turban"), - (0x1F474, '👴', "older man"), - (0x1F475, '👵', "older woman"), - (0x1F476, '👶', "baby"), - (0x1F477, '👷', "construction worker"), - (0x1F478, '👸', "princess"), - (0x1F479, '👹', "japanese ogre"), - (0x1F47A, '👺', "japanese goblin"), - (0x1F47B, '👻', "ghost"), - (0x1F47C, '👼', "baby angel"), - (0x1F47D, '👽', "extraterrestrial alien"), - (0x1F47E, '👾', "alien monster"), - (0x1F47F, '👿', "imp"), - (0x1F480, '💀', "skull"), - (0x1F481, '💁', "information desk person"), - (0x1F482, '💂', "guardsman"), - (0x1F483, '💃', "dancer"), - (0x1F484, '💄', "lipstick"), - (0x1F485, '💅', "nail polish"), - (0x1F486, '💆', "face massage"), - (0x1F487, '💇', "haircut"), - (0x1F488, '💈', "barber pole"), - (0x1F489, '💉', "syringe"), - (0x1F48A, '💊', "pill"), - (0x1F48B, '💋', "kiss mark"), - (0x1F48C, '💌', "love letter"), - (0x1F48D, '💍', "ring"), - (0x1F48E, '💎', "gem stone"), - (0x1F48F, '💏', "kiss"), - (0x1F490, '💐', "bouquet"), - (0x1F491, '💑', "couple with heart"), - (0x1F492, '💒', "wedding"), - (0x1F493, '💓', "beating heart"), - (0x1F494, '💔', "broken heart"), - (0x1F495, '💕', "two hearts"), - (0x1F496, '💖', "sparkling heart"), - (0x1F497, '💗', "growing heart"), - (0x1F498, '💘', "heart with arrow"), - (0x1F499, '💙', "blue heart"), - (0x1F49A, '💚', "green heart"), - (0x1F49B, '💛', "yellow heart"), - (0x1F49C, '💜', "purple heart"), - (0x1F49D, '💝', "heart with ribbon"), - (0x1F49E, '💞', "revolving hearts"), - (0x1F49F, '💟', "heart decoration"), - (0x1F4A0, '💠', "diamond shape with a dot inside"), - (0x1F4A1, '💡', "electric light bulb"), - (0x1F4A2, '💢', "anger symbol"), - (0x1F4A3, '💣', "bomb"), - (0x1F4A4, '💤', "sleeping symbol"), - (0x1F4A5, '💥', "collision symbol"), - (0x1F4A6, '💦', "splashing sweat symbol"), - (0x1F4A7, '💧', "droplet"), - (0x1F4A8, '💨', "dash symbol"), - (0x1F4A9, '💩', "pile of poo"), - (0x1F4AA, '💪', "flexed biceps"), - (0x1F4AB, '💫', "dizzy symbol"), - (0x1F4AC, '💬', "speech balloon"), - (0x1F4AD, '💭', "thought balloon"), - (0x1F4AE, '💮', "white flower"), - (0x1F4AF, '💯', "hundred points symbol"), - (0x1F4B0, '💰', "money bag"), - (0x1F4B1, '💱', "currency exchange"), - (0x1F4B2, '💲', "heavy dollar sign"), - (0x1F4B3, '💳', "credit card"), - (0x1F4B4, '💴', "banknote with yen sign"), - (0x1F4B5, '💵', "banknote with dollar sign"), - (0x1F4B6, '💶', "banknote with euro sign"), - (0x1F4B7, '💷', "banknote with pound sign"), - (0x1F4B8, '💸', "money with wings"), - (0x1F4B9, '💹', "chart with upwards trend and yen sign"), - (0x1F4BA, '💺', "seat"), - (0x1F4BB, '💻', "personal computer"), - (0x1F4BC, '💼', "briefcase"), - (0x1F4BD, '💽', "minidisc"), - (0x1F4BE, '💾', "floppy disk"), - (0x1F4BF, '💿', "optical disc"), - (0x1F4C0, '📀', "dvd"), - (0x1F4C1, '📁', "file folder"), - (0x1F4C2, '📂', "open file folder"), - (0x1F4C3, '📃', "page with curl"), - (0x1F4C4, '📄', "page facing up"), - (0x1F4C5, '📅', "calendar"), - (0x1F4C6, '📆', "tear-off calendar"), - (0x1F4C7, '📇', "card index"), - (0x1F4C8, '📈', "chart with upwards trend"), - (0x1F4C9, '📉', "chart with downwards trend"), - (0x1F4CA, '📊', "bar chart"), - (0x1F4CB, '📋', "clipboard"), - (0x1F4CC, '📌', "pushpin"), - (0x1F4CD, '📍', "round pushpin"), - (0x1F4CE, '📎', "paperclip"), - (0x1F4CF, '📏', "straight ruler"), - (0x1F4D0, '📐', "triangular ruler"), - (0x1F4D1, '📑', "bookmark tabs"), - (0x1F4D2, '📒', "ledger"), - (0x1F4D3, '📓', "notebook"), - (0x1F4D4, '📔', "notebook with decorative cover"), - (0x1F4D5, '📕', "closed book"), - (0x1F4D6, '📖', "open book"), - (0x1F4D7, '📗', "green book"), - (0x1F4D8, '📘', "blue book"), - (0x1F4D9, '📙', "orange book"), - (0x1F4DA, '📚', "books"), - (0x1F4DB, '📛', "name badge"), - (0x1F4DC, '📜', "scroll"), - (0x1F4DD, '📝', "memo"), - (0x1F4DE, '📞', "telephone receiver"), - (0x1F4DF, '📟', "pager"), - (0x1F4E0, '📠', "fax machine"), - (0x1F4E1, '📡', "satellite antenna"), - (0x1F4E2, '📢', "public address loudspeaker"), - (0x1F4E3, '📣', "cheering megaphone"), - (0x1F4E4, '📤', "outbox tray"), - (0x1F4E5, '📥', "inbox tray"), - (0x1F4E6, '📦', "package"), - (0x1F4E7, '📧', "e-mail symbol"), - (0x1F4E8, '📨', "incoming envelope"), - (0x1F4E9, '📩', "envelope with downwards arrow above"), - (0x1F4EA, '📪', "closed mailbox with lowered flag"), - (0x1F4EB, '📫', "closed mailbox with raised flag"), - (0x1F4EC, '📬', "open mailbox with raised flag"), - (0x1F4ED, '📭', "open mailbox with lowered flag"), - (0x1F4EE, '📮', "postbox"), - (0x1F4EF, '📯', "postal horn"), - (0x1F4F0, '📰', "newspaper"), - (0x1F4F1, '📱', "mobile phone"), - (0x1F4F2, '📲', "mobile phone with rightwards arrow at left"), - (0x1F4F3, '📳', "vibration mode"), - (0x1F4F4, '📴', "mobile phone off"), - (0x1F4F5, '📵', "no mobile phones"), - (0x1F4F6, '📶', "antenna with bars"), - (0x1F4F7, '📷', "camera"), - (0x1F4F9, '📹', "video camera"), - (0x1F4FA, '📺', "television"), - (0x1F4FB, '📻', "radio"), - (0x1F4FC, '📼', "videocassette"), - (0x1F500, '🔀', "twisted rightwards arrows"), - (0x1F501, '🔁', "clockwise rightwards and leftwards open circle arrows"), - (0x1F502, '🔂', "clockwise rightwards and leftwards open circle arrows with circled one overlay"), - (0x1F503, '🔃', "clockwise downwards and upwards open circle arrows"), - (0x1F504, '🔄', "anticlockwise downwards and upwards open circle arrows"), - (0x1F505, '🔅', "low brightness symbol"), - (0x1F506, '🔆', "high brightness symbol"), - (0x1F507, '🔇', "speaker with cancellation stroke"), - (0x1F508, '🔈', "speaker"), - (0x1F509, '🔉', "speaker with one sound wave"), - (0x1F50A, '🔊', "speaker with three sound waves"), - (0x1F50B, '🔋', "battery"), - (0x1F50C, '🔌', "electric plug"), - (0x1F50D, '🔍', "left-pointing magnifying glass"), - (0x1F50E, '🔎', "right-pointing magnifying glass"), - (0x1F50F, '🔏', "lock with ink pen"), - (0x1F510, '🔐', "closed lock with key"), - (0x1F511, '🔑', "key"), - (0x1F512, '🔒', "lock"), - (0x1F513, '🔓', "open lock"), - (0x1F514, '🔔', "bell"), - (0x1F515, '🔕', "bell with cancellation stroke"), - (0x1F516, '🔖', "bookmark"), - (0x1F517, '🔗', "link symbol"), - (0x1F518, '🔘', "radio button"), - (0x1F519, '🔙', "back with leftwards arrow above"), - (0x1F51A, '🔚', "end with leftwards arrow above"), - (0x1F51B, '🔛', "on with exclamation mark with left right arrow above"), - (0x1F51C, '🔜', "soon with rightwards arrow above"), - (0x1F51D, '🔝', "top with upwards arrow above"), - (0x1F51E, '🔞', "no one under eighteen symbol"), - (0x1F51F, '🔟', "keycap ten"), - (0x1F520, '🔠', "input symbol for latin capital letters"), - (0x1F521, '🔡', "input symbol for latin small letters"), - (0x1F522, '🔢', "input symbol for numbers"), - (0x1F523, '🔣', "input symbol for symbols"), - (0x1F524, '🔤', "input symbol for latin letters"), - (0x1F525, '🔥', "fire"), - (0x1F526, '🔦', "electric torch"), - (0x1F527, '🔧', "wrench"), - (0x1F528, '🔨', "hammer"), - (0x1F529, '🔩', "nut and bolt"), - (0x1F52A, '🔪', "hocho"), - (0x1F52B, '🔫', "pistol"), - (0x1F52C, '🔬', "microscope"), - (0x1F52D, '🔭', "telescope"), - (0x1F52E, '🔮', "crystal ball"), - (0x1F52F, '🔯', "six pointed star with middle dot"), - (0x1F530, '🔰', "japanese symbol for beginner"), - (0x1F531, '🔱', "trident emblem"), - (0x1F532, '🔲', "black square button"), - (0x1F533, '🔳', "white square button"), - (0x1F534, '🔴', "large red circle"), - (0x1F535, '🔵', "large blue circle"), - (0x1F536, '🔶', "large orange diamond"), - (0x1F537, '🔷', "large blue diamond"), - (0x1F538, '🔸', "small orange diamond"), - (0x1F539, '🔹', "small blue diamond"), - (0x1F53A, '🔺', "up-pointing red triangle"), - (0x1F53B, '🔻', "down-pointing red triangle"), - (0x1F53C, '🔼', "up-pointing small red triangle"), - (0x1F53D, '🔽', "down-pointing small red triangle"), - (0x1F550, '🕐', "clock face one oclock"), - (0x1F551, '🕑', "clock face two oclock"), - (0x1F552, '🕒', "clock face three oclock"), - (0x1F553, '🕓', "clock face four oclock"), - (0x1F554, '🕔', "clock face five oclock"), - (0x1F555, '🕕', "clock face six oclock"), - (0x1F556, '🕖', "clock face seven oclock"), - (0x1F557, '🕗', "clock face eight oclock"), - (0x1F558, '🕘', "clock face nine oclock"), - (0x1F559, '🕙', "clock face ten oclock"), - (0x1F55A, '🕚', "clock face eleven oclock"), - (0x1F55B, '🕛', "clock face twelve oclock"), - (0x1F55C, '🕜', "clock face one-thirty"), - (0x1F55D, '🕝', "clock face two-thirty"), - (0x1F55E, '🕞', "clock face three-thirty"), - (0x1F55F, '🕟', "clock face four-thirty"), - (0x1F560, '🕠', "clock face five-thirty"), - (0x1F561, '🕡', "clock face six-thirty"), - (0x1F562, '🕢', "clock face seven-thirty"), - (0x1F563, '🕣', "clock face eight-thirty"), - (0x1F564, '🕤', "clock face nine-thirty"), - (0x1F565, '🕥', "clock face ten-thirty"), - (0x1F566, '🕦', "clock face eleven-thirty"), - (0x1F567, '🕧', "clock face twelve-thirty"), - (0x1F5FB, '🗻', "mount fuji"), - (0x1F5FC, '🗼', "tokyo tower"), - (0x1F5FD, '🗽', "statue of liberty"), - (0x1F5FE, '🗾', "silhouette of japan"), - (0x1F5FF, '🗿', "moyai"), - (0x1F600, '😀', "grinning face"), - (0x1F601, '😁', "grinning face with smiling eyes"), - (0x1F602, '😂', "face with tears of joy"), - (0x1F603, '😃', "smiling face with open mouth"), - (0x1F604, '😄', "smiling face with open mouth and smiling eyes"), - (0x1F605, '😅', "smiling face with open mouth and cold sweat"), - (0x1F606, '😆', "smiling face with open mouth and tightly-closed eyes"), - (0x1F607, '😇', "smiling face with halo"), - (0x1F608, '😈', "smiling face with horns"), - (0x1F609, '😉', "winking face"), - (0x1F60A, '😊', "smiling face with smiling eyes"), - (0x1F60B, '😋', "face savouring delicious food"), - (0x1F60C, '😌', "relieved face"), - (0x1F60D, '😍', "smiling face with heart-shaped eyes"), - (0x1F60E, '😎', "smiling face with sunglasses"), - (0x1F60F, '😏', "smirking face"), - (0x1F610, '😐', "neutral face"), - (0x1F611, '😑', "expressionless face"), - (0x1F612, '😒', "unamused face"), - (0x1F613, '😓', "face with cold sweat"), - (0x1F614, '😔', "pensive face"), - (0x1F615, '😕', "confused face"), - (0x1F616, '😖', "confounded face"), - (0x1F617, '😗', "kissing face"), - (0x1F618, '😘', "face throwing a kiss"), - (0x1F619, '😙', "kissing face with smiling eyes"), - (0x1F61A, '😚', "kissing face with closed eyes"), - (0x1F61B, '😛', "face with stuck-out tongue"), - (0x1F61C, '😜', "face with stuck-out tongue and winking eye"), - (0x1F61D, '😝', "face with stuck-out tongue and tightly-closed eyes"), - (0x1F61E, '😞', "disappointed face"), - (0x1F61F, '😟', "worried face"), - (0x1F620, '😠', "angry face"), - (0x1F621, '😡', "pouting face"), - (0x1F622, '😢', "crying face"), - (0x1F623, '😣', "persevering face"), - (0x1F624, '😤', "face with look of triumph"), - (0x1F625, '😥', "disappointed but relieved face"), - (0x1F626, '😦', "frowning face with open mouth"), - (0x1F627, '😧', "anguished face"), - (0x1F628, '😨', "fearful face"), - (0x1F629, '😩', "weary face"), - (0x1F62A, '😪', "sleepy face"), - (0x1F62B, '😫', "tired face"), - (0x1F62C, '😬', "grimacing face"), - (0x1F62D, '😭', "loudly crying face"), - (0x1F62E, '😮', "face with open mouth"), - (0x1F62F, '😯', "hushed face"), - (0x1F630, '😰', "face with open mouth and cold sweat"), - (0x1F631, '😱', "face screaming in fear"), - (0x1F632, '😲', "astonished face"), - (0x1F633, '😳', "flushed face"), - (0x1F634, '😴', "sleeping face"), - (0x1F635, '😵', "dizzy face"), - (0x1F636, '😶', "face without mouth"), - (0x1F637, '😷', "face with medical mask"), - (0x1F638, '😸', "grinning cat face with smiling eyes"), - (0x1F639, '😹', "cat face with tears of joy"), - (0x1F63A, '😺', "smiling cat face with open mouth"), - (0x1F63B, '😻', "smiling cat face with heart-shaped eyes"), - (0x1F63C, '😼', "cat face with wry smile"), - (0x1F63D, '😽', "kissing cat face with closed eyes"), - (0x1F63E, '😾', "pouting cat face"), - (0x1F63F, '😿', "crying cat face"), - (0x1F640, '🙀', "weary cat face"), - (0x1F645, '🙅', "face with no good gesture"), - (0x1F646, '🙆', "face with ok gesture"), - (0x1F647, '🙇', "person bowing deeply"), - (0x1F648, '🙈', "see-no-evil monkey"), - (0x1F649, '🙉', "hear-no-evil monkey"), - (0x1F64A, '🙊', "speak-no-evil monkey"), - (0x1F64B, '🙋', "happy person raising one hand"), - (0x1F64C, '🙌', "person raising both hands in celebration"), - (0x1F64D, '🙍', "person frowning"), - (0x1F64E, '🙎', "person with pouting face"), - (0x1F64F, '🙏', "person with folded hands"), - (0x1F680, '🚀', "rocket"), - (0x1F681, '🚁', "helicopter"), - (0x1F682, '🚂', "steam locomotive"), - (0x1F683, '🚃', "railway car"), - (0x1F684, '🚄', "high-speed train"), - (0x1F685, '🚅', "high-speed train with bullet nose"), - (0x1F686, '🚆', "train"), - (0x1F687, '🚇', "metro"), - (0x1F688, '🚈', "light rail"), - (0x1F689, '🚉', "station"), - (0x1F68A, '🚊', "tram"), - (0x1F68B, '🚋', "tram car"), - (0x1F68C, '🚌', "bus"), - (0x1F68D, '🚍', "oncoming bus"), - (0x1F68E, '🚎', "trolleybus"), - (0x1F68F, '🚏', "bus stop"), - (0x1F690, '🚐', "minibus"), - (0x1F691, '🚑', "ambulance"), - (0x1F692, '🚒', "fire engine"), - (0x1F693, '🚓', "police car"), - (0x1F694, '🚔', "oncoming police car"), - (0x1F695, '🚕', "taxi"), - (0x1F696, '🚖', "oncoming taxi"), - (0x1F697, '🚗', "automobile"), - (0x1F699, '🚙', "recreational vehicle"), - (0x1F69A, '🚚', "delivery truck"), - (0x1F69B, '🚛', "articulated lorry"), - (0x1F69C, '🚜', "tractor"), - (0x1F69D, '🚝', "monorail"), - (0x1F69E, '🚞', "mountain railway"), - (0x1F69F, '🚟', "suspension railway"), - (0x1F6A0, '🚠', "mountain cableway"), - (0x1F6A1, '🚡', "aerial tramway"), - (0x1F6A2, '🚢', "ship"), - (0x1F6A3, '🚣', "rowboat"), - (0x1F6A4, '🚤', "speedboat"), - (0x1F6A5, '🚥', "horizontal traffic light"), - (0x1F6A6, '🚦', "vertical traffic light"), - (0x1F6A7, '🚧', "construction sign"), - (0x1F6A8, '🚨', "police cars revolving light"), - (0x1F6A9, '🚩', "triangular flag on post"), - (0x1F6AA, '🚪', "door"), - (0x1F6AB, '🚫', "no entry sign"), - (0x1F6AC, '🚬', "smoking symbol"), - (0x1F6AD, '🚭', "no smoking symbol"), - (0x1F6AE, '🚮', "put litter in its place symbol"), - (0x1F6AF, '🚯', "do not litter symbol"), - (0x1F6B0, '🚰', "potable water symbol"), - (0x1F6B1, '🚱', "non-potable water symbol"), - (0x1F6B2, '🚲', "bicycle"), - (0x1F6B3, '🚳', "no bicycles"), - (0x1F6B4, '🚴', "bicyclist"), - (0x1F6B5, '🚵', "mountain bicyclist"), - (0x1F6B6, '🚶', "pedestrian"), - (0x1F6B7, '🚷', "no pedestrians"), - (0x1F6B8, '🚸', "children crossing"), - (0x1F6B9, '🚹', "mens symbol"), - (0x1F6BA, '🚺', "womens symbol"), - (0x1F6BB, '🚻', "restroom"), - (0x1F6BC, '🚼', "baby symbol"), - (0x1F6BD, '🚽', "toilet"), - (0x1F6BE, '🚾', "water closet"), - (0x1F6BF, '🚿', "shower"), - (0x1F6C0, '🛀', "bath"), - (0x1F6C1, '🛁', "bathtub"), - (0x1F6C2, '🛂', "passport control"), - (0x1F6C3, '🛃', "customs"), - (0x1F6C4, '🛄', "baggage claim"), - (0x1F6C5, '🛅', "left luggage"), - (0xFE4E5, '󾓥', "flag japan"), - (0xFE4E6, '󾓦', "flag usa"), - (0xFE4E7, '󾓧', "flag"), - (0xFE4E8, '󾓨', "flag"), - (0xFE4E9, '󾓩', "flag"), - (0xFE4EA, '󾓪', "flag great britain"), - (0xFE4EB, '󾓫', "flag"), - (0xFE4EC, '󾓬', "flag"), - (0xFE4ED, '󾓭', "flag"), - (0xFE4EE, '󾓮', "flag south korea"), - (0xFE82C, '󾠬', "number sign in square"), - (0xFE82E, '󾠮', "digit one in square"), - (0xFE82F, '󾠯', "digit two in square"), - (0xFE830, '󾠰', "digit three in square"), - (0xFE831, '󾠱', "digit four in square"), - (0xFE832, '󾠲', "digit five in square"), - (0xFE833, '󾠳', "digit six in square"), - (0xFE834, '󾠴', "digit seven in square"), - (0xFE835, '󾠵', "digit eight in square"), - (0xFE836, '󾠶', "digit nine in square"), - (0xFE837, '󾠷', "digit zero in square"), -]; - -/// All emojis supported by egui. -/// The union of `emoji-icon-font.ttf` and `NotoEmoji-Regular.ttf`. -#[rustfmt::skip] -pub const FULL_EMOJI_LIST: &[(u32, char, &str)] = &[ - (0xA9, '©', "copyright sign"), - (0xAE, '®', "registered sign"), - (0x2030, '‰', "perthousand"), - (0x203C, '‼', "double exclamation mark"), - (0x2049, '⁉', "exclamation question mark"), - (0x20AC, '€', "currency-euro"), - (0x20E3, '⃣', "combining enclosing keycap"), - (0x211E, '℞', "retrograde"), - (0x2122, '™', "trade mark sign"), - (0x2126, 'Ω', "omega"), - (0x2135, 'ℵ', "aleph"), - (0x2139, 'ℹ', "information source"), - (0x2194, '↔', "left right arrow"), - (0x2195, '↕', "up down arrow"), - (0x2196, '↖', "north west arrow"), - (0x2197, '↗', "north east arrow"), - (0x2198, '↘', "south east arrow"), - (0x2199, '↙', "south west arrow"), - (0x21A9, '↩', "leftwards arrow with hook"), - (0x21AA, '↪', "rightwards arrow with hook"), - (0x21BA, '↺', "rotate-ccw"), - (0x21BB, '↻', "rotate-cw"), - (0x221E, '∞', "infinity"), - (0x2297, '⊗', "close"), - (0x229E, '⊞', "square-plus"), - (0x229F, '⊟', "square-minus"), - (0x2316, '⌖', "crosshairs"), - (0x2318, '⌘', "command"), - (0x231A, '⌚', "watch"), - (0x231B, '⌛', "hourglass"), - (0x2328, '⌨', "keyboard-wireless"), - (0x2386, '⎆', "enter"), - (0x2388, '⎈', "helm"), - (0x2397, '⎗', "previous-page"), - (0x2398, '⎘', "next-page"), - (0x2399, '⎙', "print-screen"), - (0x23CF, '⏏', "eject"), - (0x23E9, '⏩', "black right-pointing double triangle / forward"), - (0x23EA, '⏪', "backward / black left-pointing double triangle"), - (0x23EB, '⏫', "black up-pointing double triangle"), - (0x23EC, '⏬', "black down-pointing double triangle"), - (0x23ED, '⏭', "last"), - (0x23EE, '⏮', "first"), - (0x23F0, '⏰', "alarm clock"), - (0x23F1, '⏱', "stopwatch"), - (0x23F3, '⏳', "hourglass with flowing sand"), - (0x23F4, '⏴', "caret-left"), - (0x23F5, '⏵', "caret-right"), - (0x23F6, '⏶', "caret-up"), - (0x23F7, '⏷', "caret-down"), - (0x23F8, '⏸', "pause"), - (0x23F9, '⏹', "stop"), - (0x23FA, '⏺', "circle"), - (0x24C2, 'Ⓜ', "circled latin capital letter m"), - (0x2593, '▓', "chessboard"), - (0x25A0, '■', "square"), - (0x25A3, '▣', "checkbox-partial"), - (0x25AA, '▪', "black small square"), - (0x25AB, '▫', "white small square"), - (0x25B6, '▶', "black right-pointing triangle / play"), - (0x25C0, '◀', "black left-pointing triangle"), - (0x25CA, '◊', "lozenge"), - (0x25CB, '○', "circle-open"), - (0x25CE, '◎', "bullseye"), - (0x25D1, '◑', "contrast"), - (0x25D4, '◔', "pie-chart-reverse"), - (0x25D5, '◕', "pie-chart"), - (0x25FB, '◻', "white medium square"), - (0x25FC, '◼', "black medium square"), - (0x25FD, '◽', "white medium small square"), - (0x25FE, '◾', "black medium small square"), - (0x2600, '☀', "black sun with rays"), - (0x2601, '☁', "cloud"), - (0x2602, '☂', "umbrella"), - (0x2603, '☃', "snowman"), - (0x2604, '☄', "comet"), - (0x2605, '★', "star"), - (0x2606, '☆', "star-open"), - (0x2609, '☉', "record"), - (0x260E, '☎', "black telephone"), - (0x2610, '☐', "checkbox-unchecked"), - (0x2611, '☑', "ballot box with check / checkbox-checked"), - (0x2614, '☔', "umbrella with rain drops"), - (0x2615, '☕', "drink-coffee / hot beverage"), - (0x2618, '☘', "shamrock"), - (0x261C, '☜', "point-left"), - (0x261D, '☝', "point-up / white up pointing index"), - (0x261E, '☞', "point-right"), - (0x261F, '☟', "point-down"), - (0x2620, '☠', "skull-and-bones"), - (0x2622, '☢', "radiation"), - (0x2623, '☣', "biohazard"), - (0x2624, '☤', "caduceus"), - (0x2625, '☥', "ankh"), - (0x2626, '☦', "cross-orthodox"), - (0x2627, '☧', "chi-rho"), - (0x2628, '☨', "cross-of-lorraine"), - (0x2629, '☩', "cross-of-jerusalem"), - (0x262A, '☪', "star-and-crescent"), - (0x262B, '☫', "farsi"), - (0x262C, '☬', "khanda"), - (0x262E, '☮', "peace"), - (0x262F, '☯', "tao"), - (0x2630, '☰', "menu"), - (0x2638, '☸', "wheel-of-dharma"), - (0x2639, '☹', "smiley-sad"), - (0x263A, '☺', "smiley / white smiling face"), - (0x2640, '♀', "gender-female"), - (0x2642, '♂', "gender-male"), - (0x2648, '♈', "aries"), - (0x2649, '♉', "taurus"), - (0x264A, '♊', "gemini"), - (0x264B, '♋', "cancer"), - (0x264C, '♌', "leo"), - (0x264D, '♍', "virgo"), - (0x264E, '♎', "libra"), - (0x264F, '♏', "scorpius"), - (0x2650, '♐', "sagittarius"), - (0x2651, '♑', "capricorn"), - (0x2652, '♒', "aquarius"), - (0x2653, '♓', "pisces"), - (0x2654, '♔', "chess-white-king"), - (0x2655, '♕', "chess-white-queen"), - (0x2656, '♖', "chess-white-rook"), - (0x2657, '♗', "chess-white-bishop"), - (0x2658, '♘', "chess-white-knight"), - (0x2659, '♙', "chess-white-pawn"), - (0x265A, '♚', "chess-black-king"), - (0x265B, '♛', "chess-black-queen"), - (0x265C, '♜', "chess-black-rook"), - (0x265D, '♝', "chess-black-bishop"), - (0x265E, '♞', "chess-black-knight"), - (0x265F, '♟', "chess-black-pawn"), - (0x2660, '♠', "black spade suit / spades"), - (0x2661, '♡', "heart-open"), - (0x2663, '♣', "black club suit / clubs"), - (0x2665, '♥', "black heart suit"), - (0x2666, '♦', "black diamond suit / diamonds"), - (0x2668, '♨', "hot springs"), - (0x2669, '♩', "music-quarter-note"), - (0x266A, '♪', "music-eighth-note"), - (0x266B, '♫', "music-eigth-notes"), - (0x266C, '♬', "music-sixteenth-notes"), - (0x267B, '♻', "black universal recycling symbol / recycle"), - (0x267E, '♾', "permanent-paper"), - (0x267F, '♿', "wheelchair symbol"), - (0x2690, '⚐', "flag-open"), - (0x2691, '⚑', "flag"), - (0x2692, '⚒', "hammer-and-pick"), - (0x2693, '⚓', "anchor"), - (0x2694, '⚔', "crossed-swords"), - (0x2695, '⚕', "asclepius"), - (0x2696, '⚖', "scales"), - (0x2698, '⚘', "flower"), - (0x2699, '⚙', "gear"), - (0x269B, '⚛', "atom"), - (0x269C, '⚜', "fleur-de-lis"), - (0x26A0, '⚠', "warning sign"), - (0x26A1, '⚡', "bolt / high voltage sign"), - (0x26A2, '⚢', "gender-female-female"), - (0x26A3, '⚣', "gender-male-male"), - (0x26A4, '⚤', "gender-male-female"), - (0x26A6, '⚦', "gender-transgender"), - (0x26A7, '⚧', "gender-non-binary"), - (0x26AA, '⚪', "medium white circle"), - (0x26AB, '⚫', "medium black circle"), - (0x26B0, '⚰', "coffin"), - (0x26BD, '⚽', "football-soccer / soccer ball"), - (0x26BE, '⚾', "baseball"), - (0x26C3, '⛃', "database"), - (0x26C4, '⛄', "snowman without snow"), - (0x26C5, '⛅', "sun behind cloud"), - (0x26CE, '⛎', "ophiuchus"), - (0x26CF, '⛏', "pick"), - (0x26D3, '⛓', "dna"), - (0x26D4, '⛔', "no entry / no-entry"), - (0x26E4, '⛤', "pentagram"), - (0x26E7, '⛧', "pentagram-inverted"), - (0x26E8, '⛨', "shield-with-cross"), - (0x26E9, '⛩', "temple"), - (0x26EA, '⛪', "church"), - (0x26ED, '⛭', "gear-no-hub"), - (0x26F1, '⛱', "beach"), - (0x26F2, '⛲', "fountain"), - (0x26F3, '⛳', "flag in hole"), - (0x26F5, '⛵', "sailboat"), - (0x26F6, '⛶', "four-corners"), - (0x26F7, '⛷', "skier"), - (0x26F8, '⛸', "ice-skater"), - (0x26FA, '⛺', "tent"), - (0x26FC, '⛼', "headstone"), - (0x26FD, '⛽', "fuel pump / fuel-pump"), - (0x2702, '✂', "black scissors"), - (0x2705, '✅', "white heavy check mark"), - (0x2706, '✆', "phone-location"), - (0x2707, '✇', "film-reel"), - (0x2708, '✈', "airplane"), - (0x2709, '✉', "envelope"), - (0x270A, '✊', "hand-fist / raised fist"), - (0x270B, '✋', "raised hand"), - (0x270C, '✌', "victory hand"), - (0x270F, '✏', "pencil"), - (0x2712, '✒', "black nib"), - (0x2714, '✔', "heavy check mark"), - (0x2716, '✖', "heavy multiplication x / multiply"), - (0x271A, '✚', "plus"), - (0x271D, '✝', "latin-cross"), - (0x271F, '✟', "latin-cross-outline"), - (0x2720, '✠', "maltese-cross"), - (0x2721, '✡', "star-of-david"), - (0x2728, '✨', "sparkles"), - (0x272A, '✪', "star-circled"), - (0x2731, '✱', "asterisk-six"), - (0x2733, '✳', "eight spoked asterisk"), - (0x2734, '✴', "eight pointed black star / star-eight-points"), - (0x273F, '✿', "black-florette"), - (0x2740, '❀', "florette"), - (0x2744, '❄', "snowflake"), - (0x2747, '❇', "sparkle"), - (0x274C, '❌', "cross mark"), - (0x274E, '❎', "negative squared cross mark"), - (0x2753, '❓', "black question mark ornament"), - (0x2754, '❔', "white question mark ornament"), - (0x2755, '❕', "white exclamation mark ornament"), - (0x2757, '❗', "heavy exclamation mark symbol"), - (0x2764, '❤', "heavy black heart"), - (0x2765, '❥', "heart-tilted"), - (0x2795, '➕', "heavy plus sign"), - (0x2796, '➖', "heavy minus sign"), - (0x2797, '➗', "divide / heavy division sign"), - (0x27A1, '➡', "arrow-right / black rightwards arrow"), - (0x27B0, '➰', "curly loop"), - (0x27BF, '➿', "double curly loop"), - (0x27F2, '⟲', "rotate-cw-side"), - (0x27F3, '⟳', "rotate-ccw-side"), - (0x2934, '⤴', "arrow pointing rightwards then curving upwards"), - (0x2935, '⤵', "arrow pointing rightwards then curving downwards"), - (0x2B05, '⬅', "arrow-left / leftwards black arrow"), - (0x2B06, '⬆', "arrow-up / upwards black arrow"), - (0x2B07, '⬇', "arrow-down / downwards black arrow"), - (0x2B08, '⬈', "arrow-up-right"), - (0x2B09, '⬉', "arrow-up-left"), - (0x2B0A, '⬊', "arrow-down-right"), - (0x2B0B, '⬋', "arrow-down-left"), - (0x2B0C, '⬌', "arrow-left-right"), - (0x2B0D, '⬍', "arrow-up-down"), - (0x2B1B, '⬛', "black large square"), - (0x2B1C, '⬜', "white large square"), - (0x2B1F, '⬟', "pentagon"), - (0x2B23, '⬣', "hexagon"), - (0x2B50, '⭐', "white medium star"), - (0x2B55, '⭕', "heavy large circle"), - (0x2B88, '⮈', "circle-arrow-left"), - (0x2B89, '⮉', "circle-arrow-up"), - (0x2B8A, '⮊', "circle-arrow-right"), - (0x2B8B, '⮋', "circle-arrow-down"), - (0x2BA8, '⮨', "arrow-reply"), - (0x2BA9, '⮩', "arrow-forward"), - (0x2BAA, '⮪', "arrow-undo"), - (0x2BAB, '⮫', "arrow-redo"), - (0x3030, '〰', "wavy dash"), - (0x303D, '〽', "part alternation mark"), - (0x3297, '㊗', "circled ideograph congratulation"), - (0x3299, '㊙', "circled ideograph secret"), - (0xFE5C, '﹜', "brace-right"), - (0xFF01, '!', "exclamation-mark"), - (0xFF03, '#', "number"), - (0xFF04, '$', "currency-dollar"), - (0xFF05, '%', "percent"), - (0xFF06, '&', "ampersand"), - (0xFF08, '(', "parenthesis-left"), - (0xFF09, ')', "parenthesis-right"), - (0xFF0A, '*', "asterisk-five"), - (0xFF10, '0', "digit-zero"), - (0xFF11, '1', "digit-one"), - (0xFF12, '2', "digit-two"), - (0xFF13, '3', "digit-three"), - (0xFF14, '4', "digit-four"), - (0xFF15, '5', "digit-five"), - (0xFF16, '6', "digit-six"), - (0xFF17, '7', "digit-seven"), - (0xFF18, '8', "digit-eight"), - (0xFF19, '9', "digit-nine"), - (0xFF1F, '?', "question-mark"), - (0xFF20, '@', "at-symbol"), - (0xFF21, 'A', "letter-A"), - (0xFF22, 'B', "letter-B"), - (0xFF23, 'C', "letter-C"), - (0xFF24, 'D', "letter-D"), - (0xFF25, 'E', "letter-E"), - (0xFF26, 'F', "letter-F"), - (0xFF27, 'G', "letter-G"), - (0xFF28, 'H', "letter-H"), - (0xFF29, 'I', "letter-I"), - (0xFF2A, 'J', "letter-J"), - (0xFF2B, 'K', "letter-K"), - (0xFF2C, 'L', "letter-L"), - (0xFF2D, 'M', "letter-M"), - (0xFF2E, 'N', "letter-N"), - (0xFF2F, 'O', "letter-O"), - (0xFF30, 'P', "letter-P"), - (0xFF31, 'Q', "letter-Q"), - (0xFF32, 'R', "letter-R"), - (0xFF33, 'S', "stack-window"), - (0xFF34, 'T', "letter-S"), - (0xFF35, 'U', "letter-T"), - (0xFF36, 'V', "letter-U"), - (0xFF37, 'W', "letter-V"), - (0xFF38, 'X', "letter-W"), - (0xFF39, 'Y', "letter-X"), - (0xFF3A, 'Z', "letter-Z"), - (0xFF3B, '[', "square-bracket-left"), - (0xFF3C, '\', "at"), - (0xFF3D, ']', "square-bracket-right"), - (0xFF41, 'a', "letter-a"), - (0xFF42, 'b', "letter-b"), - (0xFF43, 'c', "letter-c"), - (0xFF44, 'd', "letter-d"), - (0xFF45, 'e', "letter-e"), - (0xFF46, 'f', "letter-f"), - (0xFF47, 'g', "letter-g"), - (0xFF48, 'h', "letter-h"), - (0xFF49, 'i', "letter-i"), - (0xFF4A, 'j', "letter-j"), - (0xFF4B, 'k', "letter-k"), - (0xFF4C, 'l', "letter-l"), - (0xFF4D, 'm', "letter-m"), - (0xFF4E, 'n', "letter-n"), - (0xFF4F, 'o', "letter-o"), - (0xFF50, 'p', "letter-p"), - (0xFF51, 'q', "letter-q"), - (0xFF52, 'r', "letter-r"), - (0xFF53, 's', "letter-s"), - (0xFF54, 't', "letter-t"), - (0xFF55, 'u', "letter-u"), - (0xFF56, 'v', "letter-v"), - (0xFF57, 'w', "letter-w"), - (0xFF58, 'x', "letter-x"), - (0xFF59, 'y', "letter-y"), - (0xFF5A, 'z', "letter-z"), - (0xFF5B, '{', "brace-left"), - (0xFFE1, '£', "currency-pound"), - (0xFFE5, '¥', "yen"), - (0x1D11E, '𝄞', "g-clef"), - (0x1F004, '🀄', "mahjong tile red dragon"), - (0x1F0A1, '🂡', "ace-of-spades"), - (0x1F0B1, '🂱', "ace-of-hearts"), - (0x1F0C1, '🃁', "ace-of-diamonds"), - (0x1F0CF, '🃏', "playing card black joker"), - (0x1F0D1, '🃑', "ace-of-clubs"), - (0x1F170, '🅰', "negative squared latin capital letter a"), - (0x1F171, '🅱', "negative squared latin capital letter b"), - (0x1F17E, '🅾', "negative squared latin capital letter o"), - (0x1F17F, '🅿', "negative squared latin capital letter p"), - (0x1F18E, '🆎', "negative squared ab"), - (0x1F191, '🆑', "squared cl"), - (0x1F192, '🆒', "squared cool"), - (0x1F193, '🆓', "squared free"), - (0x1F194, '🆔', "squared id"), - (0x1F195, '🆕', "squared new"), - (0x1F196, '🆖', "squared ng"), - (0x1F197, '🆗', "squared ok"), - (0x1F198, '🆘', "squared sos"), - (0x1F199, '🆙', "squared up with exclamation mark"), - (0x1F19A, '🆚', "squared vs"), - (0x1F1E6, '🇦', "regional indicator symbol letter a"), - (0x1F1E7, '🇧', "regional indicator symbol letter b"), - (0x1F1E8, '🇨', "regional indicator symbol letter c"), - (0x1F1E9, '🇩', "regional indicator symbol letter d"), - (0x1F1EA, '🇪', "regional indicator symbol letter e"), - (0x1F1EB, '🇫', "regional indicator symbol letter f"), - (0x1F1EC, '🇬', "regional indicator symbol letter g"), - (0x1F1ED, '🇭', "regional indicator symbol letter h"), - (0x1F1EE, '🇮', "regional indicator symbol letter i"), - (0x1F1EF, '🇯', "regional indicator symbol letter j"), - (0x1F1F0, '🇰', "regional indicator symbol letter k"), - (0x1F1F1, '🇱', "regional indicator symbol letter l"), - (0x1F1F2, '🇲', "regional indicator symbol letter m"), - (0x1F1F3, '🇳', "regional indicator symbol letter n"), - (0x1F1F4, '🇴', "regional indicator symbol letter o"), - (0x1F1F5, '🇵', "regional indicator symbol letter p"), - (0x1F1F6, '🇶', "regional indicator symbol letter q"), - (0x1F1F7, '🇷', "regional indicator symbol letter r"), - (0x1F1F8, '🇸', "regional indicator symbol letter s"), - (0x1F1F9, '🇹', "regional indicator symbol letter t"), - (0x1F1FA, '🇺', "regional indicator symbol letter u"), - (0x1F1FB, '🇻', "regional indicator symbol letter v"), - (0x1F1FC, '🇼', "regional indicator symbol letter w"), - (0x1F1FD, '🇽', "regional indicator symbol letter x"), - (0x1F1FE, '🇾', "regional indicator symbol letter y"), - (0x1F1FF, '🇿', "regional indicator symbol letter z"), - (0x1F201, '🈁', "squared katakana koko"), - (0x1F202, '🈂', "squared katakana sa"), - (0x1F21A, '🈚', "squared cjk unified ideograph-7121"), - (0x1F22F, '🈯', "squared cjk unified ideograph-6307"), - (0x1F232, '🈲', "squared cjk unified ideograph-7981"), - (0x1F233, '🈳', "squared cjk unified ideograph-7a7a"), - (0x1F234, '🈴', "squared cjk unified ideograph-5408"), - (0x1F235, '🈵', "squared cjk unified ideograph-6e80"), - (0x1F236, '🈶', "squared cjk unified ideograph-6709"), - (0x1F237, '🈷', "squared cjk unified ideograph-6708"), - (0x1F238, '🈸', "squared cjk unified ideograph-7533"), - (0x1F239, '🈹', "squared cjk unified ideograph-5272"), - (0x1F23A, '🈺', "squared cjk unified ideograph-55b6"), - (0x1F250, '🉐', "circled ideograph advantage"), - (0x1F251, '🉑', "circled ideograph accept"), - (0x1F300, '🌀', "cyclone"), - (0x1F301, '🌁', "foggy"), - (0x1F302, '🌂', "closed umbrella"), - (0x1F303, '🌃', "night with stars"), - (0x1F304, '🌄', "sunrise over mountains"), - (0x1F305, '🌅', "sunrise"), - (0x1F306, '🌆', "cityscape at dusk"), - (0x1F307, '🌇', "sunset over buildings"), - (0x1F308, '🌈', "rainbow"), - (0x1F309, '🌉', "bridge at night"), - (0x1F30A, '🌊', "water wave / water-wave"), - (0x1F30B, '🌋', "volcano"), - (0x1F30C, '🌌', "milky way"), - (0x1F30D, '🌍', "earth globe europe-africa / globe2"), - (0x1F30E, '🌎', "earth globe americas"), - (0x1F30F, '🌏', "earth globe asia-australia"), - (0x1F310, '🌐', "globe with meridians / globe-meridians"), - (0x1F311, '🌑', "moon-new / new moon symbol"), - (0x1F312, '🌒', "moon-waxing-crescent / waxing crescent moon symbol"), - (0x1F313, '🌓', "first quarter moon symbol / moon-first-quarter"), - (0x1F314, '🌔', "moon-waxing-gibbous / waxing gibbous moon symbol"), - (0x1F315, '🌕', "full moon symbol / moon-full"), - (0x1F316, '🌖', "moon-waning-gibbous / waning gibbous moon symbol"), - (0x1F317, '🌗', "last quarter moon symbol / moon-last-quarter"), - (0x1F318, '🌘', "moon-waning-crescent / waning crescent moon symbol"), - (0x1F319, '🌙', "crescent moon"), - (0x1F31A, '🌚', "new moon with face"), - (0x1F31B, '🌛', "first quarter moon with face"), - (0x1F31C, '🌜', "last quarter moon with face"), - (0x1F31D, '🌝', "full moon with face"), - (0x1F31E, '🌞', "sun with face"), - (0x1F31F, '🌟', "glowing star"), - (0x1F320, '🌠', "shooting star / star-shooting"), - (0x1F330, '🌰', "chestnut"), - (0x1F331, '🌱', "seedling"), - (0x1F332, '🌲', "evergreen tree / tree-pine"), - (0x1F333, '🌳', "deciduous tree"), - (0x1F334, '🌴', "palm tree / tree-palm"), - (0x1F335, '🌵', "cactus"), - (0x1F337, '🌷', "tulip"), - (0x1F338, '🌸', "cherry blossom"), - (0x1F339, '🌹', "rose"), - (0x1F33A, '🌺', "hibiscus"), - (0x1F33B, '🌻', "sunflower"), - (0x1F33C, '🌼', "blossom"), - (0x1F33D, '🌽', "ear of maize"), - (0x1F33E, '🌾', "ear of rice"), - (0x1F33F, '🌿', "herb"), - (0x1F340, '🍀', "four leaf clover / four-leaf-clover"), - (0x1F341, '🍁', "maple leaf / maple-leaf"), - (0x1F342, '🍂', "fallen leaf"), - (0x1F343, '🍃', "leaf fluttering in wind"), - (0x1F344, '🍄', "mushroom"), - (0x1F345, '🍅', "tomato3"), - (0x1F346, '🍆', "aubergine"), - (0x1F347, '🍇', "grapes"), - (0x1F348, '🍈', "melon"), - (0x1F349, '🍉', "watermelon"), - (0x1F34A, '🍊', "tangerine"), - (0x1F34B, '🍋', "lemon"), - (0x1F34C, '🍌', "banana"), - (0x1F34D, '🍍', "pineapple"), - (0x1F34E, '🍎', "red apple"), - (0x1F34F, '🍏', "green apple"), - (0x1F350, '🍐', "pear"), - (0x1F351, '🍑', "peach"), - (0x1F352, '🍒', "cherries"), - (0x1F353, '🍓', "strawberry"), - (0x1F354, '🍔', "food-hamburger"), - (0x1F355, '🍕', "food-pizza / slice of pizza"), - (0x1F356, '🍖', "meat on bone"), - (0x1F357, '🍗', "chicken-leg / poultry leg"), - (0x1F358, '🍘', "rice cracker"), - (0x1F359, '🍙', "rice ball / rice-ball"), - (0x1F35A, '🍚', "cooked rice / food-rice"), - (0x1F35B, '🍛', "curry and rice"), - (0x1F35C, '🍜', "steaming bowl / steaming-bowl"), - (0x1F35D, '🍝', "food-spaghetti"), - (0x1F35E, '🍞', "bread"), - (0x1F35F, '🍟', "french fries"), - (0x1F360, '🍠', "roasted sweet potato"), - (0x1F361, '🍡', "dango"), - (0x1F362, '🍢', "oden"), - (0x1F363, '🍣', "sushi"), - (0x1F364, '🍤', "fried shrimp"), - (0x1F365, '🍥', "fish cake with swirl design"), - (0x1F366, '🍦', "soft ice cream"), - (0x1F367, '🍧', "shaved ice"), - (0x1F368, '🍨', "food-ice-cream / ice cream"), - (0x1F369, '🍩', "donut / doughnut"), - (0x1F36A, '🍪', "cookie / gingerbread"), - (0x1F36B, '🍫', "chocolate bar"), - (0x1F36C, '🍬', "candy"), - (0x1F36D, '🍭', "lollipop"), - (0x1F36E, '🍮', "custard"), - (0x1F36F, '🍯', "honey pot"), - (0x1F370, '🍰', "shortcake"), - (0x1F371, '🍱', "bento box"), - (0x1F372, '🍲', "pot of food / pot-food"), - (0x1F373, '🍳', "cooking"), - (0x1F374, '🍴', "fork and knife / fork-knife"), - (0x1F375, '🍵', "teacup without handle"), - (0x1F376, '🍶', "sake bottle and cup"), - (0x1F377, '🍷', "drink-wine / wine glass"), - (0x1F378, '🍸', "cocktail glass / drink-cocktail"), - (0x1F379, '🍹', "drink-tropical / tropical drink"), - (0x1F37A, '🍺', "beer mug / drink-beer"), - (0x1F37B, '🍻', "clinking beer mugs"), - (0x1F37C, '🍼', "baby bottle / baby-bottle"), - (0x1F37D, '🍽', "fork-knife-plate"), - (0x1F380, '🎀', "ribbon"), - (0x1F381, '🎁', "gift / wrapped present"), - (0x1F382, '🎂', "birthday cake"), - (0x1F383, '🎃', "jack-o-lantern"), - (0x1F384, '🎄', "christmas tree / christmas-tree"), - (0x1F385, '🎅', "face-santa-claus / father christmas"), - (0x1F386, '🎆', "fireworks"), - (0x1F387, '🎇', "firework sparkler"), - (0x1F388, '🎈', "balloon"), - (0x1F389, '🎉', "party popper"), - (0x1F38A, '🎊', "confetti ball"), - (0x1F38B, '🎋', "tanabata tree"), - (0x1F38C, '🎌', "crossed flags"), - (0x1F38D, '🎍', "pine decoration"), - (0x1F38E, '🎎', "japanese dolls"), - (0x1F38F, '🎏', "carp streamer"), - (0x1F390, '🎐', "wind chime"), - (0x1F391, '🎑', "moon viewing ceremony"), - (0x1F392, '🎒', "school satchel"), - (0x1F393, '🎓', "graduation cap"), - (0x1F396, '🎖', "medal-military"), - (0x1F39E, '🎞', "film"), - (0x1F39F, '🎟', "ticket"), - (0x1F3A0, '🎠', "carousel horse"), - (0x1F3A1, '🎡', "ferris wheel / ferris-wheel"), - (0x1F3A2, '🎢', "roller coaster / rollercoaster"), - (0x1F3A3, '🎣', "fishing pole and fish"), - (0x1F3A4, '🎤', "microphone"), - (0x1F3A5, '🎥', "camera-movie / movie camera"), - (0x1F3A6, '🎦', "cinema"), - (0x1F3A7, '🎧', "headphone"), - (0x1F3A8, '🎨', "artist palette"), - (0x1F3A9, '🎩', "top hat / tophat"), - (0x1F3AA, '🎪', "circus tent"), - (0x1F3AB, '🎫', "ticket"), - (0x1F3AC, '🎬', "clapper board / movie"), - (0x1F3AD, '🎭', "performing arts / performing-arts"), - (0x1F3AE, '🎮', "video game / videogame"), - (0x1F3AF, '🎯', "direct hit / target"), - (0x1F3B0, '🎰', "slot machine / slot-machine"), - (0x1F3B1, '🎱', "billiards"), - (0x1F3B2, '🎲', "game die"), - (0x1F3B3, '🎳', "bowling"), - (0x1F3B4, '🎴', "flower playing cards"), - (0x1F3B5, '🎵', "musical note"), - (0x1F3B6, '🎶', "multiple musical notes"), - (0x1F3B7, '🎷', "saxophone"), - (0x1F3B8, '🎸', "guitar"), - (0x1F3B9, '🎹', "musical keyboard / piano"), - (0x1F3BA, '🎺', "music-trumpet"), - (0x1F3BB, '🎻', "music-violin"), - (0x1F3BC, '🎼', "musical score"), - (0x1F3BD, '🎽', "running shirt with sash"), - (0x1F3BE, '🎾', "tennis racquet and ball"), - (0x1F3BF, '🎿', "ski and ski boot"), - (0x1F3C0, '🏀', "basketball and hoop"), - (0x1F3C1, '🏁', "chequered flag / flag-checkered"), - (0x1F3C2, '🏂', "snowboarder / snowboarding"), - (0x1F3C3, '🏃', "runner / running"), - (0x1F3C4, '🏄', "surfer"), - (0x1F3C5, '🏅', "medal-sports"), - (0x1F3C6, '🏆', "trophy"), - (0x1F3C7, '🏇', "horse racing"), - (0x1F3C8, '🏈', "american football / football-american"), - (0x1F3C9, '🏉', "rugby football"), - (0x1F3CA, '🏊', "swimmer / swimming"), - (0x1F3CB, '🏋', "weighlifting"), - (0x1F3CD, '🏍', "motorbike"), - (0x1F3E0, '🏠', "home / house building"), - (0x1F3E1, '🏡', "house with garden / volume-mute"), - (0x1F3E2, '🏢', "office building"), - (0x1F3E3, '🏣', "japanese post office"), - (0x1F3E4, '🏤', "european post office"), - (0x1F3E5, '🏥', "hospital"), - (0x1F3E6, '🏦', "bank"), - (0x1F3E7, '🏧', "automated teller machine"), - (0x1F3E8, '🏨', "hotel"), - (0x1F3E9, '🏩', "love hotel"), - (0x1F3EA, '🏪', "convenience store / convenience-store"), - (0x1F3EB, '🏫', "school"), - (0x1F3EC, '🏬', "department store"), - (0x1F3ED, '🏭', "factory"), - (0x1F3EE, '🏮', "izakaya lantern"), - (0x1F3EF, '🏯', "japanese castle"), - (0x1F3F0, '🏰', "european castle"), - (0x1F3F7, '🏷', "label"), - (0x1F400, '🐀', "rat"), - (0x1F401, '🐁', "mouse"), - (0x1F402, '🐂', "ox"), - (0x1F403, '🐃', "water buffalo"), - (0x1F404, '🐄', "animal-cow"), - (0x1F405, '🐅', "tiger"), - (0x1F406, '🐆', "leopard"), - (0x1F407, '🐇', "animal-rabbit"), - (0x1F408, '🐈', "animal-cat"), - (0x1F409, '🐉', "dragon"), - (0x1F40A, '🐊', "crocodile"), - (0x1F40B, '🐋', "whale"), - (0x1F40C, '🐌', "animal-snail"), - (0x1F40D, '🐍', "snake"), - (0x1F40E, '🐎', "animal-horse"), - (0x1F40F, '🐏', "ram"), - (0x1F410, '🐐', "animal-goat"), - (0x1F411, '🐑', "sheep"), - (0x1F412, '🐒', "monkey"), - (0x1F413, '🐓', "animal-rooster"), - (0x1F414, '🐔', "food-chicken"), - (0x1F415, '🐕', "dog"), - (0x1F416, '🐖', "animal-pig"), - (0x1F417, '🐗', "boar"), - (0x1F418, '🐘', "elephant"), - (0x1F419, '🐙', "octopus"), - (0x1F41A, '🐚', "spiral shell"), - (0x1F41B, '🐛', "animal-bug"), - (0x1F41C, '🐜', "animal-ant"), - (0x1F41D, '🐝', "honeybee"), - (0x1F41E, '🐞', "lady beetle"), - (0x1F41F, '🐟', "fish"), - (0x1F420, '🐠', "tropical fish"), - (0x1F421, '🐡', "blowfish"), - (0x1F422, '🐢', "turtle"), - (0x1F423, '🐣', "hatching chick"), - (0x1F424, '🐤', "baby chick"), - (0x1F425, '🐥', "front-facing baby chick"), - (0x1F426, '🐦', "bird"), - (0x1F427, '🐧', "linux / penguin"), - (0x1F428, '🐨', "koala"), - (0x1F429, '🐩', "poodle"), - (0x1F42A, '🐪', "animal-dromedary-camel"), - (0x1F42B, '🐫', "animal-bactrian-camel / bactrian camel"), - (0x1F42C, '🐬', "animal-dolphin"), - (0x1F42D, '🐭', "mouse face"), - (0x1F42E, '🐮', "cow face"), - (0x1F42F, '🐯', "tiger face"), - (0x1F430, '🐰', "rabbit face"), - (0x1F431, '🐱', "cat face / face-kitty"), - (0x1F432, '🐲', "dragon face"), - (0x1F433, '🐳', "spouting whale"), - (0x1F434, '🐴', "horse face"), - (0x1F435, '🐵', "face-monkey / monkey face"), - (0x1F436, '🐶', "dog face / face-chihuahua"), - (0x1F437, '🐷', "pig face"), - (0x1F438, '🐸', "frog face"), - (0x1F439, '🐹', "face-hamster / hamster face"), - (0x1F43A, '🐺', "wolf face"), - (0x1F43B, '🐻', "bear face / face-bear"), - (0x1F43C, '🐼', "panda face"), - (0x1F43D, '🐽', "pig nose"), - (0x1F43E, '🐾', "paw prints / paw-prints"), - (0x1F440, '👀', "eyes"), - (0x1F441, '👁', "eye"), - (0x1F442, '👂', "ear"), - (0x1F443, '👃', "nose"), - (0x1F444, '👄', "mouth"), - (0x1F445, '👅', "tongue"), - (0x1F446, '👆', "white up pointing backhand index"), - (0x1F447, '👇', "white down pointing backhand index"), - (0x1F448, '👈', "white left pointing backhand index"), - (0x1F449, '👉', "white right pointing backhand index"), - (0x1F44A, '👊', "fisted hand sign"), - (0x1F44B, '👋', "waving hand sign"), - (0x1F44C, '👌', "ok hand sign"), - (0x1F44D, '👍', "thumbs up sign / thumbs-up"), - (0x1F44E, '👎', "thumbs down sign / thumbs-down"), - (0x1F44F, '👏', "clapping hands sign"), - (0x1F450, '👐', "open hands sign"), - (0x1F451, '👑', "crown"), - (0x1F452, '👒', "womans hat"), - (0x1F453, '👓', "eyeglasses"), - (0x1F454, '👔', "outfit-necktie"), - (0x1F455, '👕', "outfit-shirt"), - (0x1F456, '👖', "jeans"), - (0x1F457, '👗', "outfit-dress"), - (0x1F458, '👘', "kimono"), - (0x1F459, '👙', "outfit-bikini"), - (0x1F45A, '👚', "womans clothes"), - (0x1F45B, '👛', "purse"), - (0x1F45C, '👜', "handbag"), - (0x1F45D, '👝', "pouch"), - (0x1F45E, '👞', "mans shoe"), - (0x1F45F, '👟', "athletic shoe"), - (0x1F460, '👠', "high-heeled shoe / high-heeled-shoes"), - (0x1F461, '👡', "sandals / womans sandal"), - (0x1F462, '👢', "womans boots"), - (0x1F463, '👣', "footprints"), - (0x1F464, '👤', "bust in silhouette / user"), - (0x1F465, '👥', "busts in silhouette / users"), - (0x1F466, '👦', "face-boy"), - (0x1F467, '👧', "face-girl"), - (0x1F468, '👨', "face-man"), - (0x1F469, '👩', "face-woman"), - (0x1F46A, '👪', "family"), - (0x1F46B, '👫', "man and woman holding hands / man-and-woman"), - (0x1F46C, '👬', "man-and-man / two men holding hands"), - (0x1F46D, '👭', "two women holding hands / woman-and-woman"), - (0x1F46E, '👮', "police officer"), - (0x1F46F, '👯', "woman with bunny ears"), - (0x1F470, '👰', "bride with veil"), - (0x1F471, '👱', "person with blond hair"), - (0x1F472, '👲', "man with gua pi mao"), - (0x1F473, '👳', "face-man-with-turban / man with turban"), - (0x1F474, '👴', "face-old-chinese-man / older man"), - (0x1F475, '👵', "older woman"), - (0x1F476, '👶', "face-baby"), - (0x1F477, '👷', "construction worker / construction-worker"), - (0x1F478, '👸', "face-princess"), - (0x1F479, '👹', "japanese ogre"), - (0x1F47A, '👺', "japanese goblin"), - (0x1F47B, '👻', "ghost"), - (0x1F47C, '👼', "baby angel"), - (0x1F47D, '👽', "extraterrestrial alien"), - (0x1F47E, '👾', "alien monster"), - (0x1F47F, '👿', "imp"), - (0x1F480, '💀', "skull"), - (0x1F481, '💁', "face-callcenter / information desk person"), - (0x1F482, '💂', "guardsman"), - (0x1F483, '💃', "dancer / dancing"), - (0x1F484, '💄', "lipstick"), - (0x1F485, '💅', "nail polish"), - (0x1F486, '💆', "face massage"), - (0x1F487, '💇', "haircut"), - (0x1F488, '💈', "barber pole"), - (0x1F489, '💉', "syringe"), - (0x1F48A, '💊', "pill"), - (0x1F48B, '💋', "kiss mark"), - (0x1F48C, '💌', "love letter"), - (0x1F48D, '💍', "ring"), - (0x1F48E, '💎', "diamond / gem stone"), - (0x1F48F, '💏', "kiss"), - (0x1F490, '💐', "bouquet"), - (0x1F491, '💑', "couple with heart"), - (0x1F492, '💒', "wedding"), - (0x1F493, '💓', "beating heart / heart-beating"), - (0x1F494, '💔', "broken heart / heart-broken"), - (0x1F495, '💕', "two hearts"), - (0x1F496, '💖', "sparkling heart"), - (0x1F497, '💗', "growing heart"), - (0x1F498, '💘', "heart with arrow / heart-with-arrow"), - (0x1F499, '💙', "blue heart"), - (0x1F49A, '💚', "green heart"), - (0x1F49B, '💛', "yellow heart"), - (0x1F49C, '💜', "purple heart"), - (0x1F49D, '💝', "heart with ribbon / heart-ribbon"), - (0x1F49E, '💞', "revolving hearts"), - (0x1F49F, '💟', "heart decoration"), - (0x1F4A0, '💠', "diamond shape with a dot inside"), - (0x1F4A1, '💡', "electric light bulb / lightbulb"), - (0x1F4A2, '💢', "anger symbol"), - (0x1F4A3, '💣', "bomb"), - (0x1F4A4, '💤', "sleeping symbol"), - (0x1F4A5, '💥', "collision symbol / explosion"), - (0x1F4A6, '💦', "splashing sweat symbol"), - (0x1F4A7, '💧', "droplet"), - (0x1F4A8, '💨', "dash symbol"), - (0x1F4A9, '💩', "pile of poo"), - (0x1F4AA, '💪', "flexed biceps"), - (0x1F4AB, '💫', "dizzy symbol"), - (0x1F4AC, '💬', "speech balloon / speech-bubble"), - (0x1F4AD, '💭', "thought balloon"), - (0x1F4AE, '💮', "white flower"), - (0x1F4AF, '💯', "hundred points symbol"), - (0x1F4B0, '💰', "money bag / money-bag"), - (0x1F4B1, '💱', "currency exchange / currency-exchange"), - (0x1F4B2, '💲', "heavy dollar sign"), - (0x1F4B3, '💳', "credit card / creditcard"), - (0x1F4B4, '💴', "banknote with yen sign"), - (0x1F4B5, '💵', "banknote with dollar sign"), - (0x1F4B6, '💶', "banknote with euro sign"), - (0x1F4B7, '💷', "banknote with pound sign"), - (0x1F4B8, '💸', "money with wings"), - (0x1F4B9, '💹', "chart with upwards trend and yen sign"), - (0x1F4BA, '💺', "chair / seat"), - (0x1F4BB, '💻', "laptop / personal computer"), - (0x1F4BC, '💼', "briefcase / suitcase"), - (0x1F4BD, '💽', "minidisc"), - (0x1F4BE, '💾', "floppy disk"), - (0x1F4BF, '💿', "disk / optical disc"), - (0x1F4C0, '📀', "dvd"), - (0x1F4C1, '📁', "file folder"), - (0x1F4C2, '📂', "open file folder"), - (0x1F4C3, '📃', "page with curl"), - (0x1F4C4, '📄', "page facing up"), - (0x1F4C5, '📅', "calendar-month"), - (0x1F4C6, '📆', "calendar-day / tear-off calendar"), - (0x1F4C7, '📇', "card index"), - (0x1F4C8, '📈', "chart with upwards trend / chart-up"), - (0x1F4C9, '📉', "chart with downwards trend / chart-down"), - (0x1F4CA, '📊', "bar chart"), - (0x1F4CB, '📋', "clipboard"), - (0x1F4CC, '📌', "pushpin"), - (0x1F4CD, '📍', "round pushpin"), - (0x1F4CE, '📎', "paperclip"), - (0x1F4CF, '📏', "ruler2 / straight ruler"), - (0x1F4D0, '📐', "triangular ruler"), - (0x1F4D1, '📑', "bookmark tabs"), - (0x1F4D2, '📒', "addressbook / ledger"), - (0x1F4D3, '📓', "notebook"), - (0x1F4D4, '📔', "notebook with decorative cover"), - (0x1F4D5, '📕', "closed book"), - (0x1F4D6, '📖', "book-open / open book"), - (0x1F4D7, '📗', "green book"), - (0x1F4D8, '📘', "blue book"), - (0x1F4D9, '📙', "orange book"), - (0x1F4DA, '📚', "books"), - (0x1F4DB, '📛', "name badge"), - (0x1F4DC, '📜', "scroll"), - (0x1F4DD, '📝', "memo"), - (0x1F4DE, '📞', "phone-receiver / telephone receiver"), - (0x1F4DF, '📟', "pager"), - (0x1F4E0, '📠', "fax machine"), - (0x1F4E1, '📡', "satellite antenna / satellite-disk"), - (0x1F4E2, '📢', "public address loudspeaker"), - (0x1F4E3, '📣', "cheering megaphone"), - (0x1F4E4, '📤', "outbox tray"), - (0x1F4E5, '📥', "inbox tray"), - (0x1F4E6, '📦', "package"), - (0x1F4E7, '📧', "e-mail symbol"), - (0x1F4E8, '📨', "incoming envelope"), - (0x1F4E9, '📩', "envelope with downwards arrow above"), - (0x1F4EA, '📪', "closed mailbox with lowered flag"), - (0x1F4EB, '📫', "closed mailbox with raised flag"), - (0x1F4EC, '📬', "open mailbox with raised flag"), - (0x1F4ED, '📭', "open mailbox with lowered flag"), - (0x1F4EE, '📮', "postbox"), - (0x1F4EF, '📯', "postal horn"), - (0x1F4F0, '📰', "newspaper"), - (0x1F4F1, '📱', "mobile phone / phone-mobile"), - (0x1F4F2, '📲', "mobile phone with rightwards arrow at left"), - (0x1F4F3, '📳', "vibration mode"), - (0x1F4F4, '📴', "mobile phone off"), - (0x1F4F5, '📵', "no mobile phones"), - (0x1F4F6, '📶', "antenna with bars"), - (0x1F4F7, '📷', "photo-camera"), - (0x1F4F8, '📸', "photo-camera-flash"), - (0x1F4F9, '📹', "video camera / video-camera"), - (0x1F4FA, '📺', "television"), - (0x1F4FB, '📻', "radio"), - (0x1F4FC, '📼', "videocassette"), - (0x1F4FD, '📽', "projector"), - (0x1F4FE, '📾', "music-player"), - (0x1F500, '🔀', "shuffle / twisted rightwards arrows"), - (0x1F501, '🔁', "clockwise rightwards and leftwards open circle arrows / loop"), - (0x1F502, '🔂', "clockwise rightwards and leftwards open circle arrows with circled one overlay"), - (0x1F503, '🔃', "clockwise downwards and upwards open circle arrows / loop-alt"), - (0x1F504, '🔄', "anticlockwise downwards and upwards open circle arrows"), - (0x1F505, '🔅', "low brightness symbol"), - (0x1F506, '🔆', "high brightness symbol"), - (0x1F507, '🔇', "speaker with cancellation stroke"), - (0x1F508, '🔈', "speaker / volume"), - (0x1F509, '🔉', "speaker with one sound wave / volume-low"), - (0x1F50A, '🔊', "speaker with three sound waves / volume-high"), - (0x1F50B, '🔋', "battery"), - (0x1F50C, '🔌', "electric plug / electric-cord"), - (0x1F50D, '🔍', "left-pointing magnifying glass / search-left"), - (0x1F50E, '🔎', "right-pointing magnifying glass / search-right"), - (0x1F50F, '🔏', "lock with ink pen"), - (0x1F510, '🔐', "closed lock with key"), - (0x1F511, '🔑', "key"), - (0x1F512, '🔒', "lock"), - (0x1F513, '🔓', "lock-open / open lock"), - (0x1F514, '🔔', "bell"), - (0x1F515, '🔕', "bell with cancellation stroke"), - (0x1F516, '🔖', "bookmark"), - (0x1F517, '🔗', "link symbol"), - (0x1F518, '🔘', "radio button / radio-checked"), - (0x1F519, '🔙', "back with leftwards arrow above"), - (0x1F51A, '🔚', "end with leftwards arrow above"), - (0x1F51B, '🔛', "on with exclamation mark with left right arrow above"), - (0x1F51C, '🔜', "soon with rightwards arrow above"), - (0x1F51D, '🔝', "top with upwards arrow above"), - (0x1F51E, '🔞', "no one under eighteen symbol"), - (0x1F51F, '🔟', "keycap ten"), - (0x1F520, '🔠', "input symbol for latin capital letters"), - (0x1F521, '🔡', "input symbol for latin small letters"), - (0x1F522, '🔢', "input symbol for numbers"), - (0x1F523, '🔣', "input symbol for symbols"), - (0x1F524, '🔤', "input symbol for latin letters"), - (0x1F525, '🔥', "fire"), - (0x1F526, '🔦', "electric torch / flashlight"), - (0x1F527, '🔧', "wrench"), - (0x1F528, '🔨', "hammer"), - (0x1F529, '🔩', "nut and bolt / nut-and-bolt"), - (0x1F52A, '🔪', "hocho / knife"), - (0x1F52B, '🔫', "pistol"), - (0x1F52C, '🔬', "microscope"), - (0x1F52D, '🔭', "telescope"), - (0x1F52E, '🔮', "crystal ball"), - (0x1F52F, '🔯', "six pointed star with middle dot"), - (0x1F530, '🔰', "japanese symbol for beginner"), - (0x1F531, '🔱', "trident emblem"), - (0x1F532, '🔲', "black square button"), - (0x1F533, '🔳', "white square button"), - (0x1F534, '🔴', "large red circle"), - (0x1F535, '🔵', "large blue circle"), - (0x1F536, '🔶', "large orange diamond"), - (0x1F537, '🔷', "large blue diamond"), - (0x1F538, '🔸', "small orange diamond"), - (0x1F539, '🔹', "small blue diamond"), - (0x1F53A, '🔺', "up-pointing red triangle"), - (0x1F53B, '🔻', "down-pointing red triangle"), - (0x1F53C, '🔼', "up-pointing small red triangle"), - (0x1F53D, '🔽', "down-pointing small red triangle"), - (0x1F542, '🕂', "cross-pommee"), - (0x1F548, '🕈', "celtic-cross"), - (0x1F549, '🕉', "om"), - (0x1F54A, '🕊', "peace-dove"), - (0x1F550, '🕐', "clock face one oclock"), - (0x1F551, '🕑', "clock face two oclock"), - (0x1F552, '🕒', "clock face three oclock"), - (0x1F553, '🕓', "clock face four oclock"), - (0x1F554, '🕔', "clock face five oclock"), - (0x1F555, '🕕', "clock face six oclock"), - (0x1F556, '🕖', "clock face seven oclock"), - (0x1F557, '🕗', "clock face eight oclock"), - (0x1F558, '🕘', "clock face nine oclock"), - (0x1F559, '🕙', "clock face ten oclock"), - (0x1F55A, '🕚', "clock face eleven oclock"), - (0x1F55B, '🕛', "clock face twelve oclock"), - (0x1F55C, '🕜', "clock face one-thirty"), - (0x1F55D, '🕝', "clock face two-thirty"), - (0x1F55E, '🕞', "clock face three-thirty"), - (0x1F55F, '🕟', "clock face four-thirty"), - (0x1F560, '🕠', "clock face five-thirty"), - (0x1F561, '🕡', "clock face six-thirty"), - (0x1F562, '🕢', "clock face seven-thirty"), - (0x1F563, '🕣', "clock face eight-thirty"), - (0x1F564, '🕤', "clock face nine-thirty"), - (0x1F565, '🕥', "clock face ten-thirty"), - (0x1F566, '🕦', "clock face eleven-thirty"), - (0x1F567, '🕧', "clock face twelve-thirty"), - (0x1F56B, '🕫', "bullhorn"), - (0x1F56F, '🕯', "candle"), - (0x1F571, '🕱', "death"), - (0x1F575, '🕵', "spy"), - (0x1F576, '🕶', "sunglasses"), - (0x1F577, '🕷', "spider"), - (0x1F578, '🕸', "spider7-web"), - (0x1F579, '🕹', "joystick"), - (0x1F583, '🖃', "envelope-stamped"), - (0x1F58A, '🖊', "pen"), - (0x1F5A5, '🖥', "pc-desktop"), - (0x1F5A7, '🖧', "computer-network"), - (0x1F5A9, '🖩', "calculator"), - (0x1F5AD, '🖭', "tape"), - (0x1F5AE, '🖮', "keyboard"), - (0x1F5B1, '🖱', "mouse"), - (0x1F5B3, '🖳', "pc-old"), - (0x1F5B4, '🖴', "hard-disk"), - (0x1F5B5, '🖵', "monitor"), - (0x1F5B6, '🖶', "printer"), - (0x1F5B9, '🖹', "file-text"), - (0x1F5BB, '🖻', "file-image"), - (0x1F5BC, '🖼', "picture"), - (0x1F5C0, '🗀', "folder"), - (0x1F5C1, '🗁', "folder-open"), - (0x1F5C4, '🗄', "cabinet"), - (0x1F5CA, '🗊', "notepad"), - (0x1F5CB, '🗋', "file"), - (0x1F5D0, '🗐', "copy"), - (0x1F5D1, '🗑', "garbage-can"), - (0x1F5D5, '🗕', "minimize"), - (0x1F5D6, '🗖', "maximize-window"), - (0x1F5D9, '🗙', "cancel"), - (0x1F5DB, '🗛', "font-size"), - (0x1F5DD, '🗝', "key-alt"), - (0x1F5E0, '🗠', "chart-line"), - (0x1F5E1, '🗡', "dagger"), - (0x1F5FA, '🗺', "world-map"), - (0x1F5FB, '🗻', "mount fuji"), - (0x1F5FC, '🗼', "tokyo tower"), - (0x1F5FD, '🗽', "statue of liberty"), - (0x1F5FE, '🗾', "silhouette of japan"), - (0x1F5FF, '🗿', "moyai"), - (0x1F600, '😀', "grinning face"), - (0x1F601, '😁', "grinning face with smiling eyes"), - (0x1F602, '😂', "face with tears of joy"), - (0x1F603, '😃', "smiley-happy / smiling face with open mouth"), - (0x1F604, '😄', "smiley-grin / smiling face with open mouth and smiling eyes"), - (0x1F605, '😅', "smiling face with open mouth and cold sweat"), - (0x1F606, '😆', "smiling face with open mouth and tightly-closed eyes"), - (0x1F607, '😇', "smiling face with halo"), - (0x1F608, '😈', "smiley-evil / smiling face with horns"), - (0x1F609, '😉', "winking face"), - (0x1F60A, '😊', "smiling face with smiling eyes"), - (0x1F60B, '😋', "face savouring delicious food"), - (0x1F60C, '😌', "relieved face"), - (0x1F60D, '😍', "smiling face with heart-shaped eyes"), - (0x1F60E, '😎', "smiley-cool / smiling face with sunglasses"), - (0x1F60F, '😏', "smirking face"), - (0x1F610, '😐', "neutral face"), - (0x1F611, '😑', "expressionless face"), - (0x1F612, '😒', "unamused face"), - (0x1F613, '😓', "face with cold sweat"), - (0x1F614, '😔', "pensive face"), - (0x1F615, '😕', "confused face"), - (0x1F616, '😖', "confounded face"), - (0x1F617, '😗', "kissing face"), - (0x1F618, '😘', "face throwing a kiss"), - (0x1F619, '😙', "kissing face with smiling eyes"), - (0x1F61A, '😚', "kissing face with closed eyes"), - (0x1F61B, '😛', "face with stuck-out tongue"), - (0x1F61C, '😜', "face with stuck-out tongue and winking eye"), - (0x1F61D, '😝', "face with stuck-out tongue and tightly-closed eyes"), - (0x1F61E, '😞', "disappointed face"), - (0x1F61F, '😟', "worried face"), - (0x1F620, '😠', "angry face"), - (0x1F621, '😡', "pouting face"), - (0x1F622, '😢', "crying face"), - (0x1F623, '😣', "persevering face"), - (0x1F624, '😤', "face with look of triumph"), - (0x1F625, '😥', "disappointed but relieved face"), - (0x1F626, '😦', "frowning face with open mouth"), - (0x1F627, '😧', "anguished face"), - (0x1F628, '😨', "fearful face"), - (0x1F629, '😩', "weary face"), - (0x1F62A, '😪', "sleepy face"), - (0x1F62B, '😫', "tired face"), - (0x1F62C, '😬', "grimacing face"), - (0x1F62D, '😭', "loudly crying face"), - (0x1F62E, '😮', "face with open mouth"), - (0x1F62F, '😯', "hushed face"), - (0x1F630, '😰', "face with open mouth and cold sweat"), - (0x1F631, '😱', "face screaming in fear"), - (0x1F632, '😲', "astonished face"), - (0x1F633, '😳', "flushed face"), - (0x1F634, '😴', "sleeping face"), - (0x1F635, '😵', "dizzy face"), - (0x1F636, '😶', "face without mouth"), - (0x1F637, '😷', "face with medical mask"), - (0x1F638, '😸', "grinning cat face with smiling eyes"), - (0x1F639, '😹', "cat face with tears of joy"), - (0x1F63A, '😺', "smiling cat face with open mouth"), - (0x1F63B, '😻', "smiling cat face with heart-shaped eyes"), - (0x1F63C, '😼', "cat face with wry smile"), - (0x1F63D, '😽', "kissing cat face with closed eyes"), - (0x1F63E, '😾', "pouting cat face"), - (0x1F63F, '😿', "crying cat face"), - (0x1F640, '🙀', "weary cat face"), - (0x1F645, '🙅', "face with no good gesture"), - (0x1F646, '🙆', "face with ok gesture"), - (0x1F647, '🙇', "person bowing deeply"), - (0x1F648, '🙈', "see-no-evil monkey"), - (0x1F649, '🙉', "hear-no-evil monkey"), - (0x1F64A, '🙊', "speak-no-evil monkey"), - (0x1F64B, '🙋', "happy person raising one hand"), - (0x1F64C, '🙌', "person raising both hands in celebration"), - (0x1F64D, '🙍', "person frowning"), - (0x1F64E, '🙎', "person with pouting face"), - (0x1F64F, '🙏', "person with folded hands"), - (0x1F680, '🚀', "rocket"), - (0x1F681, '🚁', "helicopter"), - (0x1F682, '🚂', "steam locomotive"), - (0x1F683, '🚃', "railway car"), - (0x1F684, '🚄', "high-speed train"), - (0x1F685, '🚅', "high-speed train with bullet nose"), - (0x1F686, '🚆', "train"), - (0x1F687, '🚇', "metro"), - (0x1F688, '🚈', "light rail"), - (0x1F689, '🚉', "station"), - (0x1F68A, '🚊', "tram"), - (0x1F68B, '🚋', "tram car"), - (0x1F68C, '🚌', "bus"), - (0x1F68D, '🚍', "bus-front / oncoming bus"), - (0x1F68E, '🚎', "trolleybus"), - (0x1F68F, '🚏', "bus stop"), - (0x1F690, '🚐', "minibus"), - (0x1F691, '🚑', "ambulance"), - (0x1F692, '🚒', "fire engine"), - (0x1F693, '🚓', "police car"), - (0x1F694, '🚔', "oncoming police car"), - (0x1F695, '🚕', "taxi"), - (0x1F696, '🚖', "oncoming taxi"), - (0x1F697, '🚗', "automobile / car"), - (0x1F698, '🚘', "car-front"), - (0x1F699, '🚙', "recreational vehicle"), - (0x1F69A, '🚚', "delivery truck"), - (0x1F69B, '🚛', "articulated lorry"), - (0x1F69C, '🚜', "tractor"), - (0x1F69D, '🚝', "monorail"), - (0x1F69E, '🚞', "mountain railway"), - (0x1F69F, '🚟', "suspension railway"), - (0x1F6A0, '🚠', "mountain cableway"), - (0x1F6A1, '🚡', "aerial tramway"), - (0x1F6A2, '🚢', "ship"), - (0x1F6A3, '🚣', "rowboat"), - (0x1F6A4, '🚤', "speedboat"), - (0x1F6A5, '🚥', "horizontal traffic light"), - (0x1F6A6, '🚦', "traffic-light / vertical traffic light"), - (0x1F6A7, '🚧', "construction sign"), - (0x1F6A8, '🚨', "police cars revolving light"), - (0x1F6A9, '🚩', "triangular flag on post"), - (0x1F6AA, '🚪', "door"), - (0x1F6AB, '🚫', "forbidden / no entry sign"), - (0x1F6AC, '🚬', "smoking symbol"), - (0x1F6AD, '🚭', "no smoking symbol / smoking-forbidden"), - (0x1F6AE, '🚮', "put litter in its place symbol"), - (0x1F6AF, '🚯', "do not litter symbol"), - (0x1F6B0, '🚰', "potable water symbol"), - (0x1F6B1, '🚱', "non-potable water symbol"), - (0x1F6B2, '🚲', "bicycle"), - (0x1F6B3, '🚳', "no bicycles"), - (0x1F6B4, '🚴', "bicyclist"), - (0x1F6B5, '🚵', "mountain bicyclist"), - (0x1F6B6, '🚶', "pedestrian"), - (0x1F6B7, '🚷', "no pedestrians"), - (0x1F6B8, '🚸', "children crossing"), - (0x1F6B9, '🚹', "mens symbol"), - (0x1F6BA, '🚺', "womens symbol"), - (0x1F6BB, '🚻', "restroom"), - (0x1F6BC, '🚼', "baby symbol"), - (0x1F6BD, '🚽', "toilet"), - (0x1F6BE, '🚾', "water closet"), - (0x1F6BF, '🚿', "shower"), - (0x1F6C0, '🛀', "bath"), - (0x1F6C1, '🛁', "bathtub"), - (0x1F6C2, '🛂', "passport control / passport-control"), - (0x1F6C3, '🛃', "customs"), - (0x1F6C4, '🛄', "baggage claim"), - (0x1F6C5, '🛅', "left luggage / left-luggage"), - (0x1F6E0, '🛠', "hammer-wrench"), - (0x1F6E1, '🛡', "shield"), - - // Private use area extensions: - (0xFE4E5, '󾓥', "flag japan"), - (0xFE4E6, '󾓦', "flag usa"), - (0xFE4E7, '󾓧', "flag"), - (0xFE4E8, '󾓨', "flag"), - (0xFE4E9, '󾓩', "flag"), - (0xFE4EA, '󾓪', "flag great britain"), - (0xFE4EB, '󾓫', "flag"), - (0xFE4EC, '󾓬', "flag"), - (0xFE4ED, '󾓭', "flag"), - (0xFE4EE, '󾓮', "flag south korea"), - (0xFE82C, '󾠬', "number sign in square"), - (0xFE82E, '󾠮', "digit one in square"), - (0xFE82F, '󾠯', "digit two in square"), - (0xFE830, '󾠰', "digit three in square"), - (0xFE831, '󾠱', "digit four in square"), - (0xFE832, '󾠲', "digit five in square"), - (0xFE833, '󾠳', "digit six in square"), - (0xFE834, '󾠴', "digit seven in square"), - (0xFE835, '󾠵', "digit eight in square"), - (0xFE836, '󾠶', "digit nine in square"), - (0xFE837, '󾠷', "digit zero in square"), - - // Web services / operating systems :/ browsers - (0xE600, '', "web-dribbble"), - (0xE601, '', "web-stackoverflow"), - (0xE602, '', "web-vimeo"), - (0xE603, '', "web-twitter"), - (0xE604, '', "web-facebook"), - (0xE605, '', "web-googleplus"), - (0xE606, '', "web-pinterest"), - (0xE607, '', "web-tumblr"), - (0xE608, '', "web-linkedin"), - (0xE60A, '', "web-stumbleupon"), - (0xE60B, '', "web-lastfm"), - (0xE60C, '', "web-rdio"), - (0xE60D, '', "web-spotify"), - (0xE60E, '', "web-qq"), - (0xE60F, '', "web-instagram"), - (0xE610, '', "web-dropbox"), - (0xE611, '', "web-evernote"), - (0xE612, '', "web-flattr"), - (0xE613, '', "web-skype"), - (0xE614, '', "web-renren"), - (0xE615, '', "web-sina-weibo"), - (0xE616, '', "web-paypal"), - (0xE617, '', "web-picasa"), - (0xE618, '', "os-android"), - (0xE619, '', "web-mixi"), - (0xE61A, '', "web-behance"), - (0xE61B, '', "web-circles"), - (0xE61C, '', "web-vk"), - (0xE61D, '', "web-smashing"), - (0xE61E, '', "web-forrst"), - (0xE61F, '', "os-windows"), - (0xE620, '', "web-flickr"), - (0xE621, '', "web-picassa"), - (0xE622, '', "web-deviantart"), - (0xE623, '', "web-steam"), - (0xE624, '', "web-github"), - (0xE625, '', "web-git"), - (0xE626, '', "web-blogger"), - (0xE627, '', "web-soundcloud"), - (0xE628, '', "web-reddit"), - (0xE629, '', "web-delicious"), - (0xE62A, '', "browser-chrome"), - (0xE62B, '', "browser-firefox"), - (0xE62C, '', "browser-ie"), - (0xE62D, '', "browser-opera"), - (0xE62E, '', "browser-safari"), - (0xE62F, '', "web-google-drive"), - (0xE630, '', "web-wordpress"), - (0xE631, '', "web-joomla"), - (0xE632, '', "lastfm"), - (0xE633, '', "web-foursquare"), - (0xE634, '', "web-yelp"), - (0xE635, '', "web-drupal"), - (0xE636, '', "youtube"), - (0xF189, '', "vk"), - (0xF1A6, '', "digg"), - (0xF1CA, '', "web-vine"), - (0xF8FF, '', "os-apple"), -]; diff --git a/egui_demo_lib/src/apps/demo/font_contents_ubuntu.rs b/egui_demo_lib/src/apps/demo/font_contents_ubuntu.rs deleted file mode 100644 index 24531933..00000000 --- a/egui_demo_lib/src/apps/demo/font_contents_ubuntu.rs +++ /dev/null @@ -1,1191 +0,0 @@ -/// A list of all codepoints available in `Ubuntu-Light.ttf` -#[rustfmt::skip] -pub const UBUNTU_FONT_CHARACTERS: &[(u32, char, &str)] = &[ - (0x21, '!', "exclamation mark"), - (0x22, '"', "quotation mark"), - (0x23, '#', "number sign"), - (0x24, '$', "dollar sign"), - (0x25, '%', "percent sign"), - (0x26, '&', "ampersand"), - (0x27, '\'', "apostrophe"), - (0x28, '(', "left parenthesis"), - (0x29, ')', "right parenthesis"), - (0x2A, '*', "asterisk"), - (0x2B, '+', "plus sign"), - (0x2C, ',', "comma"), - (0x2D, '-', "hyphen-minus"), - (0x2E, '.', "full stop"), - (0x2F, '/', "solidus (slash)"), - (0x30, '0', "digit zero"), - (0x31, '1', "digit one"), - (0x32, '2', "digit two"), - (0x33, '3', "digit three"), - (0x34, '4', "digit four"), - (0x35, '5', "digit five"), - (0x36, '6', "digit six"), - (0x37, '7', "digit seven"), - (0x38, '8', "digit eight"), - (0x39, '9', "digit nine"), - (0x3A, ':', "colon"), - (0x3B, ';', "semicolon"), - (0x3C, '<', "less-than sign"), - (0x3D, '=', "equals sign"), - (0x3E, '>', "greater-than sign"), - (0x3F, '?', "question mark"), - (0x40, '@', "commercial at"), - (0x41, 'A', "latin capital letter a"), - (0x42, 'B', "latin capital letter b"), - (0x43, 'C', "latin capital letter c"), - (0x44, 'D', "latin capital letter d"), - (0x45, 'E', "latin capital letter e"), - (0x46, 'F', "latin capital letter f"), - (0x47, 'G', "latin capital letter g"), - (0x48, 'H', "latin capital letter h"), - (0x49, 'I', "latin capital letter i"), - (0x4A, 'J', "latin capital letter j"), - (0x4B, 'K', "latin capital letter k"), - (0x4C, 'L', "latin capital letter l"), - (0x4D, 'M', "latin capital letter m"), - (0x4E, 'N', "latin capital letter n"), - (0x4F, 'O', "latin capital letter o"), - (0x50, 'P', "latin capital letter p"), - (0x51, 'Q', "latin capital letter q"), - (0x52, 'R', "latin capital letter r"), - (0x53, 'S', "latin capital letter s"), - (0x54, 'T', "latin capital letter t"), - (0x55, 'U', "latin capital letter u"), - (0x56, 'V', "latin capital letter v"), - (0x57, 'W', "latin capital letter w"), - (0x58, 'X', "latin capital letter x"), - (0x59, 'Y', "latin capital letter y"), - (0x5A, 'Z', "latin capital letter z"), - (0x5B, '[', "left square bracket"), - (0x5C, '\\', "reverse solidus (backslash)"), - (0x5D, ']', "right square bracket"), - (0x5E, '^', "circumflex accent"), - (0x5F, '_', "low line"), - (0x60, '`', "grave accent"), - (0x61, 'a', "latin small letter a"), - (0x62, 'b', "latin small letter b"), - (0x63, 'c', "latin small letter c"), - (0x64, 'd', "latin small letter d"), - (0x65, 'e', "latin small letter e"), - (0x66, 'f', "latin small letter f"), - (0x67, 'g', "latin small letter g"), - (0x68, 'h', "latin small letter h"), - (0x69, 'i', "latin small letter i"), - (0x6A, 'j', "latin small letter j"), - (0x6B, 'k', "latin small letter k"), - (0x6C, 'l', "latin small letter l"), - (0x6D, 'm', "latin small letter m"), - (0x6E, 'n', "latin small letter n"), - (0x6F, 'o', "latin small letter o"), - (0x70, 'p', "latin small letter p"), - (0x71, 'q', "latin small letter q"), - (0x72, 'r', "latin small letter r"), - (0x73, 's', "latin small letter s"), - (0x74, 't', "latin small letter t"), - (0x75, 'u', "latin small letter u"), - (0x76, 'v', "latin small letter v"), - (0x77, 'w', "latin small letter w"), - (0x78, 'x', "latin small letter x"), - (0x79, 'y', "latin small letter y"), - (0x7A, 'z', "latin small letter z"), - (0x7B, '{', "left curly bracket"), - (0x7C, '|', "vertical line"), - (0x7D, '}', "right curly bracket"), - (0x7E, '~', "tilde"), - (0xA1, '¡', "inverted exclamation mark"), - (0xA2, '¢', "cent sign"), - (0xA3, '£', "pound sign"), - (0xA4, '¤', "currency sign"), - (0xA5, '¥', "yen sign"), - (0xA6, '¦', "broken bar"), - (0xA7, '§', "section sign"), - (0xA8, '¨', "diaeresis"), - (0xA9, '©', "copyright sign"), - (0xAA, 'ª', "feminine ordinal indicator"), - (0xAB, '«', "left-pointing double angle quotation mark"), - (0xAC, '¬', "not sign"), - (0xAD, '­', "soft hyphen"), - (0xAE, '®', "registered sign"), - (0xAF, '¯', "macron"), - (0xB0, '°', "degree sign"), - (0xB1, '±', "plus-minus sign"), - (0xB2, '²', "superscript two"), - (0xB3, '³', "superscript three"), - (0xB4, '´', "acute accent"), - (0xB5, 'µ', "micro sign"), - (0xB6, '¶', "pilcrow sign"), - (0xB7, '·', "middle dot"), - (0xB8, '¸', "cedilla"), - (0xB9, '¹', "superscript one"), - (0xBA, 'º', "masculine ordinal indicator"), - (0xBB, '»', "right-pointing double angle quotation mark"), - (0xBC, '¼', "vulgar fraction one quarter"), - (0xBD, '½', "vulgar fraction one half"), - (0xBE, '¾', "vulgar fraction three quarters"), - (0xBF, '¿', "inverted question mark"), - (0xC0, 'À', "latin capital letter a with grave"), - (0xC1, 'Á', "latin capital letter a with acute"), - (0xC2, 'Â', "latin capital letter a with circumflex"), - (0xC3, 'Ã', "latin capital letter a with tilde"), - (0xC4, 'Ä', "latin capital letter a with diaeresis"), - (0xC5, 'Å', "latin capital letter a with ring above"), - (0xC6, 'Æ', "latin capital letter ae"), - (0xC7, 'Ç', "latin capital letter c with cedilla"), - (0xC8, 'È', "latin capital letter e with grave"), - (0xC9, 'É', "latin capital letter e with acute"), - (0xCA, 'Ê', "latin capital letter e with circumflex"), - (0xCB, 'Ë', "latin capital letter e with diaeresis"), - (0xCC, 'Ì', "latin capital letter i with grave"), - (0xCD, 'Í', "latin capital letter i with acute"), - (0xCE, 'Î', "latin capital letter i with circumflex"), - (0xCF, 'Ï', "latin capital letter i with diaeresis"), - (0xD0, 'Ð', "latin capital letter eth"), - (0xD1, 'Ñ', "latin capital letter n with tilde"), - (0xD2, 'Ò', "latin capital letter o with grave"), - (0xD3, 'Ó', "latin capital letter o with acute"), - (0xD4, 'Ô', "latin capital letter o with circumflex"), - (0xD5, 'Õ', "latin capital letter o with tilde"), - (0xD6, 'Ö', "latin capital letter o with diaeresis"), - (0xD7, '×', "multiplication sign"), - (0xD8, 'Ø', "latin capital letter o with stroke"), - (0xD9, 'Ù', "latin capital letter u with grave"), - (0xDA, 'Ú', "latin capital letter u with acute"), - (0xDB, 'Û', "latin capital letter u with circumflex"), - (0xDC, 'Ü', "latin capital letter u with diaeresis"), - (0xDD, 'Ý', "latin capital letter y with acute"), - (0xDE, 'Þ', "latin capital letter thorn"), - (0xDF, 'ß', "latin small letter sharp s"), - (0xE0, 'à', "latin small letter a with grave"), - (0xE1, 'á', "latin small letter a with acute"), - (0xE2, 'â', "latin small letter a with circumflex"), - (0xE3, 'ã', "latin small letter a with tilde"), - (0xE4, 'ä', "latin small letter a with diaeresis"), - (0xE5, 'å', "latin small letter a with ring above"), - (0xE6, 'æ', "latin small letter ae"), - (0xE7, 'ç', "latin small letter c with cedilla"), - (0xE8, 'è', "latin small letter e with grave"), - (0xE9, 'é', "latin small letter e with acute"), - (0xEA, 'ê', "latin small letter e with circumflex"), - (0xEB, 'ë', "latin small letter e with diaeresis"), - (0xEC, 'ì', "latin small letter i with grave"), - (0xED, 'í', "latin small letter i with acute"), - (0xEE, 'î', "latin small letter i with circumflex"), - (0xEF, 'ï', "latin small letter i with diaeresis"), - (0xF0, 'ð', "latin small letter eth"), - (0xF1, 'ñ', "latin small letter n with tilde"), - (0xF2, 'ò', "latin small letter o with grave"), - (0xF3, 'ó', "latin small letter o with acute"), - (0xF4, 'ô', "latin small letter o with circumflex"), - (0xF5, 'õ', "latin small letter o with tilde"), - (0xF6, 'ö', "latin small letter o with diaeresis"), - (0xF7, '÷', "division sign"), - (0xF8, 'ø', "latin small letter o with stroke"), - (0xF9, 'ù', "latin small letter u with grave"), - (0xFA, 'ú', "latin small letter u with acute"), - (0xFB, 'û', "latin small letter u with circumflex"), - (0xFC, 'ü', "latin small letter u with diaeresis"), - (0xFD, 'ý', "latin small letter y with acute"), - (0xFE, 'þ', "latin small letter thorn"), - (0xFF, 'ÿ', "latin small letter y with diaeresis"), - (0x100, 'Ā', "latin capital letter a with macron"), - (0x101, 'ā', "latin small letter a with macron"), - (0x102, 'Ă', "latin capital letter a with breve"), - (0x103, 'ă', "latin small letter a with breve"), - (0x104, 'Ą', "latin capital letter a with ogonek"), - (0x105, 'ą', "latin small letter a with ogonek"), - (0x106, 'Ć', "latin capital letter c with acute"), - (0x107, 'ć', "latin small letter c with acute"), - (0x108, 'Ĉ', "latin capital letter c with circumflex"), - (0x109, 'ĉ', "latin small letter c with circumflex"), - (0x10A, 'Ċ', "latin capital letter c with dot above"), - (0x10B, 'ċ', "latin small letter c with dot above"), - (0x10C, 'Č', "latin capital letter c with caron"), - (0x10D, 'č', "latin small letter c with caron"), - (0x10E, 'Ď', "latin capital letter d with caron"), - (0x10F, 'ď', "latin small letter d with caron"), - (0x110, 'Đ', "latin capital letter d with stroke"), - (0x111, 'đ', "latin small letter d with stroke"), - (0x112, 'Ē', "latin capital letter e with macron"), - (0x113, 'ē', "latin small letter e with macron"), - (0x114, 'Ĕ', "latin capital letter e with breve"), - (0x115, 'ĕ', "latin small letter e with breve"), - (0x116, 'Ė', "latin capital letter e with dot above"), - (0x117, 'ė', "latin small letter e with dot above"), - (0x118, 'Ę', "latin capital letter e with ogonek"), - (0x119, 'ę', "latin small letter e with ogonek"), - (0x11A, 'Ě', "latin capital letter e with caron"), - (0x11B, 'ě', "latin small letter e with caron"), - (0x11C, 'Ĝ', "latin capital letter g with circumflex"), - (0x11D, 'ĝ', "latin small letter g with circumflex"), - (0x11E, 'Ğ', "latin capital letter g with breve"), - (0x11F, 'ğ', "latin small letter g with breve"), - (0x120, 'Ġ', "latin capital letter g with dot above"), - (0x121, 'ġ', "latin small letter g with dot above"), - (0x122, 'Ģ', "latin capital letter g with cedilla"), - (0x123, 'ģ', "latin small letter g with cedilla"), - (0x124, 'Ĥ', "latin capital letter h with circumflex"), - (0x125, 'ĥ', "latin small letter h with circumflex"), - (0x126, 'Ħ', "latin capital letter h with stroke"), - (0x127, 'ħ', "latin small letter h with stroke"), - (0x128, 'Ĩ', "latin capital letter i with tilde"), - (0x129, 'ĩ', "latin small letter i with tilde"), - (0x12A, 'Ī', "latin capital letter i with macron"), - (0x12B, 'ī', "latin small letter i with macron"), - (0x12C, 'Ĭ', "latin capital letter i with breve"), - (0x12D, 'ĭ', "latin small letter i with breve"), - (0x12E, 'Į', "latin capital letter i with ogonek"), - (0x12F, 'į', "latin small letter i with ogonek"), - (0x130, 'İ', "latin capital letter i with dot above"), - (0x131, 'ı', "latin small letter dotless i"), - (0x132, 'IJ', "latin capital ligature ij"), - (0x133, 'ij', "latin small ligature ij"), - (0x134, 'Ĵ', "latin capital letter j with circumflex"), - (0x135, 'ĵ', "latin small letter j with circumflex"), - (0x136, 'Ķ', "latin capital letter k with cedilla"), - (0x137, 'ķ', "latin small letter k with cedilla"), - (0x138, 'ĸ', "latin small letter kra"), - (0x139, 'Ĺ', "latin capital letter l with acute"), - (0x13A, 'ĺ', "latin small letter l with acute"), - (0x13B, 'Ļ', "latin capital letter l with cedilla"), - (0x13C, 'ļ', "latin small letter l with cedilla"), - (0x13D, 'Ľ', "latin capital letter l with caron"), - (0x13E, 'ľ', "latin small letter l with caron"), - (0x13F, 'Ŀ', "latin capital letter l with middle dot"), - (0x140, 'ŀ', "latin small letter l with middle dot"), - (0x141, 'Ł', "latin capital letter l with stroke"), - (0x142, 'ł', "latin small letter l with stroke"), - (0x143, 'Ń', "latin capital letter n with acute"), - (0x144, 'ń', "latin small letter n with acute"), - (0x145, 'Ņ', "latin capital letter n with cedilla"), - (0x146, 'ņ', "latin small letter n with cedilla"), - (0x147, 'Ň', "latin capital letter n with caron"), - (0x148, 'ň', "latin small letter n with caron"), - (0x149, 'ʼn', "latin small letter n preceded by apostrophe"), - (0x14A, 'Ŋ', "latin capital letter eng"), - (0x14B, 'ŋ', "latin small letter eng"), - (0x14C, 'Ō', "latin capital letter o with macron"), - (0x14D, 'ō', "latin small letter o with macron"), - (0x14E, 'Ŏ', "latin capital letter o with breve"), - (0x14F, 'ŏ', "latin small letter o with breve"), - (0x150, 'Ő', "latin capital letter o with double acute"), - (0x151, 'ő', "latin small letter o with double acute"), - (0x152, 'Œ', "latin capital ligature oe"), - (0x153, 'œ', "latin small ligature oe"), - (0x154, 'Ŕ', "latin capital letter r with acute"), - (0x155, 'ŕ', "latin small letter r with acute"), - (0x156, 'Ŗ', "latin capital letter r with cedilla"), - (0x157, 'ŗ', "latin small letter r with cedilla"), - (0x158, 'Ř', "latin capital letter r with caron"), - (0x159, 'ř', "latin small letter r with caron"), - (0x15A, 'Ś', "latin capital letter s with acute"), - (0x15B, 'ś', "latin small letter s with acute"), - (0x15C, 'Ŝ', "latin capital letter s with circumflex"), - (0x15D, 'ŝ', "latin small letter s with circumflex"), - (0x15E, 'Ş', "latin capital letter s with cedilla"), - (0x15F, 'ş', "latin small letter s with cedilla"), - (0x160, 'Š', "latin capital letter s with caron"), - (0x161, 'š', "latin small letter s with caron"), - (0x162, 'Ţ', "latin capital letter t with cedilla"), - (0x163, 'ţ', "latin small letter t with cedilla"), - (0x164, 'Ť', "latin capital letter t with caron"), - (0x165, 'ť', "latin small letter t with caron"), - (0x166, 'Ŧ', "latin capital letter t with stroke"), - (0x167, 'ŧ', "latin small letter t with stroke"), - (0x168, 'Ũ', "latin capital letter u with tilde"), - (0x169, 'ũ', "latin small letter u with tilde"), - (0x16A, 'Ū', "latin capital letter u with macron"), - (0x16B, 'ū', "latin small letter u with macron"), - (0x16C, 'Ŭ', "latin capital letter u with breve"), - (0x16D, 'ŭ', "latin small letter u with breve"), - (0x16E, 'Ů', "latin capital letter u with ring above"), - (0x16F, 'ů', "latin small letter u with ring above"), - (0x170, 'Ű', "latin capital letter u with double acute"), - (0x171, 'ű', "latin small letter u with double acute"), - (0x172, 'Ų', "latin capital letter u with ogonek"), - (0x173, 'ų', "latin small letter u with ogonek"), - (0x174, 'Ŵ', "latin capital letter w with circumflex"), - (0x175, 'ŵ', "latin small letter w with circumflex"), - (0x176, 'Ŷ', "latin capital letter y with circumflex"), - (0x177, 'ŷ', "latin small letter y with circumflex"), - (0x178, 'Ÿ', "latin capital letter y with diaeresis"), - (0x179, 'Ź', "latin capital letter z with acute"), - (0x17A, 'ź', "latin small letter z with acute"), - (0x17B, 'Ż', "latin capital letter z with dot above"), - (0x17C, 'ż', "latin small letter z with dot above"), - (0x17D, 'Ž', "latin capital letter z with caron"), - (0x17E, 'ž', "latin small letter z with caron"), - (0x17F, 'ſ', "latin small letter long s"), - (0x180, 'ƀ', "latin small letter b with stroke"), - (0x181, 'Ɓ', "latin capital letter b with hook"), - (0x182, 'Ƃ', "latin capital letter b with topbar"), - (0x183, 'ƃ', "latin small letter b with topbar"), - (0x184, 'Ƅ', "latin capital letter tone six"), - (0x185, 'ƅ', "latin small letter tone six"), - (0x186, 'Ɔ', "latin capital letter open o"), - (0x187, 'Ƈ', "latin capital letter c with hook"), - (0x188, 'ƈ', "latin small letter c with hook"), - (0x189, 'Ɖ', "latin capital letter african d"), - (0x18A, 'Ɗ', "latin capital letter d with hook"), - (0x18B, 'Ƌ', "latin capital letter d with topbar"), - (0x18C, 'ƌ', "latin small letter d with topbar"), - (0x18D, 'ƍ', "latin small letter turned delta"), - (0x18E, 'Ǝ', "latin capital letter reversed e"), - (0x18F, 'Ə', "latin capital letter schwa"), - (0x190, 'Ɛ', "latin capital letter open e"), - (0x191, 'Ƒ', "latin capital letter f with hook"), - (0x192, 'ƒ', "latin small letter f with hook"), - (0x193, 'Ɠ', "latin capital letter g with hook"), - (0x194, 'Ɣ', "latin capital letter gamma"), - (0x195, 'ƕ', "latin small letter hv"), - (0x196, 'Ɩ', "latin capital letter iota"), - (0x197, 'Ɨ', "latin capital letter i with stroke"), - (0x198, 'Ƙ', "latin capital letter k with hook"), - (0x199, 'ƙ', "latin small letter k with hook"), - (0x19A, 'ƚ', "latin small letter l with bar"), - (0x19B, 'ƛ', "latin small letter lambda with stroke"), - (0x19C, 'Ɯ', "latin capital letter turned m"), - (0x19D, 'Ɲ', "latin capital letter n with left hook"), - (0x19E, 'ƞ', "latin small letter n with long right leg"), - (0x19F, 'Ɵ', "latin capital letter o with middle tilde"), - (0x1A0, 'Ơ', "latin capital letter o with horn"), - (0x1A1, 'ơ', "latin small letter o with horn"), - (0x1A2, 'Ƣ', "latin capital letter oi"), - (0x1A3, 'ƣ', "latin small letter oi"), - (0x1A4, 'Ƥ', "latin capital letter p with hook"), - (0x1A5, 'ƥ', "latin small letter p with hook"), - (0x1A6, 'Ʀ', "latin letter yr"), - (0x1A7, 'Ƨ', "latin capital letter tone two"), - (0x1A8, 'ƨ', "latin small letter tone two"), - (0x1A9, 'Ʃ', "latin capital letter esh"), - (0x1AA, 'ƪ', "latin letter reversed esh loop"), - (0x1AB, 'ƫ', "latin small letter t with palatal hook"), - (0x1AC, 'Ƭ', "latin capital letter t with hook"), - (0x1AD, 'ƭ', "latin small letter t with hook"), - (0x1AE, 'Ʈ', "latin capital letter t with retroflex hook"), - (0x1AF, 'Ư', "latin capital letter u with horn"), - (0x1B0, 'ư', "latin small letter u with horn"), - (0x1B1, 'Ʊ', "latin capital letter upsilon"), - (0x1B2, 'Ʋ', "latin capital letter v with hook"), - (0x1B3, 'Ƴ', "latin capital letter y with hook"), - (0x1B4, 'ƴ', "latin small letter y with hook"), - (0x1B5, 'Ƶ', "latin capital letter z with stroke"), - (0x1B6, 'ƶ', "latin small letter z with stroke"), - (0x1B7, 'Ʒ', "latin capital letter ezh"), - (0x1B8, 'Ƹ', "latin capital letter ezh reversed"), - (0x1B9, 'ƹ', "latin small letter ezh reversed"), - (0x1BA, 'ƺ', "latin small letter ezh with tail"), - (0x1BB, 'ƻ', "latin letter two with stroke"), - (0x1BC, 'Ƽ', "latin capital letter tone five"), - (0x1BD, 'ƽ', "latin small letter tone five"), - (0x1BE, 'ƾ', "latin letter inverted glottal stop with stroke"), - (0x1BF, 'ƿ', "latin letter wynn"), - (0x1C0, 'ǀ', "latin letter dental click"), - (0x1C1, 'ǁ', "latin letter lateral click"), - (0x1C2, 'ǂ', "latin letter alveolar click"), - (0x1C3, 'ǃ', "latin letter retroflex click"), - (0x1C4, 'DŽ', "latin capital letter dz with caron"), - (0x1C5, 'Dž', "latin capital letter d with small letter z with caron"), - (0x1C6, 'dž', "latin small letter dz with caron"), - (0x1C7, 'LJ', "latin capital letter lj"), - (0x1C8, 'Lj', "latin capital letter l with small letter j"), - (0x1C9, 'lj', "latin small letter lj"), - (0x1CA, 'NJ', "latin capital letter nj"), - (0x1CB, 'Nj', "latin capital letter n with small letter j"), - (0x1CC, 'nj', "latin small letter nj"), - (0x1CD, 'Ǎ', "latin capital letter a with caron"), - (0x1CE, 'ǎ', "latin small letter a with caron"), - (0x1CF, 'Ǐ', "latin capital letter i with caron"), - (0x1D0, 'ǐ', "latin small letter i with caron"), - (0x1D1, 'Ǒ', "latin capital letter o with caron"), - (0x1D2, 'ǒ', "latin small letter o with caron"), - (0x1D3, 'Ǔ', "latin capital letter u with caron"), - (0x1D4, 'ǔ', "latin small letter u with caron"), - (0x1D5, 'Ǖ', "latin capital letter u with diaeresis and macron"), - (0x1D6, 'ǖ', "latin small letter u with diaeresis and macron"), - (0x1D7, 'Ǘ', "latin capital letter u with diaeresis and acute"), - (0x1D8, 'ǘ', "latin small letter u with diaeresis and acute"), - (0x1D9, 'Ǚ', "latin capital letter u with diaeresis and caron"), - (0x1DA, 'ǚ', "latin small letter u with diaeresis and caron"), - (0x1DB, 'Ǜ', "latin capital letter u with diaeresis and grave"), - (0x1DC, 'ǜ', "latin small letter u with diaeresis and grave"), - (0x1DD, 'ǝ', "latin small letter turned e"), - (0x1DE, 'Ǟ', "latin capital letter a with diaeresis and macron"), - (0x1DF, 'ǟ', "latin small letter a with diaeresis and macron"), - (0x1E0, 'Ǡ', "latin capital letter a with dot above and macron"), - (0x1E1, 'ǡ', "latin small letter a with dot above and macron"), - (0x1E2, 'Ǣ', "latin capital letter ae with macron"), - (0x1E3, 'ǣ', "latin small letter ae with macron"), - (0x1E4, 'Ǥ', "latin capital letter g with stroke"), - (0x1E5, 'ǥ', "latin small letter g with stroke"), - (0x1E6, 'Ǧ', "latin capital letter g with caron"), - (0x1E7, 'ǧ', "latin small letter g with caron"), - (0x1E8, 'Ǩ', "latin capital letter k with caron"), - (0x1E9, 'ǩ', "latin small letter k with caron"), - (0x1EA, 'Ǫ', "latin capital letter o with ogonek"), - (0x1EB, 'ǫ', "latin small letter o with ogonek"), - (0x1EC, 'Ǭ', "latin capital letter o with ogonek and macron"), - (0x1ED, 'ǭ', "latin small letter o with ogonek and macron"), - (0x1EE, 'Ǯ', "latin capital letter ezh with caron"), - (0x1EF, 'ǯ', "latin small letter ezh with caron"), - (0x1F0, 'ǰ', "latin small letter j with caron"), - (0x1F1, 'DZ', "latin capital letter dz"), - (0x1F2, 'Dz', "latin capital letter d with small letter z"), - (0x1F3, 'dz', "latin small letter dz"), - (0x1F4, 'Ǵ', "latin capital letter g with acute"), - (0x1F5, 'ǵ', "latin small letter g with acute"), - (0x1F6, 'Ƕ', "latin capital letter hwair"), - (0x1F7, 'Ƿ', "latin capital letter wynn"), - (0x1F8, 'Ǹ', "latin capital letter n with grave"), - (0x1F9, 'ǹ', "latin small letter n with grave"), - (0x1FA, 'Ǻ', "latin capital letter a with ring above and acute"), - (0x1FB, 'ǻ', "latin small letter a with ring above and acute"), - (0x1FC, 'Ǽ', "latin capital letter ae with acute"), - (0x1FD, 'ǽ', "latin small letter ae with acute"), - (0x1FE, 'Ǿ', "latin capital letter o with stroke and acute"), - (0x1FF, 'ǿ', "latin small letter o with stroke and acute"), - (0x200, 'Ȁ', "latin capital letter a with double grave"), - (0x201, 'ȁ', "latin small letter a with double grave"), - (0x202, 'Ȃ', "latin capital letter a with inverted breve"), - (0x203, 'ȃ', "latin small letter a with inverted breve"), - (0x204, 'Ȅ', "latin capital letter e with double grave"), - (0x205, 'ȅ', "latin small letter e with double grave"), - (0x206, 'Ȇ', "latin capital letter e with inverted breve"), - (0x207, 'ȇ', "latin small letter e with inverted breve"), - (0x208, 'Ȉ', "latin capital letter i with double grave"), - (0x209, 'ȉ', "latin small letter i with double grave"), - (0x20A, 'Ȋ', "latin capital letter i with inverted breve"), - (0x20B, 'ȋ', "latin small letter i with inverted breve"), - (0x20C, 'Ȍ', "latin capital letter o with double grave"), - (0x20D, 'ȍ', "latin small letter o with double grave"), - (0x20E, 'Ȏ', "latin capital letter o with inverted breve"), - (0x20F, 'ȏ', "latin small letter o with inverted breve"), - (0x210, 'Ȑ', "latin capital letter r with double grave"), - (0x211, 'ȑ', "latin small letter r with double grave"), - (0x212, 'Ȓ', "latin capital letter r with inverted breve"), - (0x213, 'ȓ', "latin small letter r with inverted breve"), - (0x214, 'Ȕ', "latin capital letter u with double grave"), - (0x215, 'ȕ', "latin small letter u with double grave"), - (0x216, 'Ȗ', "latin capital letter u with inverted breve"), - (0x217, 'ȗ', "latin small letter u with inverted breve"), - (0x218, 'Ș', "latin capital letter s with comma below"), - (0x219, 'ș', "latin small letter s with comma below"), - (0x21A, 'Ț', "latin capital letter t with comma below"), - (0x21B, 'ț', "latin small letter t with comma below"), - (0x21C, 'Ȝ', "latin capital letter yogh"), - (0x21D, 'ȝ', "latin small letter yogh"), - (0x21E, 'Ȟ', "latin capital letter h with caron"), - (0x21F, 'ȟ', "latin small letter h with caron"), - (0x220, 'Ƞ', "latin capital letter n with long right leg"), - (0x221, 'ȡ', "latin small letter d with curl"), - (0x222, 'Ȣ', "latin capital letter ou"), - (0x223, 'ȣ', "latin small letter ou"), - (0x224, 'Ȥ', "latin capital letter z with hook"), - (0x225, 'ȥ', "latin small letter z with hook"), - (0x226, 'Ȧ', "latin capital letter a with dot above"), - (0x227, 'ȧ', "latin small letter a with dot above"), - (0x228, 'Ȩ', "latin capital letter e with cedilla"), - (0x229, 'ȩ', "latin small letter e with cedilla"), - (0x22A, 'Ȫ', "latin capital letter o with diaeresis and macron"), - (0x22B, 'ȫ', "latin small letter o with diaeresis and macron"), - (0x22C, 'Ȭ', "latin capital letter o with tilde and macron"), - (0x22D, 'ȭ', "latin small letter o with tilde and macron"), - (0x22E, 'Ȯ', "latin capital letter o with dot above"), - (0x22F, 'ȯ', "latin small letter o with dot above"), - (0x230, 'Ȱ', "latin capital letter o with dot above and macron"), - (0x231, 'ȱ', "latin small letter o with dot above and macron"), - (0x232, 'Ȳ', "latin capital letter y with macron"), - (0x233, 'ȳ', "latin small letter y with macron"), - (0x234, 'ȴ', "latin small letter l with curl"), - (0x235, 'ȵ', "latin small letter n with curl"), - (0x236, 'ȶ', "latin small letter t with curl"), - (0x237, 'ȷ', "latin small letter dotless j"), - (0x238, 'ȸ', "latin small letter db digraph"), - (0x239, 'ȹ', "latin small letter qp digraph"), - (0x23A, 'Ⱥ', "latin capital letter a with stroke"), - (0x23B, 'Ȼ', "latin capital letter c with stroke"), - (0x23C, 'ȼ', "latin small letter c with stroke"), - (0x23D, 'Ƚ', "latin capital letter l with bar"), - (0x23E, 'Ⱦ', "latin capital letter t with diagonal stroke"), - (0x23F, 'ȿ', "latin small letter s with swash tail"), - (0x240, 'ɀ', "latin small letter z with swash tail"), - (0x241, 'Ɂ', "latin capital letter glottal stop"), - (0x242, 'ɂ', "latin small letter glottal stop"), - (0x243, 'Ƀ', "latin capital letter b with stroke"), - (0x244, 'Ʉ', "latin capital letter u bar"), - (0x245, 'Ʌ', "latin capital letter turned v"), - (0x246, 'Ɇ', "latin capital letter e with stroke"), - (0x247, 'ɇ', "latin small letter e with stroke"), - (0x248, 'Ɉ', "latin capital letter j with stroke"), - (0x249, 'ɉ', "latin small letter j with stroke"), - (0x24A, 'Ɋ', "latin capital letter small q with hook tail"), - (0x24B, 'ɋ', "latin small letter q with hook tail"), - (0x24C, 'Ɍ', "latin capital letter r with stroke"), - (0x24D, 'ɍ', "latin small letter r with stroke"), - (0x24E, 'Ɏ', "latin capital letter y with stroke"), - (0x24F, 'ɏ', "latin small letter y with stroke"), - (0x292, 'ʒ', "latin small letter ezh"), - (0x2BC, 'ʼ', "modifier letter apostrophe"), - (0x2C6, 'ˆ', "modifier letter circumflex accent"), - (0x2C7, 'ˇ', "caron"), - (0x2C9, 'ˉ', "modifier letter macron"), - (0x2D8, '˘', "breve"), - (0x2D9, '˙', "dot above"), - (0x2DA, '˚', "ring above"), - (0x2DB, '˛', "ogonek"), - (0x2DC, '˜', "small tilde"), - (0x2DD, '˝', "double acute accent"), - (0x311, '̑', "combining inverted breve"), - (0x384, '΄', "greek tonos"), - (0x385, '΅', "greek dialytika tonos"), - (0x386, 'Ά', "greek capital letter alpha with tonos"), - (0x388, 'Έ', "greek capital letter epsilon with tonos"), - (0x389, 'Ή', "greek capital letter eta with tonos"), - (0x38A, 'Ί', "greek capital letter iota with tonos"), - (0x38C, 'Ό', "greek capital letter omicron with tonos"), - (0x38E, 'Ύ', "greek capital letter upsilon with tonos"), - (0x38F, 'Ώ', "greek capital letter omega with tonos"), - (0x390, 'ΐ', "greek small letter iota with dialytika and tonos"), - (0x391, 'Α', "greek capital letter alpha"), - (0x392, 'Β', "greek capital letter beta"), - (0x393, 'Γ', "greek capital letter gamma"), - (0x394, 'Δ', "greek capital letter delta"), - (0x395, 'Ε', "greek capital letter epsilon"), - (0x396, 'Ζ', "greek capital letter zeta"), - (0x397, 'Η', "greek capital letter eta"), - (0x398, 'Θ', "greek capital letter theta"), - (0x399, 'Ι', "greek capital letter iota"), - (0x39A, 'Κ', "greek capital letter kappa"), - (0x39B, 'Λ', "greek capital letter lamda"), - (0x39C, 'Μ', "greek capital letter mu"), - (0x39D, 'Ν', "greek capital letter nu"), - (0x39E, 'Ξ', "greek capital letter xi"), - (0x39F, 'Ο', "greek capital letter omicron"), - (0x3A0, 'Π', "greek capital letter pi"), - (0x3A1, 'Ρ', "greek capital letter rho"), - (0x3A3, 'Σ', "greek capital letter sigma"), - (0x3A4, 'Τ', "greek capital letter tau"), - (0x3A5, 'Υ', "greek capital letter upsilon"), - (0x3A6, 'Φ', "greek capital letter phi"), - (0x3A7, 'Χ', "greek capital letter chi"), - (0x3A8, 'Ψ', "greek capital letter psi"), - (0x3A9, 'Ω', "greek capital letter omega"), - (0x3AA, 'Ϊ', "greek capital letter iota with dialytika"), - (0x3AB, 'Ϋ', "greek capital letter upsilon with dialytika"), - (0x3AC, 'ά', "greek small letter alpha with tonos"), - (0x3AD, 'έ', "greek small letter epsilon with tonos"), - (0x3AE, 'ή', "greek small letter eta with tonos"), - (0x3AF, 'ί', "greek small letter iota with tonos"), - (0x3B0, 'ΰ', "greek small letter upsilon with dialytika and tonos"), - (0x3B1, 'α', "greek small letter alpha"), - (0x3B2, 'β', "greek small letter beta"), - (0x3B3, 'γ', "greek small letter gamma"), - (0x3B4, 'δ', "greek small letter delta"), - (0x3B5, 'ε', "greek small letter epsilon"), - (0x3B6, 'ζ', "greek small letter zeta"), - (0x3B7, 'η', "greek small letter eta"), - (0x3B8, 'θ', "greek small letter theta"), - (0x3B9, 'ι', "greek small letter iota"), - (0x3BA, 'κ', "greek small letter kappa"), - (0x3BB, 'λ', "greek small letter lamda"), - (0x3BC, 'μ', "greek small letter mu"), - (0x3BD, 'ν', "greek small letter nu"), - (0x3BE, 'ξ', "greek small letter xi"), - (0x3BF, 'ο', "greek small letter omicron"), - (0x3C0, 'π', "greek small letter pi"), - (0x3C1, 'ρ', "greek small letter rho"), - (0x3C2, 'ς', "greek small letter final sigma"), - (0x3C3, 'σ', "greek small letter sigma"), - (0x3C4, 'τ', "greek small letter tau"), - (0x3C5, 'υ', "greek small letter upsilon"), - (0x3C6, 'φ', "greek small letter phi"), - (0x3C7, 'χ', "greek small letter chi"), - (0x3C8, 'ψ', "greek small letter psi"), - (0x3C9, 'ω', "greek small letter omega"), - (0x3CA, 'ϊ', "greek small letter iota with dialytika"), - (0x3CB, 'ϋ', "greek small letter upsilon with dialytika"), - (0x3CC, 'ό', "greek small letter omicron with tonos"), - (0x3CD, 'ύ', "greek small letter upsilon with tonos"), - (0x3CE, 'ώ', "greek small letter omega with tonos"), - (0x400, 'Ѐ', "cyrillic capital letter ie with grave"), - (0x401, 'Ё', "cyrillic capital letter io"), - (0x402, 'Ђ', "cyrillic capital letter dje"), - (0x403, 'Ѓ', "cyrillic capital letter gje"), - (0x404, 'Є', "cyrillic capital letter ukrainian ie"), - (0x405, 'Ѕ', "cyrillic capital letter dze"), - (0x406, 'І', "cyrillic capital letter byelorussian-ukrainian i"), - (0x407, 'Ї', "cyrillic capital letter yi"), - (0x408, 'Ј', "cyrillic capital letter je"), - (0x409, 'Љ', "cyrillic capital letter lje"), - (0x40A, 'Њ', "cyrillic capital letter nje"), - (0x40B, 'Ћ', "cyrillic capital letter tshe"), - (0x40C, 'Ќ', "cyrillic capital letter kje"), - (0x40D, 'Ѝ', "cyrillic capital letter i with grave"), - (0x40E, 'Ў', "cyrillic capital letter short u"), - (0x40F, 'Џ', "cyrillic capital letter dzhe"), - (0x410, 'А', "cyrillic capital letter a"), - (0x411, 'Б', "cyrillic capital letter be"), - (0x412, 'В', "cyrillic capital letter ve"), - (0x413, 'Г', "cyrillic capital letter ghe"), - (0x414, 'Д', "cyrillic capital letter de"), - (0x415, 'Е', "cyrillic capital letter ie"), - (0x416, 'Ж', "cyrillic capital letter zhe"), - (0x417, 'З', "cyrillic capital letter ze"), - (0x418, 'И', "cyrillic capital letter i"), - (0x419, 'Й', "cyrillic capital letter short i"), - (0x41A, 'К', "cyrillic capital letter ka"), - (0x41B, 'Л', "cyrillic capital letter el"), - (0x41C, 'М', "cyrillic capital letter em"), - (0x41D, 'Н', "cyrillic capital letter en"), - (0x41E, 'О', "cyrillic capital letter o"), - (0x41F, 'П', "cyrillic capital letter pe"), - (0x420, 'Р', "cyrillic capital letter er"), - (0x421, 'С', "cyrillic capital letter es"), - (0x422, 'Т', "cyrillic capital letter te"), - (0x423, 'У', "cyrillic capital letter u"), - (0x424, 'Ф', "cyrillic capital letter ef"), - (0x425, 'Х', "cyrillic capital letter ha"), - (0x426, 'Ц', "cyrillic capital letter tse"), - (0x427, 'Ч', "cyrillic capital letter che"), - (0x428, 'Ш', "cyrillic capital letter sha"), - (0x429, 'Щ', "cyrillic capital letter shcha"), - (0x42A, 'Ъ', "cyrillic capital letter hard sign"), - (0x42B, 'Ы', "cyrillic capital letter yeru"), - (0x42C, 'Ь', "cyrillic capital letter soft sign"), - (0x42D, 'Э', "cyrillic capital letter e"), - (0x42E, 'Ю', "cyrillic capital letter yu"), - (0x42F, 'Я', "cyrillic capital letter ya"), - (0x430, 'а', "cyrillic small letter a"), - (0x431, 'б', "cyrillic small letter be"), - (0x432, 'в', "cyrillic small letter ve"), - (0x433, 'г', "cyrillic small letter ghe"), - (0x434, 'д', "cyrillic small letter de"), - (0x435, 'е', "cyrillic small letter ie"), - (0x436, 'ж', "cyrillic small letter zhe"), - (0x437, 'з', "cyrillic small letter ze"), - (0x438, 'и', "cyrillic small letter i"), - (0x439, 'й', "cyrillic small letter short i"), - (0x43A, 'к', "cyrillic small letter ka"), - (0x43B, 'л', "cyrillic small letter el"), - (0x43C, 'м', "cyrillic small letter em"), - (0x43D, 'н', "cyrillic small letter en"), - (0x43E, 'о', "cyrillic small letter o"), - (0x43F, 'п', "cyrillic small letter pe"), - (0x440, 'р', "cyrillic small letter er"), - (0x441, 'с', "cyrillic small letter es"), - (0x442, 'т', "cyrillic small letter te"), - (0x443, 'у', "cyrillic small letter u"), - (0x444, 'ф', "cyrillic small letter ef"), - (0x445, 'х', "cyrillic small letter ha"), - (0x446, 'ц', "cyrillic small letter tse"), - (0x447, 'ч', "cyrillic small letter che"), - (0x448, 'ш', "cyrillic small letter sha"), - (0x449, 'щ', "cyrillic small letter shcha"), - (0x44A, 'ъ', "cyrillic small letter hard sign"), - (0x44B, 'ы', "cyrillic small letter yeru"), - (0x44C, 'ь', "cyrillic small letter soft sign"), - (0x44D, 'э', "cyrillic small letter e"), - (0x44E, 'ю', "cyrillic small letter yu"), - (0x44F, 'я', "cyrillic small letter ya"), - (0x450, 'ѐ', "cyrillic small letter ie with grave"), - (0x451, 'ё', "cyrillic small letter io"), - (0x452, 'ђ', "cyrillic small letter dje"), - (0x453, 'ѓ', "cyrillic small letter gje"), - (0x454, 'є', "cyrillic small letter ukrainian ie"), - (0x455, 'ѕ', "cyrillic small letter dze"), - (0x456, 'і', "cyrillic small letter byelorussian-ukrainian i"), - (0x457, 'ї', "cyrillic small letter yi"), - (0x458, 'ј', "cyrillic small letter je"), - (0x459, 'љ', "cyrillic small letter lje"), - (0x45A, 'њ', "cyrillic small letter nje"), - (0x45B, 'ћ', "cyrillic small letter tshe"), - (0x45C, 'ќ', "cyrillic small letter kje"), - (0x45D, 'ѝ', "cyrillic small letter i with grave"), - (0x45E, 'ў', "cyrillic small letter short u"), - (0x45F, 'џ', "cyrillic small letter dzhe"), - (0x462, 'Ѣ', "cyrillic capital letter yat"), - (0x463, 'ѣ', "cyrillic small letter yat"), - (0x472, 'Ѳ', "cyrillic capital letter fita"), - (0x473, 'ѳ', "cyrillic small letter fita"), - (0x474, 'Ѵ', "cyrillic capital letter izhitsa"), - (0x475, 'ѵ', "cyrillic small letter izhitsa"), - (0x48A, 'Ҋ', "cyrillic capital letter short i with tail"), - (0x48B, 'ҋ', "cyrillic small letter short i with tail"), - (0x48C, 'Ҍ', "cyrillic capital letter semisoft sign"), - (0x48D, 'ҍ', "cyrillic small letter semisoft sign"), - (0x48E, 'Ҏ', "cyrillic capital letter er with tick"), - (0x48F, 'ҏ', "cyrillic small letter er with tick"), - (0x490, 'Ґ', "cyrillic capital letter ghe with upturn"), - (0x491, 'ґ', "cyrillic small letter ghe with upturn"), - (0x492, 'Ғ', "cyrillic capital letter ghe with stroke"), - (0x493, 'ғ', "cyrillic small letter ghe with stroke"), - (0x494, 'Ҕ', "cyrillic capital letter ghe with middle hook"), - (0x495, 'ҕ', "cyrillic small letter ghe with middle hook"), - (0x496, 'Җ', "cyrillic capital letter zhe with descender"), - (0x497, 'җ', "cyrillic small letter zhe with descender"), - (0x498, 'Ҙ', "cyrillic capital letter ze with descender"), - (0x499, 'ҙ', "cyrillic small letter ze with descender"), - (0x49A, 'Қ', "cyrillic capital letter ka with descender"), - (0x49B, 'қ', "cyrillic small letter ka with descender"), - (0x49C, 'Ҝ', "cyrillic capital letter ka with vertical stroke"), - (0x49D, 'ҝ', "cyrillic small letter ka with vertical stroke"), - (0x49E, 'Ҟ', "cyrillic capital letter ka with stroke"), - (0x49F, 'ҟ', "cyrillic small letter ka with stroke"), - (0x4A0, 'Ҡ', "cyrillic capital letter bashkir ka"), - (0x4A1, 'ҡ', "cyrillic small letter bashkir ka"), - (0x4A2, 'Ң', "cyrillic capital letter en with descender"), - (0x4A3, 'ң', "cyrillic small letter en with descender"), - (0x4A4, 'Ҥ', "cyrillic capital ligature en ghe"), - (0x4A5, 'ҥ', "cyrillic small ligature en ghe"), - (0x4A6, 'Ҧ', "cyrillic capital letter pe with middle hook"), - (0x4A7, 'ҧ', "cyrillic small letter pe with middle hook"), - (0x4A8, 'Ҩ', "cyrillic capital letter abkhasian ha"), - (0x4A9, 'ҩ', "cyrillic small letter abkhasian ha"), - (0x4AA, 'Ҫ', "cyrillic capital letter es with descender"), - (0x4AB, 'ҫ', "cyrillic small letter es with descender"), - (0x4AC, 'Ҭ', "cyrillic capital letter te with descender"), - (0x4AD, 'ҭ', "cyrillic small letter te with descender"), - (0x4AE, 'Ү', "cyrillic capital letter straight u"), - (0x4AF, 'ү', "cyrillic small letter straight u"), - (0x4B0, 'Ұ', "cyrillic capital letter straight u with stroke"), - (0x4B1, 'ұ', "cyrillic small letter straight u with stroke"), - (0x4B2, 'Ҳ', "cyrillic capital letter ha with descender"), - (0x4B3, 'ҳ', "cyrillic small letter ha with descender"), - (0x4B4, 'Ҵ', "cyrillic capital ligature te tse"), - (0x4B5, 'ҵ', "cyrillic small ligature te tse"), - (0x4B6, 'Ҷ', "cyrillic capital letter che with descender"), - (0x4B7, 'ҷ', "cyrillic small letter che with descender"), - (0x4B8, 'Ҹ', "cyrillic capital letter che with vertical stroke"), - (0x4B9, 'ҹ', "cyrillic small letter che with vertical stroke"), - (0x4BA, 'Һ', "cyrillic capital letter shha"), - (0x4BB, 'һ', "cyrillic small letter shha"), - (0x4BC, 'Ҽ', "cyrillic capital letter abkhasian che"), - (0x4BD, 'ҽ', "cyrillic small letter abkhasian che"), - (0x4BE, 'Ҿ', "cyrillic capital letter abkhasian che with descender"), - (0x4BF, 'ҿ', "cyrillic small letter abkhasian che with descender"), - (0x4C0, 'Ӏ', "cyrillic letter palochka"), - (0x4C1, 'Ӂ', "cyrillic capital letter zhe with breve"), - (0x4C2, 'ӂ', "cyrillic small letter zhe with breve"), - (0x4C3, 'Ӄ', "cyrillic capital letter ka with hook"), - (0x4C4, 'ӄ', "cyrillic small letter ka with hook"), - (0x4C5, 'Ӆ', "cyrillic capital letter el with tail"), - (0x4C6, 'ӆ', "cyrillic small letter el with tail"), - (0x4C7, 'Ӈ', "cyrillic capital letter en with hook"), - (0x4C8, 'ӈ', "cyrillic small letter en with hook"), - (0x4C9, 'Ӊ', "cyrillic capital letter en with tail"), - (0x4CA, 'ӊ', "cyrillic small letter en with tail"), - (0x4CB, 'Ӌ', "cyrillic capital letter khakassian che"), - (0x4CC, 'ӌ', "cyrillic small letter khakassian che"), - (0x4CD, 'Ӎ', "cyrillic capital letter em with tail"), - (0x4CE, 'ӎ', "cyrillic small letter em with tail"), - (0x4CF, 'ӏ', "cyrillic small letter palochka"), - (0x4D0, 'Ӑ', "cyrillic capital letter a with breve"), - (0x4D1, 'ӑ', "cyrillic small letter a with breve"), - (0x4D2, 'Ӓ', "cyrillic capital letter a with diaeresis"), - (0x4D3, 'ӓ', "cyrillic small letter a with diaeresis"), - (0x4D4, 'Ӕ', "cyrillic capital ligature a ie"), - (0x4D5, 'ӕ', "cyrillic small ligature a ie"), - (0x4D6, 'Ӗ', "cyrillic capital letter ie with breve"), - (0x4D7, 'ӗ', "cyrillic small letter ie with breve"), - (0x4D8, 'Ә', "cyrillic capital letter schwa"), - (0x4D9, 'ә', "cyrillic small letter schwa"), - (0x4DA, 'Ӛ', "cyrillic capital letter schwa with diaeresis"), - (0x4DB, 'ӛ', "cyrillic small letter schwa with diaeresis"), - (0x4DC, 'Ӝ', "cyrillic capital letter zhe with diaeresis"), - (0x4DD, 'ӝ', "cyrillic small letter zhe with diaeresis"), - (0x4DE, 'Ӟ', "cyrillic capital letter ze with diaeresis"), - (0x4DF, 'ӟ', "cyrillic small letter ze with diaeresis"), - (0x4E0, 'Ӡ', "cyrillic capital letter abkhasian dze"), - (0x4E1, 'ӡ', "cyrillic small letter abkhasian dze"), - (0x4E2, 'Ӣ', "cyrillic capital letter i with macron"), - (0x4E3, 'ӣ', "cyrillic small letter i with macron"), - (0x4E4, 'Ӥ', "cyrillic capital letter i with diaeresis"), - (0x4E5, 'ӥ', "cyrillic small letter i with diaeresis"), - (0x4E6, 'Ӧ', "cyrillic capital letter o with diaeresis"), - (0x4E7, 'ӧ', "cyrillic small letter o with diaeresis"), - (0x4E8, 'Ө', "cyrillic capital letter barred o"), - (0x4E9, 'ө', "cyrillic small letter barred o"), - (0x4EA, 'Ӫ', "cyrillic capital letter barred o with diaeresis"), - (0x4EB, 'ӫ', "cyrillic small letter barred o with diaeresis"), - (0x4EC, 'Ӭ', "cyrillic capital letter e with diaeresis"), - (0x4ED, 'ӭ', "cyrillic small letter e with diaeresis"), - (0x4EE, 'Ӯ', "cyrillic capital letter u with macron"), - (0x4EF, 'ӯ', "cyrillic small letter u with macron"), - (0x4F0, 'Ӱ', "cyrillic capital letter u with diaeresis"), - (0x4F1, 'ӱ', "cyrillic small letter u with diaeresis"), - (0x4F2, 'Ӳ', "cyrillic capital letter u with double acute"), - (0x4F3, 'ӳ', "cyrillic small letter u with double acute"), - (0x4F4, 'Ӵ', "cyrillic capital letter che with diaeresis"), - (0x4F5, 'ӵ', "cyrillic small letter che with diaeresis"), - (0x4F6, 'Ӷ', "cyrillic capital letter ghe with descender"), - (0x4F7, 'ӷ', "cyrillic small letter ghe with descender"), - (0x4F8, 'Ӹ', "cyrillic capital letter yeru with diaeresis"), - (0x4F9, 'ӹ', "cyrillic small letter yeru with diaeresis"), - (0x1E80, 'Ẁ', "latin capital letter w with grave"), - (0x1E81, 'ẁ', "latin small letter w with grave"), - (0x1E82, 'Ẃ', "latin capital letter w with acute"), - (0x1E83, 'ẃ', "latin small letter w with acute"), - (0x1E84, 'Ẅ', "latin capital letter w with diaeresis"), - (0x1E85, 'ẅ', "latin small letter w with diaeresis"), - (0x1EF2, 'Ỳ', "latin capital letter y with grave"), - (0x1EF3, 'ỳ', "latin small letter y with grave"), - (0x1F00, 'ἀ', "greek small letter alpha with psili"), - (0x1F01, 'ἁ', "greek small letter alpha with dasia"), - (0x1F02, 'ἂ', "greek small letter alpha with psili and varia"), - (0x1F03, 'ἃ', "greek small letter alpha with dasia and varia"), - (0x1F04, 'ἄ', "greek small letter alpha with psili and oxia"), - (0x1F05, 'ἅ', "greek small letter alpha with dasia and oxia"), - (0x1F06, 'ἆ', "greek small letter alpha with psili and perispomeni"), - (0x1F07, 'ἇ', "greek small letter alpha with dasia and perispomeni"), - (0x1F08, 'Ἀ', "greek capital letter alpha with psili"), - (0x1F09, 'Ἁ', "greek capital letter alpha with dasia"), - (0x1F0A, 'Ἂ', "greek capital letter alpha with psili and varia"), - (0x1F0B, 'Ἃ', "greek capital letter alpha with dasia and varia"), - (0x1F0C, 'Ἄ', "greek capital letter alpha with psili and oxia"), - (0x1F0D, 'Ἅ', "greek capital letter alpha with dasia and oxia"), - (0x1F0E, 'Ἆ', "greek capital letter alpha with psili and perispomeni"), - (0x1F0F, 'Ἇ', "greek capital letter alpha with dasia and perispomeni"), - (0x1F10, 'ἐ', "greek small letter epsilon with psili"), - (0x1F11, 'ἑ', "greek small letter epsilon with dasia"), - (0x1F12, 'ἒ', "greek small letter epsilon with psili and varia"), - (0x1F13, 'ἓ', "greek small letter epsilon with dasia and varia"), - (0x1F14, 'ἔ', "greek small letter epsilon with psili and oxia"), - (0x1F15, 'ἕ', "greek small letter epsilon with dasia and oxia"), - (0x1F18, 'Ἐ', "greek capital letter epsilon with psili"), - (0x1F19, 'Ἑ', "greek capital letter epsilon with dasia"), - (0x1F1A, 'Ἒ', "greek capital letter epsilon with psili and varia"), - (0x1F1B, 'Ἓ', "greek capital letter epsilon with dasia and varia"), - (0x1F1C, 'Ἔ', "greek capital letter epsilon with psili and oxia"), - (0x1F1D, 'Ἕ', "greek capital letter epsilon with dasia and oxia"), - (0x1F20, 'ἠ', "greek small letter eta with psili"), - (0x1F21, 'ἡ', "greek small letter eta with dasia"), - (0x1F22, 'ἢ', "greek small letter eta with psili and varia"), - (0x1F23, 'ἣ', "greek small letter eta with dasia and varia"), - (0x1F24, 'ἤ', "greek small letter eta with psili and oxia"), - (0x1F25, 'ἥ', "greek small letter eta with dasia and oxia"), - (0x1F26, 'ἦ', "greek small letter eta with psili and perispomeni"), - (0x1F27, 'ἧ', "greek small letter eta with dasia and perispomeni"), - (0x1F28, 'Ἠ', "greek capital letter eta with psili"), - (0x1F29, 'Ἡ', "greek capital letter eta with dasia"), - (0x1F2A, 'Ἢ', "greek capital letter eta with psili and varia"), - (0x1F2B, 'Ἣ', "greek capital letter eta with dasia and varia"), - (0x1F2C, 'Ἤ', "greek capital letter eta with psili and oxia"), - (0x1F2D, 'Ἥ', "greek capital letter eta with dasia and oxia"), - (0x1F2E, 'Ἦ', "greek capital letter eta with psili and perispomeni"), - (0x1F2F, 'Ἧ', "greek capital letter eta with dasia and perispomeni"), - (0x1F30, 'ἰ', "greek small letter iota with psili"), - (0x1F31, 'ἱ', "greek small letter iota with dasia"), - (0x1F32, 'ἲ', "greek small letter iota with psili and varia"), - (0x1F33, 'ἳ', "greek small letter iota with dasia and varia"), - (0x1F34, 'ἴ', "greek small letter iota with psili and oxia"), - (0x1F35, 'ἵ', "greek small letter iota with dasia and oxia"), - (0x1F36, 'ἶ', "greek small letter iota with psili and perispomeni"), - (0x1F37, 'ἷ', "greek small letter iota with dasia and perispomeni"), - (0x1F38, 'Ἰ', "greek capital letter iota with psili"), - (0x1F39, 'Ἱ', "greek capital letter iota with dasia"), - (0x1F3A, 'Ἲ', "greek capital letter iota with psili and varia"), - (0x1F3B, 'Ἳ', "greek capital letter iota with dasia and varia"), - (0x1F3C, 'Ἴ', "greek capital letter iota with psili and oxia"), - (0x1F3D, 'Ἵ', "greek capital letter iota with dasia and oxia"), - (0x1F3E, 'Ἶ', "greek capital letter iota with psili and perispomeni"), - (0x1F3F, 'Ἷ', "greek capital letter iota with dasia and perispomeni"), - (0x1F40, 'ὀ', "greek small letter omicron with psili"), - (0x1F41, 'ὁ', "greek small letter omicron with dasia"), - (0x1F42, 'ὂ', "greek small letter omicron with psili and varia"), - (0x1F43, 'ὃ', "greek small letter omicron with dasia and varia"), - (0x1F44, 'ὄ', "greek small letter omicron with psili and oxia"), - (0x1F45, 'ὅ', "greek small letter omicron with dasia and oxia"), - (0x1F48, 'Ὀ', "greek capital letter omicron with psili"), - (0x1F49, 'Ὁ', "greek capital letter omicron with dasia"), - (0x1F4A, 'Ὂ', "greek capital letter omicron with psili and varia"), - (0x1F4B, 'Ὃ', "greek capital letter omicron with dasia and varia"), - (0x1F4C, 'Ὄ', "greek capital letter omicron with psili and oxia"), - (0x1F4D, 'Ὅ', "greek capital letter omicron with dasia and oxia"), - (0x1F50, 'ὐ', "greek small letter upsilon with psili"), - (0x1F51, 'ὑ', "greek small letter upsilon with dasia"), - (0x1F52, 'ὒ', "greek small letter upsilon with psili and varia"), - (0x1F53, 'ὓ', "greek small letter upsilon with dasia and varia"), - (0x1F54, 'ὔ', "greek small letter upsilon with psili and oxia"), - (0x1F55, 'ὕ', "greek small letter upsilon with dasia and oxia"), - (0x1F56, 'ὖ', "greek small letter upsilon with psili and perispomeni"), - (0x1F57, 'ὗ', "greek small letter upsilon with dasia and perispomeni"), - (0x1F59, 'Ὑ', "greek capital letter upsilon with dasia"), - (0x1F5B, 'Ὓ', "greek capital letter upsilon with dasia and varia"), - (0x1F5D, 'Ὕ', "greek capital letter upsilon with dasia and oxia"), - (0x1F5F, 'Ὗ', "greek capital letter upsilon with dasia and perispomeni"), - (0x1F60, 'ὠ', "greek small letter omega with psili"), - (0x1F61, 'ὡ', "greek small letter omega with dasia"), - (0x1F62, 'ὢ', "greek small letter omega with psili and varia"), - (0x1F63, 'ὣ', "greek small letter omega with dasia and varia"), - (0x1F64, 'ὤ', "greek small letter omega with psili and oxia"), - (0x1F65, 'ὥ', "greek small letter omega with dasia and oxia"), - (0x1F66, 'ὦ', "greek small letter omega with psili and perispomeni"), - (0x1F67, 'ὧ', "greek small letter omega with dasia and perispomeni"), - (0x1F68, 'Ὠ', "greek capital letter omega with psili"), - (0x1F69, 'Ὡ', "greek capital letter omega with dasia"), - (0x1F6A, 'Ὢ', "greek capital letter omega with psili and varia"), - (0x1F6B, 'Ὣ', "greek capital letter omega with dasia and varia"), - (0x1F6C, 'Ὤ', "greek capital letter omega with psili and oxia"), - (0x1F6D, 'Ὥ', "greek capital letter omega with dasia and oxia"), - (0x1F6E, 'Ὦ', "greek capital letter omega with psili and perispomeni"), - (0x1F6F, 'Ὧ', "greek capital letter omega with dasia and perispomeni"), - (0x1F70, 'ὰ', "greek small letter alpha with varia"), - (0x1F71, 'ά', "greek small letter alpha with oxia"), - (0x1F72, 'ὲ', "greek small letter epsilon with varia"), - (0x1F73, 'έ', "greek small letter epsilon with oxia"), - (0x1F74, 'ὴ', "greek small letter eta with varia"), - (0x1F75, 'ή', "greek small letter eta with oxia"), - (0x1F76, 'ὶ', "greek small letter iota with varia"), - (0x1F77, 'ί', "greek small letter iota with oxia"), - (0x1F78, 'ὸ', "greek small letter omicron with varia"), - (0x1F79, 'ό', "greek small letter omicron with oxia"), - (0x1F7A, 'ὺ', "greek small letter upsilon with varia"), - (0x1F7B, 'ύ', "greek small letter upsilon with oxia"), - (0x1F7C, 'ὼ', "greek small letter omega with varia"), - (0x1F7D, 'ώ', "greek small letter omega with oxia"), - (0x1F80, 'ᾀ', "greek small letter alpha with psili and ypogegrammeni"), - (0x1F81, 'ᾁ', "greek small letter alpha with dasia and ypogegrammeni"), - (0x1F82, 'ᾂ', "greek small letter alpha with psili and varia and ypogegrammeni"), - (0x1F83, 'ᾃ', "greek small letter alpha with dasia and varia and ypogegrammeni"), - (0x1F84, 'ᾄ', "greek small letter alpha with psili and oxia and ypogegrammeni"), - (0x1F85, 'ᾅ', "greek small letter alpha with dasia and oxia and ypogegrammeni"), - (0x1F86, 'ᾆ', "greek small letter alpha with psili and perispomeni and ypogegrammeni"), - (0x1F87, 'ᾇ', "greek small letter alpha with dasia and perispomeni and ypogegrammeni"), - (0x1F88, 'ᾈ', "greek capital letter alpha with psili and prosgegrammeni"), - (0x1F89, 'ᾉ', "greek capital letter alpha with dasia and prosgegrammeni"), - (0x1F8A, 'ᾊ', "greek capital letter alpha with psili and varia and prosgegrammeni"), - (0x1F8B, 'ᾋ', "greek capital letter alpha with dasia and varia and prosgegrammeni"), - (0x1F8C, 'ᾌ', "greek capital letter alpha with psili and oxia and prosgegrammeni"), - (0x1F8D, 'ᾍ', "greek capital letter alpha with dasia and oxia and prosgegrammeni"), - (0x1F8E, 'ᾎ', "greek capital letter alpha with psili and perispomeni and prosgegrammeni"), - (0x1F8F, 'ᾏ', "greek capital letter alpha with dasia and perispomeni and prosgegrammeni"), - (0x1F90, 'ᾐ', "greek small letter eta with psili and ypogegrammeni"), - (0x1F91, 'ᾑ', "greek small letter eta with dasia and ypogegrammeni"), - (0x1F92, 'ᾒ', "greek small letter eta with psili and varia and ypogegrammeni"), - (0x1F93, 'ᾓ', "greek small letter eta with dasia and varia and ypogegrammeni"), - (0x1F94, 'ᾔ', "greek small letter eta with psili and oxia and ypogegrammeni"), - (0x1F95, 'ᾕ', "greek small letter eta with dasia and oxia and ypogegrammeni"), - (0x1F96, 'ᾖ', "greek small letter eta with psili and perispomeni and ypogegrammeni"), - (0x1F97, 'ᾗ', "greek small letter eta with dasia and perispomeni and ypogegrammeni"), - (0x1F98, 'ᾘ', "greek capital letter eta with psili and prosgegrammeni"), - (0x1F99, 'ᾙ', "greek capital letter eta with dasia and prosgegrammeni"), - (0x1F9A, 'ᾚ', "greek capital letter eta with psili and varia and prosgegrammeni"), - (0x1F9B, 'ᾛ', "greek capital letter eta with dasia and varia and prosgegrammeni"), - (0x1F9C, 'ᾜ', "greek capital letter eta with psili and oxia and prosgegrammeni"), - (0x1F9D, 'ᾝ', "greek capital letter eta with dasia and oxia and prosgegrammeni"), - (0x1F9E, 'ᾞ', "greek capital letter eta with psili and perispomeni and prosgegrammeni"), - (0x1F9F, 'ᾟ', "greek capital letter eta with dasia and perispomeni and prosgegrammeni"), - (0x1FA0, 'ᾠ', "greek small letter omega with psili and ypogegrammeni"), - (0x1FA1, 'ᾡ', "greek small letter omega with dasia and ypogegrammeni"), - (0x1FA2, 'ᾢ', "greek small letter omega with psili and varia and ypogegrammeni"), - (0x1FA3, 'ᾣ', "greek small letter omega with dasia and varia and ypogegrammeni"), - (0x1FA4, 'ᾤ', "greek small letter omega with psili and oxia and ypogegrammeni"), - (0x1FA5, 'ᾥ', "greek small letter omega with dasia and oxia and ypogegrammeni"), - (0x1FA6, 'ᾦ', "greek small letter omega with psili and perispomeni and ypogegrammeni"), - (0x1FA7, 'ᾧ', "greek small letter omega with dasia and perispomeni and ypogegrammeni"), - (0x1FA8, 'ᾨ', "greek capital letter omega with psili and prosgegrammeni"), - (0x1FA9, 'ᾩ', "greek capital letter omega with dasia and prosgegrammeni"), - (0x1FAA, 'ᾪ', "greek capital letter omega with psili and varia and prosgegrammeni"), - (0x1FAB, 'ᾫ', "greek capital letter omega with dasia and varia and prosgegrammeni"), - (0x1FAC, 'ᾬ', "greek capital letter omega with psili and oxia and prosgegrammeni"), - (0x1FAD, 'ᾭ', "greek capital letter omega with dasia and oxia and prosgegrammeni"), - (0x1FAE, 'ᾮ', "greek capital letter omega with psili and perispomeni and prosgegrammeni"), - (0x1FAF, 'ᾯ', "greek capital letter omega with dasia and perispomeni and prosgegrammeni"), - (0x1FB0, 'ᾰ', "greek small letter alpha with vrachy"), - (0x1FB1, 'ᾱ', "greek small letter alpha with macron"), - (0x1FB2, 'ᾲ', "greek small letter alpha with varia and ypogegrammeni"), - (0x1FB3, 'ᾳ', "greek small letter alpha with ypogegrammeni"), - (0x1FB4, 'ᾴ', "greek small letter alpha with oxia and ypogegrammeni"), - (0x1FB6, 'ᾶ', "greek small letter alpha with perispomeni"), - (0x1FB7, 'ᾷ', "greek small letter alpha with perispomeni and ypogegrammeni"), - (0x1FB8, 'Ᾰ', "greek capital letter alpha with vrachy"), - (0x1FB9, 'Ᾱ', "greek capital letter alpha with macron"), - (0x1FBA, 'Ὰ', "greek capital letter alpha with varia"), - (0x1FBB, 'Ά', "greek capital letter alpha with oxia"), - (0x1FBC, 'ᾼ', "greek capital letter alpha with prosgegrammeni"), - (0x1FBD, '᾽', "greek koronis"), - (0x1FBE, 'ι', "greek prosgegrammeni"), - (0x1FBF, '᾿', "greek psili"), - (0x1FC0, '῀', "greek perispomeni"), - (0x1FC1, '῁', "greek dialytika and perispomeni"), - (0x1FC2, 'ῂ', "greek small letter eta with varia and ypogegrammeni"), - (0x1FC3, 'ῃ', "greek small letter eta with ypogegrammeni"), - (0x1FC4, 'ῄ', "greek small letter eta with oxia and ypogegrammeni"), - (0x1FC6, 'ῆ', "greek small letter eta with perispomeni"), - (0x1FC7, 'ῇ', "greek small letter eta with perispomeni and ypogegrammeni"), - (0x1FC8, 'Ὲ', "greek capital letter epsilon with varia"), - (0x1FC9, 'Έ', "greek capital letter epsilon with oxia"), - (0x1FCA, 'Ὴ', "greek capital letter eta with varia"), - (0x1FCB, 'Ή', "greek capital letter eta with oxia"), - (0x1FCC, 'ῌ', "greek capital letter eta with prosgegrammeni"), - (0x1FCD, '῍', "greek psili and varia"), - (0x1FCE, '῎', "greek psili and oxia"), - (0x1FCF, '῏', "greek psili and perispomeni"), - (0x1FD0, 'ῐ', "greek small letter iota with vrachy"), - (0x1FD1, 'ῑ', "greek small letter iota with macron"), - (0x1FD2, 'ῒ', "greek small letter iota with dialytika and varia"), - (0x1FD3, 'ΐ', "greek small letter iota with dialytika and oxia"), - (0x1FD6, 'ῖ', "greek small letter iota with perispomeni"), - (0x1FD7, 'ῗ', "greek small letter iota with dialytika and perispomeni"), - (0x1FD8, 'Ῐ', "greek capital letter iota with vrachy"), - (0x1FD9, 'Ῑ', "greek capital letter iota with macron"), - (0x1FDA, 'Ὶ', "greek capital letter iota with varia"), - (0x1FDB, 'Ί', "greek capital letter iota with oxia"), - (0x1FDD, '῝', "greek dasia and varia"), - (0x1FDE, '῞', "greek dasia and oxia"), - (0x1FDF, '῟', "greek dasia and perispomeni"), - (0x1FE0, 'ῠ', "greek small letter upsilon with vrachy"), - (0x1FE1, 'ῡ', "greek small letter upsilon with macron"), - (0x1FE2, 'ῢ', "greek small letter upsilon with dialytika and varia"), - (0x1FE3, 'ΰ', "greek small letter upsilon with dialytika and oxia"), - (0x1FE4, 'ῤ', "greek small letter rho with psili"), - (0x1FE5, 'ῥ', "greek small letter rho with dasia"), - (0x1FE6, 'ῦ', "greek small letter upsilon with perispomeni"), - (0x1FE7, 'ῧ', "greek small letter upsilon with dialytika and perispomeni"), - (0x1FE8, 'Ῠ', "greek capital letter upsilon with vrachy"), - (0x1FE9, 'Ῡ', "greek capital letter upsilon with macron"), - (0x1FEA, 'Ὺ', "greek capital letter upsilon with varia"), - (0x1FEB, 'Ύ', "greek capital letter upsilon with oxia"), - (0x1FEC, 'Ῥ', "greek capital letter rho with dasia"), - (0x1FED, '῭', "greek dialytika and varia"), - (0x1FEE, '΅', "greek dialytika and oxia"), - (0x1FEF, '`', "greek varia"), - (0x1FF2, 'ῲ', "greek small letter omega with varia and ypogegrammeni"), - (0x1FF3, 'ῳ', "greek small letter omega with ypogegrammeni"), - (0x1FF4, 'ῴ', "greek small letter omega with oxia and ypogegrammeni"), - (0x1FF6, 'ῶ', "greek small letter omega with perispomeni"), - (0x1FF7, 'ῷ', "greek small letter omega with perispomeni and ypogegrammeni"), - (0x1FF8, 'Ὸ', "greek capital letter omicron with varia"), - (0x1FF9, 'Ό', "greek capital letter omicron with oxia"), - (0x1FFA, 'Ὼ', "greek capital letter omega with varia"), - (0x1FFB, 'Ώ', "greek capital letter omega with oxia"), - (0x1FFC, 'ῼ', "greek capital letter omega with prosgegrammeni"), - (0x1FFD, '´', "greek oxia"), - (0x1FFE, '῾', "greek dasia"), - (0x2013, '–', "en dash"), - (0x2014, '—', "em dash"), - (0x2015, '―', "horizontal bar"), - (0x2018, '‘', "left single quotation mark"), - (0x2019, '’', "right single quotation mark"), - (0x201A, '‚', "single low-9 quotation mark"), - (0x201C, '“', "left double quotation mark"), - (0x201D, '”', "right double quotation mark"), - (0x201E, '„', "double low-9 quotation mark"), - (0x2020, '†', "dagger"), - (0x2021, '‡', "double dagger"), - (0x2022, '•', "bullet"), - (0x2026, '…', "horizontal ellipsis"), - (0x2030, '‰', "per mille sign"), - (0x2039, '‹', "single left-pointing angle quotation mark"), - (0x203A, '›', "single right-pointing angle quotation mark"), - (0x2044, '⁄', "fraction slash"), - (0x2070, '⁰', "superscript zero"), - (0x2074, '⁴', "superscript four"), - (0x2075, '⁵', "superscript five"), - (0x2076, '⁶', "superscript six"), - (0x2077, '⁷', "superscript seven"), - (0x2078, '⁸', "superscript eight"), - (0x2079, '⁹', "superscript nine"), - (0x2080, '₀', "subscript zero"), - (0x2081, '₁', "subscript one"), - (0x2082, '₂', "subscript two"), - (0x2083, '₃', "subscript three"), - (0x2084, '₄', "subscript four"), - (0x2085, '₅', "subscript five"), - (0x2086, '₆', "subscript six"), - (0x2087, '₇', "subscript seven"), - (0x2088, '₈', "subscript eight"), - (0x2089, '₉', "subscript nine"), - (0x20AC, '€', "euro sign"), - (0x20AE, '₮', "tugrik sign"), - (0x20B4, '₴', "hryvnia sign"), - (0x20B9, '₹', "indian rupee sign"), - (0x2113, 'ℓ', "script small l"), - (0x2116, '№', "numero sign"), - (0x2122, '™', "trade mark sign"), - (0x2126, 'Ω', "ohm sign"), - (0x212E, '℮', "estimated symbol"), - (0x2153, '⅓', "vulgar fraction one third"), - (0x2154, '⅔', "vulgar fraction two thirds"), - (0x2155, '⅕', "vulgar fraction one fifth"), - (0x2156, '⅖', "vulgar fraction two fifths"), - (0x2157, '⅗', "vulgar fraction three fifths"), - (0x2158, '⅘', "vulgar fraction four fifths"), - (0x2159, '⅙', "vulgar fraction one sixth"), - (0x215A, '⅚', "vulgar fraction five sixths"), - (0x215B, '⅛', "vulgar fraction one eighth"), - (0x215C, '⅜', "vulgar fraction three eighths"), - (0x215D, '⅝', "vulgar fraction five eighths"), - (0x215E, '⅞', "vulgar fraction seven eighths"), - (0x2202, '∂', "partial differential"), - (0x2206, '∆', "increment"), - (0x220F, '∏', "n-ary product"), - (0x2211, '∑', "n-ary summation"), - (0x2212, '−', "minus sign"), - (0x2215, '∕', "division slash"), - (0x2219, '∙', "bullet operator"), - (0x221A, '√', "square root"), - (0x221E, '∞', "infinity"), - (0x222B, '∫', "integral"), - (0x2248, '≈', "almost equal to"), - (0x2260, '≠', "not equal to"), - (0x2264, '≤', "less-than or equal to"), - (0x2265, '≥', "greater-than or equal to"), - (0x25CA, '◊', "lozenge"), - // (0xE0FF, '', "ubuntu logo large"), - // (0xEFFD, '', "0.830"), - (0xF000, '', "uniF000"), - (0xF001, '', "fi"), - (0xF002, '', "fl"), - // (0xF0FF, '', "ubuntu logo small"), - // (0xF200, '', "ubuntu"), - (0xF506, '', "oneseventh"), - (0xF507, '', "twosevenths"), - (0xF508, '', "threesevenths"), - (0xF509, '', "foursevenths"), - (0xF50A, '', "fivesevenths"), - (0xF50B, '', "sixsevenths"), - (0xF50C, '', "oneninth"), - (0xF50D, '', "twoninths"), - (0xF50E, '', "fourninths"), - (0xF50F, '', "fiveninths"), - (0xF510, '', "sevenninths"), - (0xF511, '', "eightninths"), - (0xF800, '', "zero.alt"), - (0xF801, '', "one.alt"), - (0xF802, '', "two.alt"), - (0xF803, '', "three.alt"), - (0xF804, '', "four.alt"), - (0xF805, '', "five.alt"), - (0xF806, '', "six.alt"), - (0xF807, '', "seven.alt"), - (0xF808, '', "eight.alt"), - (0xF809, '', "nine.alt"), - (0xF80A, '', "zero.sups"), - (0xF80B, '', "one.sups"), - (0xF80C, '', "two.sups"), - (0xF80D, '', "three.sups"), - (0xF80E, '', "four.sups"), - (0xF80F, '', "five.sups"), - (0xF810, '', "six.sups"), - (0xF811, '', "seven.sups"), - (0xF812, '', "eight.sups"), - (0xF813, '', "nine.sups"), - (0xF814, '', "zero.sinf"), - (0xF815, '', "one.sinf"), - (0xF816, '', "two.sinf"), - (0xF817, '', "three.sinf"), - (0xF818, '', "four.sinf"), - (0xF819, '', "five.sinf"), - (0xF81A, '', "six.sinf"), - (0xF81B, '', "seven.sinf"), - (0xF81C, '', "eight.sinf"), - (0xF81D, '', "nine.sinf"), - (0xFB00, 'ff', "latin small ligature ff"), - (0xFB01, 'fi', "latin small ligature fi"), - (0xFB02, 'fl', "latin small ligature fl"), - (0xFB03, 'ffi', "latin small ligature ffi"), - (0xFB04, 'ffl', "latin small ligature ffl"), -]; diff --git a/egui_demo_lib/src/apps/demo/mod.rs b/egui_demo_lib/src/apps/demo/mod.rs index 14acb7c6..9a89160d 100644 --- a/egui_demo_lib/src/apps/demo/mod.rs +++ b/egui_demo_lib/src/apps/demo/mod.rs @@ -9,8 +9,6 @@ pub mod dancing_strings; pub mod demo_app_windows; pub mod drag_and_drop; pub mod font_book; -pub mod font_contents_emoji; -pub mod font_contents_ubuntu; pub mod layout_test; pub mod misc_demo_window; pub mod multi_touch; diff --git a/epaint/src/text/font.rs b/epaint/src/text/font.rs index 412796e6..6f3f39db 100644 --- a/epaint/src/text/font.rs +++ b/epaint/src/text/font.rs @@ -8,6 +8,7 @@ use crate::{ }; use ahash::AHashMap; use emath::{vec2, Vec2}; +use std::collections::BTreeSet; use std::sync::Arc; // ---------------------------------------------------------------------------- @@ -101,6 +102,24 @@ impl FontImpl { } } + /// An un-ordered iterator over all supported characters. + fn characters(&self) -> impl Iterator + '_ { + use ab_glyph::Font as _; + self.ab_glyph_font + .codepoint_ids() + .map(|(_, chr)| chr) + .filter(|chr| { + !matches!( + chr, + // Strip out a religious symbol with secondary nefarious interpretation: + '\u{534d}' | '\u{5350}' | + + // Ignore ubuntu-specific stuff in `Ubuntu-Light.ttf`: + '\u{E0FF}' | '\u{EFFD}' | '\u{F0FF}' | '\u{F200}' + ) + }) + } + /// `\n` will result in `None` fn glyph_info(&self, c: char) -> Option { { @@ -173,6 +192,7 @@ type FontIndex = usize; pub struct Font { text_style: TextStyle, fonts: Vec>, + characters: std::collections::BTreeSet, replacement_glyph: (FontIndex, GlyphInfo), pixels_per_point: f32, row_height: f32, @@ -181,10 +201,16 @@ pub struct Font { impl Font { pub fn new(text_style: TextStyle, fonts: Vec>) -> Self { + let mut characters = BTreeSet::new(); + for font in &fonts { + characters.extend(font.characters()); + } + if fonts.is_empty() { return Self { text_style, fonts, + characters, replacement_glyph: Default::default(), pixels_per_point: 0.0, row_height: 0.0, @@ -198,6 +224,7 @@ impl Font { let mut slf = Self { text_style, fonts, + characters, replacement_glyph: Default::default(), pixels_per_point, row_height, @@ -230,6 +257,11 @@ impl Font { slf } + /// All supported characters + pub fn characters(&self) -> &BTreeSet { + &self.characters + } + #[inline(always)] pub fn text_style(&self) -> TextStyle { self.text_style