1
1
mirror of https://github.com/wez/wezterm.git synced 2024-09-17 17:57:28 +03:00

termwiz: improve performance of emoji presentation lookup

This commit is contained in:
Wez Furlong 2021-08-11 14:26:57 -07:00
parent 3370466dc4
commit d51f5f7670
5 changed files with 123 additions and 268 deletions

1
Cargo.lock generated
View File

@ -4323,6 +4323,7 @@ dependencies = [
"terminfo",
"termios 0.3.3",
"thiserror",
"ucd-trie",
"unicode-segmentation",
"unicode-width",
"varbincode",

View File

@ -34,6 +34,7 @@ terminfo = "0.7"
thiserror = "1.0"
unicode-segmentation = "1.7"
unicode-width = "0.1"
ucd-trie = "0.1"
xi-unicode = "0.3"
vtparse = { version="0.5", path="../vtparse" }

View File

@ -10,13 +10,12 @@ impl Presentation {
/// by a variation selector
pub fn for_grapheme(s: &str) -> (Self, Option<Self>) {
let mut presentation = Self::Text;
let mut variation = None;
for c in s.chars() {
if c == '\u{FE0F}' {
// Explicit emoji presentation
variation.replace(Self::Emoji);
return (presentation, Some(Self::Emoji));
} else if c == '\u{FE0E}' {
variation.replace(Self::Text);
return (presentation, Some(Self::Text));
} else if Self::for_char(c) == Self::Emoji {
presentation = Self::Emoji;
}
@ -26,274 +25,14 @@ impl Presentation {
// change presentation when we identify an
// emoji char.
}
(presentation, variation)
(presentation, None)
}
pub fn for_char(c: char) -> Self {
// Matches Emoji_Presentation properties from Unicode 13.0
match c {
'\u{231A}'..='\u{231B}'
| '\u{23E9}'..='\u{23EC}'
| '\u{23F0}'
| '\u{23F3}'
| '\u{25FD}'..='\u{25FE}'
| '\u{2614}'..='\u{2615}'
| '\u{2648}'..='\u{2653}'
| '\u{267F}'
| '\u{2693}'
| '\u{26A1}'
| '\u{26AA}'..='\u{26AB}'
| '\u{26BD}'..='\u{26BE}'
| '\u{26C4}'..='\u{26C5}'
| '\u{26CE}'
| '\u{26D4}'
| '\u{26EA}'
| '\u{26F2}'..='\u{26F3}'
| '\u{26F5}'
| '\u{26FA}'
| '\u{26FD}'
| '\u{2705}'
| '\u{270A}'..='\u{270B}'
| '\u{2728}'
| '\u{274C}'
| '\u{274E}'
| '\u{2753}'..='\u{2755}'
| '\u{2757}'
| '\u{2795}'..='\u{2797}'
| '\u{27B0}'
| '\u{27BF}'
| '\u{2B1B}'..='\u{2B1C}'
| '\u{2B50}'
| '\u{2B55}'
| '\u{1F004}'
| '\u{1F0CF}'
| '\u{1F18E}'
| '\u{1F191}'..='\u{1F19A}'
| '\u{1F1E6}'..='\u{1F1FF}'
| '\u{1F201}'
| '\u{1F21A}'
| '\u{1F22F}'
| '\u{1F232}'..='\u{1F236}'
| '\u{1F238}'..='\u{1F23A}'
| '\u{1F250}'..='\u{1F251}'
| '\u{1F300}'..='\u{1F30C}'
| '\u{1F30D}'..='\u{1F30E}'
| '\u{1F30F}'
| '\u{1F310}'
| '\u{1F311}'
| '\u{1F312}'
| '\u{1F313}'..='\u{1F315}'
| '\u{1F316}'..='\u{1F318}'
| '\u{1F319}'
| '\u{1F31A}'
| '\u{1F31B}'
| '\u{1F31C}'
| '\u{1F31D}'..='\u{1F31E}'
| '\u{1F31F}'..='\u{1F320}'
| '\u{1F32D}'..='\u{1F32F}'
| '\u{1F330}'..='\u{1F331}'
| '\u{1F332}'..='\u{1F333}'
| '\u{1F334}'..='\u{1F335}'
| '\u{1F337}'..='\u{1F34A}'
| '\u{1F34B}'
| '\u{1F34C}'..='\u{1F34F}'
| '\u{1F350}'
| '\u{1F351}'..='\u{1F37B}'
| '\u{1F37C}'
| '\u{1F37E}'..='\u{1F37F}'
| '\u{1F380}'..='\u{1F393}'
| '\u{1F3A0}'..='\u{1F3C4}'
| '\u{1F3C5}'
| '\u{1F3C6}'
| '\u{1F3C7}'
| '\u{1F3C8}'
| '\u{1F3C9}'
| '\u{1F3CA}'
| '\u{1F3CF}'..='\u{1F3D3}'
| '\u{1F3E0}'..='\u{1F3E3}'
| '\u{1F3E4}'
| '\u{1F3E5}'..='\u{1F3F0}'
| '\u{1F3F4}'
| '\u{1F3F8}'..='\u{1F407}'
| '\u{1F408}'
| '\u{1F409}'..='\u{1F40B}'
| '\u{1F40C}'..='\u{1F40E}'
| '\u{1F40F}'..='\u{1F410}'
| '\u{1F411}'..='\u{1F412}'
| '\u{1F413}'
| '\u{1F414}'
| '\u{1F415}'
| '\u{1F416}'
| '\u{1F417}'..='\u{1F429}'
| '\u{1F42A}'
| '\u{1F42B}'..='\u{1F43E}'
| '\u{1F440}'
| '\u{1F442}'..='\u{1F464}'
| '\u{1F465}'
| '\u{1F466}'..='\u{1F46B}'
| '\u{1F46C}'..='\u{1F46D}'
| '\u{1F46E}'..='\u{1F4AC}'
| '\u{1F4AD}'
| '\u{1F4AE}'..='\u{1F4B5}'
| '\u{1F4B6}'..='\u{1F4B7}'
| '\u{1F4B8}'..='\u{1F4EB}'
| '\u{1F4EC}'..='\u{1F4ED}'
| '\u{1F4EE}'
| '\u{1F4EF}'
| '\u{1F4F0}'..='\u{1F4F4}'
| '\u{1F4F5}'
| '\u{1F4F6}'..='\u{1F4F7}'
| '\u{1F4F8}'
| '\u{1F4F9}'..='\u{1F4FC}'
| '\u{1F4FF}'..='\u{1F502}'
| '\u{1F503}'
| '\u{1F504}'..='\u{1F507}'
| '\u{1F508}'
| '\u{1F509}'
| '\u{1F50A}'..='\u{1F514}'
| '\u{1F515}'
| '\u{1F516}'..='\u{1F52B}'
| '\u{1F52C}'..='\u{1F52D}'
| '\u{1F52E}'..='\u{1F53D}'
| '\u{1F54B}'..='\u{1F54E}'
| '\u{1F550}'..='\u{1F55B}'
| '\u{1F55C}'..='\u{1F567}'
| '\u{1F57A}'
| '\u{1F595}'..='\u{1F596}'
| '\u{1F5A4}'
| '\u{1F5FB}'..='\u{1F5FF}'
| '\u{1F600}'
| '\u{1F601}'..='\u{1F606}'
| '\u{1F607}'..='\u{1F608}'
| '\u{1F609}'..='\u{1F60D}'
| '\u{1F60E}'
| '\u{1F60F}'
| '\u{1F610}'
| '\u{1F611}'
| '\u{1F612}'..='\u{1F614}'
| '\u{1F615}'
| '\u{1F616}'
| '\u{1F617}'
| '\u{1F618}'
| '\u{1F619}'
| '\u{1F61A}'
| '\u{1F61B}'
| '\u{1F61C}'..='\u{1F61E}'
| '\u{1F61F}'
| '\u{1F620}'..='\u{1F625}'
| '\u{1F626}'..='\u{1F627}'
| '\u{1F628}'..='\u{1F62B}'
| '\u{1F62C}'
| '\u{1F62D}'
| '\u{1F62E}'..='\u{1F62F}'
| '\u{1F630}'..='\u{1F633}'
| '\u{1F634}'
| '\u{1F635}'
| '\u{1F636}'
| '\u{1F637}'..='\u{1F640}'
| '\u{1F641}'..='\u{1F644}'
| '\u{1F645}'..='\u{1F64F}'
| '\u{1F680}'
| '\u{1F681}'..='\u{1F682}'
| '\u{1F683}'..='\u{1F685}'
| '\u{1F686}'
| '\u{1F687}'
| '\u{1F688}'
| '\u{1F689}'
| '\u{1F68A}'..='\u{1F68B}'
| '\u{1F68C}'
| '\u{1F68D}'
| '\u{1F68E}'
| '\u{1F68F}'
| '\u{1F690}'
| '\u{1F691}'..='\u{1F693}'
| '\u{1F694}'
| '\u{1F695}'
| '\u{1F696}'
| '\u{1F697}'
| '\u{1F698}'
| '\u{1F699}'..='\u{1F69A}'
| '\u{1F69B}'..='\u{1F6A1}'
| '\u{1F6A2}'
| '\u{1F6A3}'
| '\u{1F6A4}'..='\u{1F6A5}'
| '\u{1F6A6}'
| '\u{1F6A7}'..='\u{1F6AD}'
| '\u{1F6AE}'..='\u{1F6B1}'
| '\u{1F6B2}'
| '\u{1F6B3}'..='\u{1F6B5}'
| '\u{1F6B6}'
| '\u{1F6B7}'..='\u{1F6B8}'
| '\u{1F6B9}'..='\u{1F6BE}'
| '\u{1F6BF}'
| '\u{1F6C0}'
| '\u{1F6C1}'..='\u{1F6C5}'
| '\u{1F6CC}'
| '\u{1F6D0}'
| '\u{1F6D1}'..='\u{1F6D2}'
| '\u{1F6D5}'
| '\u{1F6D6}'..='\u{1F6D7}'
| '\u{1F6EB}'..='\u{1F6EC}'
| '\u{1F6F4}'..='\u{1F6F6}'
| '\u{1F6F7}'..='\u{1F6F8}'
| '\u{1F6F9}'
| '\u{1F6FA}'
| '\u{1F6FB}'..='\u{1F6FC}'
| '\u{1F7E0}'..='\u{1F7EB}'
| '\u{1F90C}'
| '\u{1F90D}'..='\u{1F90F}'
| '\u{1F910}'..='\u{1F918}'
| '\u{1F919}'..='\u{1F91E}'
| '\u{1F91F}'
| '\u{1F920}'..='\u{1F927}'
| '\u{1F928}'..='\u{1F92F}'
| '\u{1F930}'
| '\u{1F931}'..='\u{1F932}'
| '\u{1F933}'..='\u{1F93A}'
| '\u{1F93C}'..='\u{1F93E}'
| '\u{1F93F}'
| '\u{1F940}'..='\u{1F945}'
| '\u{1F947}'..='\u{1F94B}'
| '\u{1F94C}'
| '\u{1F94D}'..='\u{1F94F}'
| '\u{1F950}'..='\u{1F95E}'
| '\u{1F95F}'..='\u{1F96B}'
| '\u{1F96C}'..='\u{1F970}'
| '\u{1F971}'
| '\u{1F972}'
| '\u{1F973}'..='\u{1F976}'
| '\u{1F977}'..='\u{1F978}'
| '\u{1F97A}'
| '\u{1F97B}'
| '\u{1F97C}'..='\u{1F97F}'
| '\u{1F980}'..='\u{1F984}'
| '\u{1F985}'..='\u{1F991}'
| '\u{1F992}'..='\u{1F997}'
| '\u{1F998}'..='\u{1F9A2}'
| '\u{1F9A3}'..='\u{1F9A4}'
| '\u{1F9A5}'..='\u{1F9AA}'
| '\u{1F9AB}'..='\u{1F9AD}'
| '\u{1F9AE}'..='\u{1F9AF}'
| '\u{1F9B0}'..='\u{1F9B9}'
| '\u{1F9BA}'..='\u{1F9BF}'
| '\u{1F9C0}'
| '\u{1F9C1}'..='\u{1F9C2}'
| '\u{1F9C3}'..='\u{1F9CA}'
| '\u{1F9CB}'
| '\u{1F9CD}'..='\u{1F9CF}'
| '\u{1F9D0}'..='\u{1F9E6}'
| '\u{1F9E7}'..='\u{1F9FF}'
| '\u{1FA70}'..='\u{1FA73}'
| '\u{1FA74}'
| '\u{1FA78}'..='\u{1FA7A}'
| '\u{1FA80}'..='\u{1FA82}'
| '\u{1FA83}'..='\u{1FA86}'
| '\u{1FA90}'..='\u{1FA95}'
| '\u{1FA96}'..='\u{1FAA8}'
| '\u{1FAB0}'..='\u{1FAB6}'
| '\u{1FAC0}'..='\u{1FAC2}'
| '\u{1FAD0}'..='\u{1FAD6}' => Self::Emoji,
_ => Self::Text,
if crate::emoji_presentation::EMOJI_PRESENTATION.contains_u32(c as u32) {
Self::Emoji
} else {
Self::Text
}
}
}

View File

@ -0,0 +1,113 @@
// DO NOT EDIT THIS FILE. IT WAS AUTOMATICALLY GENERATED BY:
//
// ucd-generate property-bool . --include Emoji_Presentation --trie-set
//
// Unicode version: 13.0.0.
//
// ucd-generate 0.2.10 is available on crates.io.
pub const EMOJI_PRESENTATION: &'static ::ucd_trie::TrieSet = &::ucd_trie::TrieSet {
tree1_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0,
],
tree2_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 3,
4, 5, 6, 7, 8, 9, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 12, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,
],
tree2_level2: &[
0,
0xC000000,
0x91E0000000000,
0x6000000000000000,
0x300000,
0x80000000000FFF00,
0x60000C0200080000,
0x242C040000104030,
0x10000000C20,
0xB85000,
0x8001000000E00000,
0x18000000,
0x210000,
],
tree3_level1: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level2: &[
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 0, 2, 0, 0, 3, 4, 5, 6, 0, 0, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 13, 19, 13, 20, 0, 0, 0, 21, 0, 0, 0, 0, 22, 23, 13, 24, 0, 25, 26, 27, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
],
tree3_level3: &[
0,
0x10,
0x8000,
0x7FE4000,
0xFFFFFFC000000000,
0x77C800004000002,
0x30000,
0xFFBFE001FFFFFFFF,
0xDFFFFFFFFFFFFFFF,
0xFFFFFFFF000FFFFF,
0xFF11FFFF000F87FF,
0x7FFFFFFFFFFFFFFF,
0xFFFFFFFFFFFFFFFD,
0xFFFFFFFFFFFFFFFF,
0x9FFFFFFFFFFFFFFF,
0x3FFFFFFFFFFFFFFF,
0x40000FFFFFF7800,
0x1000600000,
0xF800000000000000,
0xFFFF,
0x1FF0180000E7103F,
0xFFF00000000,
0xF7FFFFFFFFFFF000,
0xFDFFFFFFFFFFFFBF,
0xFFFFFFFFFFFFEFFF,
0x71F000000000000,
0x7F01FFFFFF007F,
0x7F0007,
],
};

View File

@ -41,6 +41,7 @@
//! * `use_serde` - makes a number of structs serde serializable
mod emoji;
mod emoji_presentation;
pub mod caps;
pub mod cell;