use crate::error::CharClassError;
use super::char_group::GroupName;
pub(super) fn parse_group_name(name: &str) -> Result<GroupName, CharClassError> {
match PARSE_LUT.binary_search_by_key(&name, |(k, _)| k) {
Ok(n) => Ok(PARSE_LUT[n].1),
Err(_) => Err(CharClassError::UnknownNamedClass(name.to_string())),
}
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "dbg", derive(Debug))]
#[allow(non_camel_case_types)]
#[allow(clippy::enum_variant_names)]
#[repr(u8)]
#[rustfmt::skip]
pub(crate) enum Category {
Cased_Letter, Close_Punctuation, Connector_Punctuation, Control, Currency_Symbol,
Dash_Punctuation, Decimal_Number, Enclosing_Mark, Final_Punctuation, Format,
Initial_Punctuation, Letter, Letter_Number, Line_Separator, Lowercase_Letter, Mark, Math_Symbol,
Modifier_Letter, Modifier_Symbol, Nonspacing_Mark, Number, Open_Punctuation, Other,
Other_Letter, Other_Number, Other_Punctuation, Other_Symbol, Paragraph_Separator, Private_Use,
Punctuation, Separator, Space_Separator, Spacing_Mark, Surrogate, Symbol, Titlecase_Letter,
Unassigned, Uppercase_Letter,
}
impl Category {
pub(crate) fn as_str(self) -> &'static str {
#[rustfmt::skip]
static LUT: &[&str] = &[
"LC", "Pe", "Pc", "Cc", "Sc", "Pd", "Nd", "Me", "Pf", "Cf", "Pi", "L", "Nl", "Zl",
"Ll", "M", "Sm", "Lm", "Sk", "Mn", "N", "Ps", "C", "Lo", "No", "Po", "So", "Zp", "Co",
"P", "Z", "Zs", "Mc", "Cs", "S", "Lt", "Cn", "Lu",
];
LUT[self as u8 as usize]
}
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "dbg", derive(Debug))]
#[allow(non_camel_case_types)]
#[allow(clippy::enum_variant_names)]
#[repr(u8)]
#[rustfmt::skip]
pub(crate) enum Script {
Adlam, Ahom, Anatolian_Hieroglyphs, Arabic, Armenian, Avestan, Balinese, Bamum, Bassa_Vah,
Batak, Bengali, Bhaiksuki, Bopomofo, Brahmi, Braille, Buginese, Buhid, Canadian_Aboriginal,
Carian, Caucasian_Albanian, Chakma, Cham, Chorasmian, Cherokee, Common, Coptic, Cuneiform,
Cypriot, Cypro_Minoan, Cyrillic, Deseret, Devanagari, Dives_Akuru, Dogra, Duployan,
Egyptian_Hieroglyphs, Elbasan, Elymaic, Ethiopic, Georgian, Glagolitic, Gothic, Grantha, Greek,
Gujarati, Gunjala_Gondi, Gurmukhi, Han, Hangul, Hanifi_Rohingya, Hanunoo, Hatran, Hebrew,
Hiragana, Imperial_Aramaic, Inherited, Inscriptional_Pahlavi, Inscriptional_Parthian, Javanese,
Kaithi, Kannada, Katakana, Kayah_Li, Kharoshthi, Khitan_Small_Script, Khmer, Khojki, Khudawadi,
Lao, Latin, Lepcha, Limbu, Linear_A, Linear_B, Lisu, Lycian, Lydian, Mahajani, Makasar,
Malayalam, Mandaic, Manichaean, Marchen, Medefaidrin, Masaram_Gondi, Meetei_Mayek,
Mende_Kikakui, Meroitic_Cursive, Meroitic_Hieroglyphs, Miao, Modi, Mongolian, Mro, Multani,
Myanmar, Nabataean, Nandinagari, New_Tai_Lue, Newa, Nko, Nushu, Nyiakeng_Puachue_Hmong, Ogham,
Ol_Chiki, Old_Hungarian, Old_Italic, Old_North_Arabian, Old_Permic, Old_Persian, Old_Sogdian,
Old_South_Arabian, Old_Turkic, Old_Uyghur, Oriya, Osage, Osmanya, Pahawh_Hmong, Palmyrene,
Pau_Cin_Hau, Phags_Pa, Phoenician, Psalter_Pahlavi, Rejang, Runic, Samaritan, Saurashtra,
Sharada, Shavian, Siddham, SignWriting, Sinhala, Sogdian, Sora_Sompeng, Soyombo, Sundanese,
Syloti_Nagri, Syriac, Tagalog, Tagbanwa, Tai_Le, Tai_Tham, Tai_Viet, Takri, Tamil, Tangsa,
Tangut, Telugu, Thaana, Thai, Tibetan, Tifinagh, Tirhuta, Toto, Ugaritic, Vai, Vithkuqi, Wancho,
Warang_Citi, Yezidi, Yi, Zanabazar_Square,
}
impl Script {
pub(crate) fn as_str(self) -> &'static str {
#[rustfmt::skip]
static LUT: &[&str] = &[
"Adlam", "Ahom", "Anatolian_Hieroglyphs", "Arabic", "Armenian", "Avestan", "Balinese",
"Bamum", "Bassa_Vah", "Batak", "Bengali", "Bhaiksuki", "Bopomofo", "Brahmi", "Braille",
"Buginese", "Buhid", "Canadian_Aboriginal", "Carian", "Caucasian_Albanian", "Chakma",
"Cham", "Chorasmian", "Cherokee", "Common", "Coptic", "Cuneiform", "Cypriot",
"Cypro_Minoan", "Cyrillic", "Deseret", "Devanagari", "Dives_Akuru", "Dogra", "Duployan",
"Egyptian_Hieroglyphs", "Elbasan", "Elymaic", "Ethiopic", "Georgian", "Glagolitic",
"Gothic", "Grantha", "Greek", "Gujarati", "Gunjala_Gondi", "Gurmukhi", "Han", "Hangul",
"Hanifi_Rohingya", "Hanunoo", "Hatran", "Hebrew", "Hiragana", "Imperial_Aramaic",
"Inherited", "Inscriptional_Pahlavi", "Inscriptional_Parthian", "Javanese", "Kaithi",
"Kannada", "Katakana", "Kayah_Li", "Kharoshthi", "Khitan_Small_Script", "Khmer",
"Khojki", "Khudawadi", "Lao", "Latin", "Lepcha", "Limbu", "Linear_A", "Linear_B",
"Lisu", "Lycian", "Lydian", "Mahajani", "Makasar", "Malayalam", "Mandaic", "Manichaean",
"Marchen", "Medefaidrin", "Masaram_Gondi", "Meetei_Mayek", "Mende_Kikakui",
"Meroitic_Cursive", "Meroitic_Hieroglyphs", "Miao", "Modi", "Mongolian", "Mro",
"Multani", "Myanmar", "Nabataean", "Nandinagari", "New_Tai_Lue", "Newa", "Nko", "Nushu",
"Nyiakeng_Puachue_Hmong", "Ogham", "Ol_Chiki", "Old_Hungarian", "Old_Italic",
"Old_North_Arabian", "Old_Permic", "Old_Persian", "Old_Sogdian", "Old_South_Arabian",
"Old_Turkic", "Old_Uyghur", "Oriya", "Osage", "Osmanya", "Pahawh_Hmong", "Palmyrene",
"Pau_Cin_Hau", "Phags_Pa", "Phoenician", "Psalter_Pahlavi", "Rejang", "Runic",
"Samaritan", "Saurashtra", "Sharada", "Shavian", "Siddham", "SignWriting", "Sinhala",
"Sogdian", "Sora_Sompeng", "Soyombo", "Sundanese", "Syloti_Nagri", "Syriac", "Tagalog",
"Tagbanwa", "Tai_Le", "Tai_Tham", "Tai_Viet", "Takri", "Tamil", "Tangsa", "Tangut",
"Telugu", "Thaana", "Thai", "Tibetan", "Tifinagh", "Tirhuta", "Toto", "Ugaritic", "Vai",
"Vithkuqi", "Wancho", "Warang_Citi", "Yezidi", "Yi", "Zanb",
];
LUT[self as u8 as usize]
}
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "dbg", derive(Debug))]
#[allow(non_camel_case_types)]
#[allow(clippy::enum_variant_names)]
#[repr(u8)]
#[rustfmt::skip]
pub(crate) enum CodeBlock {
Basic_Latin, Latin_1_Supplement, Latin_Extended_A, Latin_Extended_B, IPA_Extensions,
Spacing_Modifier_Letters, Combining_Diacritical_Marks, Greek_and_Coptic, Cyrillic,
Cyrillic_Supplementary, Armenian, Hebrew, Arabic, Syriac, Thaana, Devanagari, Bengali, Gurmukhi,
Gujarati, Oriya, Tamil, Telugu, Kannada, Malayalam, Sinhala, Thai, Lao, Tibetan, Myanmar,
Georgian, Hangul_Jamo, Ethiopic, Cherokee, Unified_Canadian_Aboriginal_Syllabics, Ogham, Runic,
Tagalog, Hanunoo, Buhid, Tagbanwa, Khmer, Mongolian, Limbu, Tai_Le, Khmer_Symbols,
Phonetic_Extensions, Latin_Extended_Additional, Greek_Extended, General_Punctuation,
Superscripts_and_Subscripts, Currency_Symbols, Combining_Diacritical_Marks_for_Symbols,
Letterlike_Symbols, Number_Forms, Arrows, Mathematical_Operators, Miscellaneous_Technical,
Control_Pictures, Optical_Character_Recognition, Enclosed_Alphanumerics, Box_Drawing,
Block_Elements, Geometric_Shapes, Miscellaneous_Symbols, Dingbats,
Miscellaneous_Mathematical_Symbols_A, Supplemental_Arrows_A, Braille_Patterns,
Supplemental_Arrows_B, Miscellaneous_Mathematical_Symbols_B,
Supplemental_Mathematical_Operators, Miscellaneous_Symbols_and_Arrows, CJK_Radicals_Supplement,
Kangxi_Radicals, Ideographic_Description_Characters, CJK_Symbols_and_Punctuation, Hiragana,
Katakana, Bopomofo, Hangul_Compatibility_Jamo, Kanbun, Bopomofo_Extended,
Katakana_Phonetic_Extensions, Enclosed_CJK_Letters_and_Months, CJK_Compatibility,
CJK_Unified_Ideographs_Extension_A, Yijing_Hexagram_Symbols, CJK_Unified_Ideographs,
Yi_Syllables, Yi_Radicals, Hangul_Syllables, High_Surrogates, High_Private_Use_Surrogates,
Low_Surrogates, Private_Use_Area, CJK_Compatibility_Ideographs, Alphabetic_Presentation_Forms,
Arabic_Presentation_Forms_A, Variation_Selectors, Combining_Half_Marks, CJK_Compatibility_Forms,
Small_Form_Variants, Arabic_Presentation_Forms_B, Halfwidth_and_Fullwidth_Forms, Specials,
}
impl CodeBlock {
pub(crate) fn as_str(self) -> &'static str {
#[rustfmt::skip]
static LUT: &[&str] = &[
"Basic_Latin", "Latin-1_Supplement", "Latin_Extended-A", "Latin_Extended-B",
"IPA_Extensions", "Spacing_Modifier_Letters", "Combining_Diacritical_Marks",
"Greek_and_Coptic", "Cyrillic", "Cyrillic_Supplementary", "Armenian", "Hebrew",
"Arabic", "Syriac", "Thaana", "Devanagari", "Bengali", "Gurmukhi", "Gujarati", "Oriya",
"Tamil", "Telugu", "Kannada", "Malayalam", "Sinhala", "Thai", "Lao", "Tibetan",
"Myanmar", "Georgian", "Hangul_Jamo", "Ethiopic", "Cherokee",
"Unified_Canadian_Aboriginal_Syllabics", "Ogham", "Runic", "Tagalog", "Hanunoo",
"Buhid", "Tagbanwa", "Khmer", "Mongolian", "Limbu", "Tai_Le", "Khmer_Symbols",
"Phonetic_Extensions", "Latin_Extended_Additional", "Greek_Extended",
"General_Punctuation", "Superscripts_and_Subscripts", "Currency_Symbols",
"Combining_Diacritical_Marks_for_Symbols", "Letterlike_Symbols", "Number_Forms",
"Arrows", "Mathematical_Operators", "Miscellaneous_Technical", "Control_Pictures",
"Optical_Character_Recognition", "Enclosed_Alphanumerics", "Box_Drawing",
"Block_Elements", "Geometric_Shapes", "Miscellaneous_Symbols", "Dingbats",
"Miscellaneous_Mathematical_Symbols-A", "Supplemental_Arrows-A", "Braille_Patterns",
"Supplemental_Arrows-B", "Miscellaneous_Mathematical_Symbols-B",
"Supplemental_Mathematical_Operators", "Miscellaneous_Symbols_and_Arrows",
"CJK_Radicals_Supplement", "Kangxi_Radicals", "Ideographic_Description_Characters",
"CJK_Symbols_and_Punctuation", "Hiragana", "Katakana", "Bopomofo",
"Hangul_Compatibility_Jamo", "Kanbun", "Bopomofo_Extended",
"Katakana_Phonetic_Extensions", "Enclosed_CJK_Letters_and_Months", "CJK_Compatibility",
"CJK_Unified_Ideographs_Extension_A", "Yijing_Hexagram_Symbols",
"CJK_Unified_Ideographs", "Yi_Syllables", "Yi_Radicals", "Hangul_Syllables",
"High_Surrogates", "High_Private_Use_Surrogates", "Low_Surrogates", "Private_Use_Area",
"CJK_Compatibility_Ideographs", "Alphabetic_Presentation_Forms",
"Arabic_Presentation_Forms-A", "Variation_Selectors", "Combining_Half_Marks",
"CJK_Compatibility_Forms", "Small_Form_Variants", "Arabic_Presentation_Forms-B",
"Halfwidth_and_Fullwidth_Forms", "Specials",
];
LUT[self as u8 as usize]
}
}
#[derive(Clone, Copy, PartialEq, Eq)]
#[cfg_attr(feature = "dbg", derive(Debug))]
#[allow(non_camel_case_types)]
#[allow(clippy::enum_variant_names)]
#[repr(u8)]
#[rustfmt::skip]
pub(crate) enum OtherProperties {
White_Space, Alphabetic, Noncharacter_Code_Point, Default_Ignorable_Code_Point,
Logical_Order_Exception, Deprecated, Variation_Selector, Uppercase, Lowercase, Soft_Dotted,
Case_Ignorable, Changes_When_Lowercased, Changes_When_Uppercased, Changes_When_Titlecased,
Changes_When_Casefolded, Changes_When_Casemapped, Emoji, Emoji_Presentation, Emoji_Modifier,
Emoji_Modifier_Base, Emoji_Component, Extended_Pictographic, Hex_Digit, ASCII_Hex_Digit,
Join_Control, Joining_Group, Bidi_Control, Bidi_Mirrored, Bidi_Mirroring_Glyph, ID_Continue,
ID_Start, XID_Continue, XID_Start, Pattern_Syntax, Pattern_White_Space, Ideographic,
Unified_Ideograph, Radical, IDS_Binary_Operator, IDS_Trinary_Operator, Math, Quotation_Mark,
Dash, Sentence_Terminal, Terminal_Punctuation, Diacritic, Extender, Grapheme_Base,
Grapheme_Extend, Regional_Indicator,
}
impl OtherProperties {
pub(crate) fn as_str(self) -> &'static str {
#[rustfmt::skip]
static LUT: &[&str] = &[
"White_Space", "Alphabetic", "Noncharacter_Code_Point", "Default_Ignorable_Code_Point",
"Logical_Order_Exception", "Deprecated", "Variation_Selector", "Uppercase", "Lowercase",
"Soft_Dotted", "Case_Ignorable", "Changes_When_Lowercased", "Changes_When_Uppercased",
"Changes_When_Titlecased", "Changes_When_Casefolded", "Changes_When_Casemapped",
"Emoji", "Emoji_Presentation", "Emoji_Modifier", "Emoji_Modifier_Base",
"Emoji_Component", "Extended_Pictographic", "Hex_Digit", "ASCII_Hex_Digit",
"Join_Control", "Joining_Group", "Bidi_Control", "Bidi_Mirrored",
"Bidi_Mirroring_Glyph", "ID_Continue", "ID_Start", "XID_Continue", "XID_Start",
"Pattern_Syntax", "Pattern_White_Space", "Ideographic", "Unified_Ideograph", "Radical",
"IDS_Binary_Operator", "IDS_Trinary_Operator", "Math", "Quotation_Mark", "Dash",
"Sentence_Terminal", "Terminal_Punctuation", "Diacritic", "Extender", "Grapheme_Base",
"Grapheme_Extend", "Regional_Indicator",
];
LUT[self as u8 as usize]
}
}
static PARSE_LUT: &[(&str, GroupName)] = &[
("ASCII_Hex_Digit", GroupName::OtherProperties(OtherProperties::ASCII_Hex_Digit)),
("Adlam", GroupName::Script(Script::Adlam)),
("Adlm", GroupName::Script(Script::Adlam)),
("Aghb", GroupName::Script(Script::Caucasian_Albanian)),
("Ahom", GroupName::Script(Script::Ahom)),
("Alpha", GroupName::OtherProperties(OtherProperties::Alphabetic)),
("Alphabetic", GroupName::OtherProperties(OtherProperties::Alphabetic)),
("Anatolian_Hieroglyphs", GroupName::Script(Script::Anatolian_Hieroglyphs)),
("Arab", GroupName::Script(Script::Arabic)),
("Arabic", GroupName::Script(Script::Arabic)),
("Armenian", GroupName::Script(Script::Armenian)),
("Armi", GroupName::Script(Script::Imperial_Aramaic)),
("Armn", GroupName::Script(Script::Armenian)),
("Avestan", GroupName::Script(Script::Avestan)),
("Avst", GroupName::Script(Script::Avestan)),
("Bali", GroupName::Script(Script::Balinese)),
("Balinese", GroupName::Script(Script::Balinese)),
("Bamu", GroupName::Script(Script::Bamum)),
("Bamum", GroupName::Script(Script::Bamum)),
("Bass", GroupName::Script(Script::Bassa_Vah)),
("Bassa_Vah", GroupName::Script(Script::Bassa_Vah)),
("Batak", GroupName::Script(Script::Batak)),
("Batk", GroupName::Script(Script::Batak)),
("Beng", GroupName::Script(Script::Bengali)),
("Bengali", GroupName::Script(Script::Bengali)),
("Bhaiksuki", GroupName::Script(Script::Bhaiksuki)),
("Bhks", GroupName::Script(Script::Bhaiksuki)),
("Bidi_Control", GroupName::OtherProperties(OtherProperties::Bidi_Control)),
("Bidi_Mirrored", GroupName::OtherProperties(OtherProperties::Bidi_Mirrored)),
("Bidi_Mirroring_Glyph", GroupName::OtherProperties(OtherProperties::Bidi_Mirroring_Glyph)),
("Bopo", GroupName::Script(Script::Bopomofo)),
("Bopomofo", GroupName::Script(Script::Bopomofo)),
("Brah", GroupName::Script(Script::Brahmi)),
("Brahmi", GroupName::Script(Script::Brahmi)),
("Brai", GroupName::Script(Script::Braille)),
("Braille", GroupName::Script(Script::Braille)),
("Bugi", GroupName::Script(Script::Buginese)),
("Buginese", GroupName::Script(Script::Buginese)),
("Buhd", GroupName::Script(Script::Buhid)),
("Buhid", GroupName::Script(Script::Buhid)),
("C", GroupName::Category(Category::Other)),
("Cakm", GroupName::Script(Script::Chakma)),
("Canadian_Aboriginal", GroupName::Script(Script::Canadian_Aboriginal)),
("Cans", GroupName::Script(Script::Canadian_Aboriginal)),
("Cari", GroupName::Script(Script::Carian)),
("Carian", GroupName::Script(Script::Carian)),
("Case_Ignorable", GroupName::OtherProperties(OtherProperties::Case_Ignorable)),
("Cased_Letter", GroupName::Category(Category::Cased_Letter)),
("Caucasian_Albanian", GroupName::Script(Script::Caucasian_Albanian)),
("Cc", GroupName::Category(Category::Control)),
("Cf", GroupName::Category(Category::Format)),
("Chakma", GroupName::Script(Script::Chakma)),
("Cham", GroupName::Script(Script::Cham)),
(
"Changes_When_Casefolded",
GroupName::OtherProperties(OtherProperties::Changes_When_Casefolded),
),
(
"Changes_When_Casemapped",
GroupName::OtherProperties(OtherProperties::Changes_When_Casemapped),
),
(
"Changes_When_Lowercased",
GroupName::OtherProperties(OtherProperties::Changes_When_Lowercased),
),
(
"Changes_When_Titlecased",
GroupName::OtherProperties(OtherProperties::Changes_When_Titlecased),
),
(
"Changes_When_Uppercased",
GroupName::OtherProperties(OtherProperties::Changes_When_Uppercased),
),
("Cher", GroupName::Script(Script::Cherokee)),
("Cherokee", GroupName::Script(Script::Cherokee)),
("Chorasmian", GroupName::Script(Script::Chorasmian)),
("Chrs", GroupName::Script(Script::Chorasmian)),
("Close_Punctuation", GroupName::Category(Category::Close_Punctuation)),
("Cn", GroupName::Category(Category::Unassigned)),
("Co", GroupName::Category(Category::Private_Use)),
("Combining_Mark", GroupName::Category(Category::Mark)),
("Common", GroupName::Script(Script::Common)),
("Connector_Punctuation", GroupName::Category(Category::Connector_Punctuation)),
("Control", GroupName::Category(Category::Control)),
("Copt", GroupName::Script(Script::Coptic)),
("Coptic", GroupName::Script(Script::Coptic)),
("Cpmn", GroupName::Script(Script::Cypro_Minoan)),
("Cprt", GroupName::Script(Script::Cypriot)),
("Cs", GroupName::Category(Category::Surrogate)),
("Cuneiform", GroupName::Script(Script::Cuneiform)),
("Currency_Symbol", GroupName::Category(Category::Currency_Symbol)),
("Cypriot", GroupName::Script(Script::Cypriot)),
("Cypro_Minoan", GroupName::Script(Script::Cypro_Minoan)),
("Cyrillic", GroupName::Script(Script::Cyrillic)),
("Cyrl", GroupName::Script(Script::Cyrillic)),
("Dash", GroupName::OtherProperties(OtherProperties::Dash)),
("Dash_Punctuation", GroupName::Category(Category::Dash_Punctuation)),
("Decimal_Number", GroupName::Category(Category::Decimal_Number)),
(
"Default_Ignorable_Code_Point",
GroupName::OtherProperties(OtherProperties::Default_Ignorable_Code_Point),
),
("Deprecated", GroupName::OtherProperties(OtherProperties::Deprecated)),
("Deseret", GroupName::Script(Script::Deseret)),
("Deva", GroupName::Script(Script::Devanagari)),
("Devanagari", GroupName::Script(Script::Devanagari)),
("Diacritic", GroupName::OtherProperties(OtherProperties::Diacritic)),
("Diak", GroupName::Script(Script::Dives_Akuru)),
("Dives_Akuru", GroupName::Script(Script::Dives_Akuru)),
("Dogr", GroupName::Script(Script::Dogra)),
("Dogra", GroupName::Script(Script::Dogra)),
("Dsrt", GroupName::Script(Script::Deseret)),
("Dupl", GroupName::Script(Script::Duployan)),
("Duployan", GroupName::Script(Script::Duployan)),
("Egyp", GroupName::Script(Script::Egyptian_Hieroglyphs)),
("Egyptian_Hieroglyphs", GroupName::Script(Script::Egyptian_Hieroglyphs)),
("Elba", GroupName::Script(Script::Elbasan)),
("Elbasan", GroupName::Script(Script::Elbasan)),
("Elym", GroupName::Script(Script::Elymaic)),
("Elymaic", GroupName::Script(Script::Elymaic)),
("Emoji", GroupName::OtherProperties(OtherProperties::Emoji)),
("Emoji_Component", GroupName::OtherProperties(OtherProperties::Emoji_Component)),
("Emoji_Modifier", GroupName::OtherProperties(OtherProperties::Emoji_Modifier)),
("Emoji_Modifier_Base", GroupName::OtherProperties(OtherProperties::Emoji_Modifier_Base)),
("Emoji_Presentation", GroupName::OtherProperties(OtherProperties::Emoji_Presentation)),
("Enclosing_Mark", GroupName::Category(Category::Enclosing_Mark)),
("Ethi", GroupName::Script(Script::Ethiopic)),
("Ethiopic", GroupName::Script(Script::Ethiopic)),
("Extended_Pictographic", GroupName::OtherProperties(OtherProperties::Extended_Pictographic)),
("Extender", GroupName::OtherProperties(OtherProperties::Extender)),
("Final_Punctuation", GroupName::Category(Category::Final_Punctuation)),
("Format", GroupName::Category(Category::Format)),
("Geor", GroupName::Script(Script::Georgian)),
("Georgian", GroupName::Script(Script::Georgian)),
("Glag", GroupName::Script(Script::Glagolitic)),
("Glagolitic", GroupName::Script(Script::Glagolitic)),
("Gong", GroupName::Script(Script::Gunjala_Gondi)),
("Gonm", GroupName::Script(Script::Masaram_Gondi)),
("Goth", GroupName::Script(Script::Gothic)),
("Gothic", GroupName::Script(Script::Gothic)),
("Gran", GroupName::Script(Script::Grantha)),
("Grantha", GroupName::Script(Script::Grantha)),
("Grapheme_Base", GroupName::OtherProperties(OtherProperties::Grapheme_Base)),
("Grapheme_Extend", GroupName::OtherProperties(OtherProperties::Grapheme_Extend)),
("Greek", GroupName::Script(Script::Greek)),
("Grek", GroupName::Script(Script::Greek)),
("Gujarati", GroupName::Script(Script::Gujarati)),
("Gujr", GroupName::Script(Script::Gujarati)),
("Gunjala_Gondi", GroupName::Script(Script::Gunjala_Gondi)),
("Gurmukhi", GroupName::Script(Script::Gurmukhi)),
("Guru", GroupName::Script(Script::Gurmukhi)),
("Han", GroupName::Script(Script::Han)),
("Hang", GroupName::Script(Script::Hangul)),
("Hangul", GroupName::Script(Script::Hangul)),
("Hani", GroupName::Script(Script::Han)),
("Hanifi_Rohingya", GroupName::Script(Script::Hanifi_Rohingya)),
("Hano", GroupName::Script(Script::Hanunoo)),
("Hanunoo", GroupName::Script(Script::Hanunoo)),
("Hatr", GroupName::Script(Script::Hatran)),
("Hatran", GroupName::Script(Script::Hatran)),
("Hebr", GroupName::Script(Script::Hebrew)),
("Hebrew", GroupName::Script(Script::Hebrew)),
("Hex_Digit", GroupName::OtherProperties(OtherProperties::Hex_Digit)),
("Hira", GroupName::Script(Script::Hiragana)),
("Hiragana", GroupName::Script(Script::Hiragana)),
("Hluw", GroupName::Script(Script::Anatolian_Hieroglyphs)),
("Hmng", GroupName::Script(Script::Pahawh_Hmong)),
("Hmnp", GroupName::Script(Script::Nyiakeng_Puachue_Hmong)),
("Hung", GroupName::Script(Script::Old_Hungarian)),
("IDS_Binary_Operator", GroupName::OtherProperties(OtherProperties::IDS_Binary_Operator)),
("IDS_Trinary_Operator", GroupName::OtherProperties(OtherProperties::IDS_Trinary_Operator)),
("ID_Continue", GroupName::OtherProperties(OtherProperties::ID_Continue)),
("ID_Start", GroupName::OtherProperties(OtherProperties::ID_Start)),
("Ideographic", GroupName::OtherProperties(OtherProperties::Ideographic)),
("Imperial_Aramaic", GroupName::Script(Script::Imperial_Aramaic)),
(
"InAlphabetic_Presentation_Forms",
GroupName::CodeBlock(CodeBlock::Alphabetic_Presentation_Forms),
),
("InArabic", GroupName::CodeBlock(CodeBlock::Arabic)),
("InArabic_Presentation_Forms_A", GroupName::CodeBlock(CodeBlock::Arabic_Presentation_Forms_A)),
("InArabic_Presentation_Forms_B", GroupName::CodeBlock(CodeBlock::Arabic_Presentation_Forms_B)),
("InArmenian", GroupName::CodeBlock(CodeBlock::Armenian)),
("InArrows", GroupName::CodeBlock(CodeBlock::Arrows)),
("InBasic_Latin", GroupName::CodeBlock(CodeBlock::Basic_Latin)),
("InBengali", GroupName::CodeBlock(CodeBlock::Bengali)),
("InBlock_Elements", GroupName::CodeBlock(CodeBlock::Block_Elements)),
("InBopomofo", GroupName::CodeBlock(CodeBlock::Bopomofo)),
("InBopomofo_Extended", GroupName::CodeBlock(CodeBlock::Bopomofo_Extended)),
("InBox_Drawing", GroupName::CodeBlock(CodeBlock::Box_Drawing)),
("InBraille_Patterns", GroupName::CodeBlock(CodeBlock::Braille_Patterns)),
("InBuhid", GroupName::CodeBlock(CodeBlock::Buhid)),
("InCJK_Compatibility", GroupName::CodeBlock(CodeBlock::CJK_Compatibility)),
("InCJK_Compatibility_Forms", GroupName::CodeBlock(CodeBlock::CJK_Compatibility_Forms)),
(
"InCJK_Compatibility_Ideographs",
GroupName::CodeBlock(CodeBlock::CJK_Compatibility_Ideographs),
),
("InCJK_Radicals_Supplement", GroupName::CodeBlock(CodeBlock::CJK_Radicals_Supplement)),
("InCJK_Symbols_and_Punctuation", GroupName::CodeBlock(CodeBlock::CJK_Symbols_and_Punctuation)),
("InCJK_Unified_Ideographs", GroupName::CodeBlock(CodeBlock::CJK_Unified_Ideographs)),
(
"InCJK_Unified_Ideographs_Extension_A",
GroupName::CodeBlock(CodeBlock::CJK_Unified_Ideographs_Extension_A),
),
("InCherokee", GroupName::CodeBlock(CodeBlock::Cherokee)),
("InCombining_Diacritical_Marks", GroupName::CodeBlock(CodeBlock::Combining_Diacritical_Marks)),
(
"InCombining_Diacritical_Marks_for_Symbols",
GroupName::CodeBlock(CodeBlock::Combining_Diacritical_Marks_for_Symbols),
),
("InCombining_Half_Marks", GroupName::CodeBlock(CodeBlock::Combining_Half_Marks)),
("InControl_Pictures", GroupName::CodeBlock(CodeBlock::Control_Pictures)),
("InCurrency_Symbols", GroupName::CodeBlock(CodeBlock::Currency_Symbols)),
("InCyrillic", GroupName::CodeBlock(CodeBlock::Cyrillic)),
("InCyrillic_Supplementary", GroupName::CodeBlock(CodeBlock::Cyrillic_Supplementary)),
("InDevanagari", GroupName::CodeBlock(CodeBlock::Devanagari)),
("InDingbats", GroupName::CodeBlock(CodeBlock::Dingbats)),
("InEnclosed_Alphanumerics", GroupName::CodeBlock(CodeBlock::Enclosed_Alphanumerics)),
(
"InEnclosed_CJK_Letters_and_Months",
GroupName::CodeBlock(CodeBlock::Enclosed_CJK_Letters_and_Months),
),
("InEthiopic", GroupName::CodeBlock(CodeBlock::Ethiopic)),
("InGeneral_Punctuation", GroupName::CodeBlock(CodeBlock::General_Punctuation)),
("InGeometric_Shapes", GroupName::CodeBlock(CodeBlock::Geometric_Shapes)),
("InGeorgian", GroupName::CodeBlock(CodeBlock::Georgian)),
("InGreek_Extended", GroupName::CodeBlock(CodeBlock::Greek_Extended)),
("InGreek_and_Coptic", GroupName::CodeBlock(CodeBlock::Greek_and_Coptic)),
("InGujarati", GroupName::CodeBlock(CodeBlock::Gujarati)),
("InGurmukhi", GroupName::CodeBlock(CodeBlock::Gurmukhi)),
(
"InHalfwidth_and_Fullwidth_Forms",
GroupName::CodeBlock(CodeBlock::Halfwidth_and_Fullwidth_Forms),
),
("InHangul_Compatibility_Jamo", GroupName::CodeBlock(CodeBlock::Hangul_Compatibility_Jamo)),
("InHangul_Jamo", GroupName::CodeBlock(CodeBlock::Hangul_Jamo)),
("InHangul_Syllables", GroupName::CodeBlock(CodeBlock::Hangul_Syllables)),
("InHanunoo", GroupName::CodeBlock(CodeBlock::Hanunoo)),
("InHebrew", GroupName::CodeBlock(CodeBlock::Hebrew)),
("InHigh_Private_Use_Surrogates", GroupName::CodeBlock(CodeBlock::High_Private_Use_Surrogates)),
("InHigh_Surrogates", GroupName::CodeBlock(CodeBlock::High_Surrogates)),
("InHiragana", GroupName::CodeBlock(CodeBlock::Hiragana)),
("InIPA_Extensions", GroupName::CodeBlock(CodeBlock::IPA_Extensions)),
(
"InIdeographic_Description_Characters",
GroupName::CodeBlock(CodeBlock::Ideographic_Description_Characters),
),
("InKanbun", GroupName::CodeBlock(CodeBlock::Kanbun)),
("InKangxi_Radicals", GroupName::CodeBlock(CodeBlock::Kangxi_Radicals)),
("InKannada", GroupName::CodeBlock(CodeBlock::Kannada)),
("InKatakana", GroupName::CodeBlock(CodeBlock::Katakana)),
(
"InKatakana_Phonetic_Extensions",
GroupName::CodeBlock(CodeBlock::Katakana_Phonetic_Extensions),
),
("InKhmer", GroupName::CodeBlock(CodeBlock::Khmer)),
("InKhmer_Symbols", GroupName::CodeBlock(CodeBlock::Khmer_Symbols)),
("InLao", GroupName::CodeBlock(CodeBlock::Lao)),
("InLatin_1_Supplement", GroupName::CodeBlock(CodeBlock::Latin_1_Supplement)),
("InLatin_Extended_A", GroupName::CodeBlock(CodeBlock::Latin_Extended_A)),
("InLatin_Extended_Additional", GroupName::CodeBlock(CodeBlock::Latin_Extended_Additional)),
("InLatin_Extended_B", GroupName::CodeBlock(CodeBlock::Latin_Extended_B)),
("InLetterlike_Symbols", GroupName::CodeBlock(CodeBlock::Letterlike_Symbols)),
("InLimbu", GroupName::CodeBlock(CodeBlock::Limbu)),
("InLow_Surrogates", GroupName::CodeBlock(CodeBlock::Low_Surrogates)),
("InMalayalam", GroupName::CodeBlock(CodeBlock::Malayalam)),
("InMathematical_Operators", GroupName::CodeBlock(CodeBlock::Mathematical_Operators)),
(
"InMiscellaneous_Mathematical_Symbols_A",
GroupName::CodeBlock(CodeBlock::Miscellaneous_Mathematical_Symbols_A),
),
(
"InMiscellaneous_Mathematical_Symbols_B",
GroupName::CodeBlock(CodeBlock::Miscellaneous_Mathematical_Symbols_B),
),
("InMiscellaneous_Symbols", GroupName::CodeBlock(CodeBlock::Miscellaneous_Symbols)),
(
"InMiscellaneous_Symbols_and_Arrows",
GroupName::CodeBlock(CodeBlock::Miscellaneous_Symbols_and_Arrows),
),
("InMiscellaneous_Technical", GroupName::CodeBlock(CodeBlock::Miscellaneous_Technical)),
("InMongolian", GroupName::CodeBlock(CodeBlock::Mongolian)),
("InMyanmar", GroupName::CodeBlock(CodeBlock::Myanmar)),
("InNumber_Forms", GroupName::CodeBlock(CodeBlock::Number_Forms)),
("InOgham", GroupName::CodeBlock(CodeBlock::Ogham)),
(
"InOptical_Character_Recognition",
GroupName::CodeBlock(CodeBlock::Optical_Character_Recognition),
),
("InOriya", GroupName::CodeBlock(CodeBlock::Oriya)),
("InPhonetic_Extensions", GroupName::CodeBlock(CodeBlock::Phonetic_Extensions)),
("InPrivate_Use_Area", GroupName::CodeBlock(CodeBlock::Private_Use_Area)),
("InRunic", GroupName::CodeBlock(CodeBlock::Runic)),
("InSinhala", GroupName::CodeBlock(CodeBlock::Sinhala)),
("InSmall_Form_Variants", GroupName::CodeBlock(CodeBlock::Small_Form_Variants)),
("InSpacing_Modifier_Letters", GroupName::CodeBlock(CodeBlock::Spacing_Modifier_Letters)),
("InSpecials", GroupName::CodeBlock(CodeBlock::Specials)),
("InSuperscripts_and_Subscripts", GroupName::CodeBlock(CodeBlock::Superscripts_and_Subscripts)),
("InSupplemental_Arrows_A", GroupName::CodeBlock(CodeBlock::Supplemental_Arrows_A)),
("InSupplemental_Arrows_B", GroupName::CodeBlock(CodeBlock::Supplemental_Arrows_B)),
(
"InSupplemental_Mathematical_Operators",
GroupName::CodeBlock(CodeBlock::Supplemental_Mathematical_Operators),
),
("InSyriac", GroupName::CodeBlock(CodeBlock::Syriac)),
("InTagalog", GroupName::CodeBlock(CodeBlock::Tagalog)),
("InTagbanwa", GroupName::CodeBlock(CodeBlock::Tagbanwa)),
("InTai_Le", GroupName::CodeBlock(CodeBlock::Tai_Le)),
("InTamil", GroupName::CodeBlock(CodeBlock::Tamil)),
("InTelugu", GroupName::CodeBlock(CodeBlock::Telugu)),
("InThaana", GroupName::CodeBlock(CodeBlock::Thaana)),
("InThai", GroupName::CodeBlock(CodeBlock::Thai)),
("InTibetan", GroupName::CodeBlock(CodeBlock::Tibetan)),
(
"InUnified_Canadian_Aboriginal_Syllabics",
GroupName::CodeBlock(CodeBlock::Unified_Canadian_Aboriginal_Syllabics),
),
("InVariation_Selectors", GroupName::CodeBlock(CodeBlock::Variation_Selectors)),
("InYi_Radicals", GroupName::CodeBlock(CodeBlock::Yi_Radicals)),
("InYi_Syllables", GroupName::CodeBlock(CodeBlock::Yi_Syllables)),
("InYijing_Hexagram_Symbols", GroupName::CodeBlock(CodeBlock::Yijing_Hexagram_Symbols)),
("Inherited", GroupName::Script(Script::Inherited)),
("Initial_Punctuation", GroupName::Category(Category::Initial_Punctuation)),
("Inscriptional_Pahlavi", GroupName::Script(Script::Inscriptional_Pahlavi)),
("Inscriptional_Parthian", GroupName::Script(Script::Inscriptional_Parthian)),
("Ital", GroupName::Script(Script::Old_Italic)),
("Java", GroupName::Script(Script::Javanese)),
("Javanese", GroupName::Script(Script::Javanese)),
("Join_Control", GroupName::OtherProperties(OtherProperties::Join_Control)),
("Joining_Group", GroupName::OtherProperties(OtherProperties::Joining_Group)),
("Kaithi", GroupName::Script(Script::Kaithi)),
("Kali", GroupName::Script(Script::Kayah_Li)),
("Kana", GroupName::Script(Script::Katakana)),
("Kannada", GroupName::Script(Script::Kannada)),
("Katakana", GroupName::Script(Script::Katakana)),
("Kayah_Li", GroupName::Script(Script::Kayah_Li)),
("Khar", GroupName::Script(Script::Kharoshthi)),
("Kharoshthi", GroupName::Script(Script::Kharoshthi)),
("Khitan_Small_Script", GroupName::Script(Script::Khitan_Small_Script)),
("Khmer", GroupName::Script(Script::Khmer)),
("Khmr", GroupName::Script(Script::Khmer)),
("Khoj", GroupName::Script(Script::Khojki)),
("Khojki", GroupName::Script(Script::Khojki)),
("Khudawadi", GroupName::Script(Script::Khudawadi)),
("Kits", GroupName::Script(Script::Khitan_Small_Script)),
("Knda", GroupName::Script(Script::Kannada)),
("Kthi", GroupName::Script(Script::Kaithi)),
("L", GroupName::Category(Category::Letter)),
("LC", GroupName::Category(Category::Cased_Letter)),
("Lana", GroupName::Script(Script::Tai_Tham)),
("Lao", GroupName::Script(Script::Lao)),
("Laoo", GroupName::Script(Script::Lao)),
("Latin", GroupName::Script(Script::Latin)),
("Latn", GroupName::Script(Script::Latin)),
("Lepc", GroupName::Script(Script::Lepcha)),
("Lepcha", GroupName::Script(Script::Lepcha)),
("Letter", GroupName::Category(Category::Letter)),
("Letter_Number", GroupName::Category(Category::Letter_Number)),
("Limb", GroupName::Script(Script::Limbu)),
("Limbu", GroupName::Script(Script::Limbu)),
("Lina", GroupName::Script(Script::Linear_A)),
("Linb", GroupName::Script(Script::Linear_B)),
("Line_Separator", GroupName::Category(Category::Line_Separator)),
("Linear_A", GroupName::Script(Script::Linear_A)),
("Linear_B", GroupName::Script(Script::Linear_B)),
("Lisu", GroupName::Script(Script::Lisu)),
("Ll", GroupName::Category(Category::Lowercase_Letter)),
("Lm", GroupName::Category(Category::Modifier_Letter)),
("Lo", GroupName::Category(Category::Other_Letter)),
(
"Logical_Order_Exception",
GroupName::OtherProperties(OtherProperties::Logical_Order_Exception),
),
("Lowercase", GroupName::OtherProperties(OtherProperties::Lowercase)),
("Lowercase_Letter", GroupName::Category(Category::Lowercase_Letter)),
("Lt", GroupName::Category(Category::Titlecase_Letter)),
("Lu", GroupName::Category(Category::Uppercase_Letter)),
("Lyci", GroupName::Script(Script::Lycian)),
("Lycian", GroupName::Script(Script::Lycian)),
("Lydi", GroupName::Script(Script::Lydian)),
("Lydian", GroupName::Script(Script::Lydian)),
("M", GroupName::Category(Category::Mark)),
("Mahajani", GroupName::Script(Script::Mahajani)),
("Mahj", GroupName::Script(Script::Mahajani)),
("Maka", GroupName::Script(Script::Makasar)),
("Makasar", GroupName::Script(Script::Makasar)),
("Malayalam", GroupName::Script(Script::Malayalam)),
("Mand", GroupName::Script(Script::Mandaic)),
("Mandaic", GroupName::Script(Script::Mandaic)),
("Mani", GroupName::Script(Script::Manichaean)),
("Manichaean", GroupName::Script(Script::Manichaean)),
("Marc", GroupName::Script(Script::Marchen)),
("Marchen", GroupName::Script(Script::Marchen)),
("Mark", GroupName::Category(Category::Mark)),
("Masaram_Gondi", GroupName::Script(Script::Masaram_Gondi)),
("Math", GroupName::OtherProperties(OtherProperties::Math)),
("Math_Symbol", GroupName::Category(Category::Math_Symbol)),
("Mc", GroupName::Category(Category::Spacing_Mark)),
("Me", GroupName::Category(Category::Enclosing_Mark)),
("Medefaidrin", GroupName::Script(Script::Medefaidrin)),
("Medf", GroupName::Script(Script::Medefaidrin)),
("Meetei_Mayek", GroupName::Script(Script::Meetei_Mayek)),
("Mend", GroupName::Script(Script::Mende_Kikakui)),
("Mende_Kikakui", GroupName::Script(Script::Mende_Kikakui)),
("Merc", GroupName::Script(Script::Meroitic_Cursive)),
("Mero", GroupName::Script(Script::Meroitic_Hieroglyphs)),
("Meroitic_Cursive", GroupName::Script(Script::Meroitic_Cursive)),
("Meroitic_Hieroglyphs", GroupName::Script(Script::Meroitic_Hieroglyphs)),
("Miao", GroupName::Script(Script::Miao)),
("Mlym", GroupName::Script(Script::Malayalam)),
("Mn", GroupName::Category(Category::Nonspacing_Mark)),
("Modi", GroupName::Script(Script::Modi)),
("Modifier_Letter", GroupName::Category(Category::Modifier_Letter)),
("Modifier_Symbol", GroupName::Category(Category::Modifier_Symbol)),
("Mong", GroupName::Script(Script::Mongolian)),
("Mongolian", GroupName::Script(Script::Mongolian)),
("Mro", GroupName::Script(Script::Mro)),
("Mroo", GroupName::Script(Script::Mro)),
("Mtei", GroupName::Script(Script::Meetei_Mayek)),
("Mult", GroupName::Script(Script::Multani)),
("Multani", GroupName::Script(Script::Multani)),
("Myanmar", GroupName::Script(Script::Myanmar)),
("Mymr", GroupName::Script(Script::Myanmar)),
("N", GroupName::Category(Category::Number)),
("Nabataean", GroupName::Script(Script::Nabataean)),
("Nand", GroupName::Script(Script::Nandinagari)),
("Nandinagari", GroupName::Script(Script::Nandinagari)),
("Narb", GroupName::Script(Script::Old_North_Arabian)),
("Nbat", GroupName::Script(Script::Nabataean)),
("Nd", GroupName::Category(Category::Decimal_Number)),
("New_Tai_Lue", GroupName::Script(Script::New_Tai_Lue)),
("Newa", GroupName::Script(Script::Newa)),
("Nko", GroupName::Script(Script::Nko)),
("Nkoo", GroupName::Script(Script::Nko)),
("Nl", GroupName::Category(Category::Letter_Number)),
("No", GroupName::Category(Category::Other_Number)),
(
"Noncharacter_Code_Point",
GroupName::OtherProperties(OtherProperties::Noncharacter_Code_Point),
),
("Nonspacing_Mark", GroupName::Category(Category::Nonspacing_Mark)),
("Nshu", GroupName::Script(Script::Nushu)),
("Number", GroupName::Category(Category::Number)),
("Nushu", GroupName::Script(Script::Nushu)),
("Nyiakeng_Puachue_Hmong", GroupName::Script(Script::Nyiakeng_Puachue_Hmong)),
("Ogam", GroupName::Script(Script::Ogham)),
("Ogham", GroupName::Script(Script::Ogham)),
("Ol_Chiki", GroupName::Script(Script::Ol_Chiki)),
("Olck", GroupName::Script(Script::Ol_Chiki)),
("Old_Hungarian", GroupName::Script(Script::Old_Hungarian)),
("Old_Italic", GroupName::Script(Script::Old_Italic)),
("Old_North_Arabian", GroupName::Script(Script::Old_North_Arabian)),
("Old_Permic", GroupName::Script(Script::Old_Permic)),
("Old_Persian", GroupName::Script(Script::Old_Persian)),
("Old_Sogdian", GroupName::Script(Script::Old_Sogdian)),
("Old_South_Arabian", GroupName::Script(Script::Old_South_Arabian)),
("Old_Turkic", GroupName::Script(Script::Old_Turkic)),
("Old_Uyghur", GroupName::Script(Script::Old_Uyghur)),
("Open_Punctuation", GroupName::Category(Category::Open_Punctuation)),
("Oriya", GroupName::Script(Script::Oriya)),
("Orkh", GroupName::Script(Script::Old_Turkic)),
("Orya", GroupName::Script(Script::Oriya)),
("Osage", GroupName::Script(Script::Osage)),
("Osge", GroupName::Script(Script::Osage)),
("Osma", GroupName::Script(Script::Osmanya)),
("Osmanya", GroupName::Script(Script::Osmanya)),
("Other", GroupName::Category(Category::Other)),
("Other_Letter", GroupName::Category(Category::Other_Letter)),
("Other_Number", GroupName::Category(Category::Other_Number)),
("Other_Punctuation", GroupName::Category(Category::Other_Punctuation)),
("Other_Symbol", GroupName::Category(Category::Other_Symbol)),
("Ougr", GroupName::Script(Script::Old_Uyghur)),
("P", GroupName::Category(Category::Punctuation)),
("Pahawh_Hmong", GroupName::Script(Script::Pahawh_Hmong)),
("Palm", GroupName::Script(Script::Palmyrene)),
("Palmyrene", GroupName::Script(Script::Palmyrene)),
("Paragraph_Separator", GroupName::Category(Category::Paragraph_Separator)),
("Pattern_Syntax", GroupName::OtherProperties(OtherProperties::Pattern_Syntax)),
("Pattern_White_Space", GroupName::OtherProperties(OtherProperties::Pattern_White_Space)),
("Pau_Cin_Hau", GroupName::Script(Script::Pau_Cin_Hau)),
("Pauc", GroupName::Script(Script::Pau_Cin_Hau)),
("Pc", GroupName::Category(Category::Connector_Punctuation)),
("Pd", GroupName::Category(Category::Dash_Punctuation)),
("Pe", GroupName::Category(Category::Close_Punctuation)),
("Perm", GroupName::Script(Script::Old_Permic)),
("Pf", GroupName::Category(Category::Final_Punctuation)),
("Phag", GroupName::Script(Script::Phags_Pa)),
("Phags_Pa", GroupName::Script(Script::Phags_Pa)),
("Phli", GroupName::Script(Script::Inscriptional_Pahlavi)),
("Phlp", GroupName::Script(Script::Psalter_Pahlavi)),
("Phnx", GroupName::Script(Script::Phoenician)),
("Phoenician", GroupName::Script(Script::Phoenician)),
("Pi", GroupName::Category(Category::Initial_Punctuation)),
("Plrd", GroupName::Script(Script::Miao)),
("Po", GroupName::Category(Category::Other_Punctuation)),
("Private_Use", GroupName::Category(Category::Private_Use)),
("Prti", GroupName::Script(Script::Inscriptional_Parthian)),
("Ps", GroupName::Category(Category::Open_Punctuation)),
("Psalter_Pahlavi", GroupName::Script(Script::Psalter_Pahlavi)),
("Punctuation", GroupName::Category(Category::Punctuation)),
("Qaac", GroupName::Script(Script::Coptic)),
("Qaai", GroupName::Script(Script::Inherited)),
("Quotation_Mark", GroupName::OtherProperties(OtherProperties::Quotation_Mark)),
("Radical", GroupName::OtherProperties(OtherProperties::Radical)),
("Regional_Indicator", GroupName::OtherProperties(OtherProperties::Regional_Indicator)),
("Rejang", GroupName::Script(Script::Rejang)),
("Rjng", GroupName::Script(Script::Rejang)),
("Rohg", GroupName::Script(Script::Hanifi_Rohingya)),
("Runic", GroupName::Script(Script::Runic)),
("Runr", GroupName::Script(Script::Runic)),
("S", GroupName::Category(Category::Symbol)),
("Samaritan", GroupName::Script(Script::Samaritan)),
("Samr", GroupName::Script(Script::Samaritan)),
("Sarb", GroupName::Script(Script::Old_South_Arabian)),
("Saur", GroupName::Script(Script::Saurashtra)),
("Saurashtra", GroupName::Script(Script::Saurashtra)),
("Sc", GroupName::Category(Category::Currency_Symbol)),
("Sentence_Terminal", GroupName::OtherProperties(OtherProperties::Sentence_Terminal)),
("Separator", GroupName::Category(Category::Separator)),
("Sgnw", GroupName::Script(Script::SignWriting)),
("Sharada", GroupName::Script(Script::Sharada)),
("Shavian", GroupName::Script(Script::Shavian)),
("Shaw", GroupName::Script(Script::Shavian)),
("Shrd", GroupName::Script(Script::Sharada)),
("Sidd", GroupName::Script(Script::Siddham)),
("Siddham", GroupName::Script(Script::Siddham)),
("SignWriting", GroupName::Script(Script::SignWriting)),
("Sind", GroupName::Script(Script::Khudawadi)),
("Sinh", GroupName::Script(Script::Sinhala)),
("Sinhala", GroupName::Script(Script::Sinhala)),
("Sk", GroupName::Category(Category::Modifier_Symbol)),
("Sm", GroupName::Category(Category::Math_Symbol)),
("So", GroupName::Category(Category::Other_Symbol)),
("Soft_Dotted", GroupName::OtherProperties(OtherProperties::Soft_Dotted)),
("Sogd", GroupName::Script(Script::Sogdian)),
("Sogdian", GroupName::Script(Script::Sogdian)),
("Sogo", GroupName::Script(Script::Old_Sogdian)),
("Sora", GroupName::Script(Script::Sora_Sompeng)),
("Sora_Sompeng", GroupName::Script(Script::Sora_Sompeng)),
("Soyo", GroupName::Script(Script::Soyombo)),
("Soyombo", GroupName::Script(Script::Soyombo)),
("Space_Separator", GroupName::Category(Category::Space_Separator)),
("Spacing_Mark", GroupName::Category(Category::Spacing_Mark)),
("Sund", GroupName::Script(Script::Sundanese)),
("Sundanese", GroupName::Script(Script::Sundanese)),
("Surrogate", GroupName::Category(Category::Surrogate)),
("Sylo", GroupName::Script(Script::Syloti_Nagri)),
("Syloti_Nagri", GroupName::Script(Script::Syloti_Nagri)),
("Symbol", GroupName::Category(Category::Symbol)),
("Syrc", GroupName::Script(Script::Syriac)),
("Syriac", GroupName::Script(Script::Syriac)),
("Tagalog", GroupName::Script(Script::Tagalog)),
("Tagb", GroupName::Script(Script::Tagbanwa)),
("Tagbanwa", GroupName::Script(Script::Tagbanwa)),
("Tai_Le", GroupName::Script(Script::Tai_Le)),
("Tai_Tham", GroupName::Script(Script::Tai_Tham)),
("Tai_Viet", GroupName::Script(Script::Tai_Viet)),
("Takr", GroupName::Script(Script::Takri)),
("Takri", GroupName::Script(Script::Takri)),
("Tale", GroupName::Script(Script::Tai_Le)),
("Talu", GroupName::Script(Script::New_Tai_Lue)),
("Tamil", GroupName::Script(Script::Tamil)),
("Taml", GroupName::Script(Script::Tamil)),
("Tang", GroupName::Script(Script::Tangut)),
("Tangsa", GroupName::Script(Script::Tangsa)),
("Tangut", GroupName::Script(Script::Tangut)),
("Tavt", GroupName::Script(Script::Tai_Viet)),
("Telu", GroupName::Script(Script::Telugu)),
("Telugu", GroupName::Script(Script::Telugu)),
("Terminal_Punctuation", GroupName::OtherProperties(OtherProperties::Terminal_Punctuation)),
("Tfng", GroupName::Script(Script::Tifinagh)),
("Tglg", GroupName::Script(Script::Tagalog)),
("Thaa", GroupName::Script(Script::Thaana)),
("Thaana", GroupName::Script(Script::Thaana)),
("Thai", GroupName::Script(Script::Thai)),
("Tibetan", GroupName::Script(Script::Tibetan)),
("Tibt", GroupName::Script(Script::Tibetan)),
("Tifinagh", GroupName::Script(Script::Tifinagh)),
("Tirh", GroupName::Script(Script::Tirhuta)),
("Tirhuta", GroupName::Script(Script::Tirhuta)),
("Titlecase_Letter", GroupName::Category(Category::Titlecase_Letter)),
("Tnsa", GroupName::Script(Script::Tangsa)),
("Toto", GroupName::Script(Script::Toto)),
("Ugar", GroupName::Script(Script::Ugaritic)),
("Ugaritic", GroupName::Script(Script::Ugaritic)),
("Unassigned", GroupName::Category(Category::Unassigned)),
("Unified_Ideograph", GroupName::OtherProperties(OtherProperties::Unified_Ideograph)),
("Uppercase", GroupName::OtherProperties(OtherProperties::Uppercase)),
("Uppercase_Letter", GroupName::Category(Category::Uppercase_Letter)),
("Vai", GroupName::Script(Script::Vai)),
("Vaii", GroupName::Script(Script::Vai)),
("Variation_Selector", GroupName::OtherProperties(OtherProperties::Variation_Selector)),
("Vith", GroupName::Script(Script::Vithkuqi)),
("Vithkuqi", GroupName::Script(Script::Vithkuqi)),
("Wancho", GroupName::Script(Script::Wancho)),
("Wara", GroupName::Script(Script::Warang_Citi)),
("Warang_Citi", GroupName::Script(Script::Warang_Citi)),
("Wcho", GroupName::Script(Script::Wancho)),
("White_Space", GroupName::OtherProperties(OtherProperties::White_Space)),
("XID_Continue", GroupName::OtherProperties(OtherProperties::XID_Continue)),
("XID_Start", GroupName::OtherProperties(OtherProperties::XID_Start)),
("Xpeo", GroupName::Script(Script::Old_Persian)),
("Xsux", GroupName::Script(Script::Cuneiform)),
("Yezi", GroupName::Script(Script::Yezidi)),
("Yezidi", GroupName::Script(Script::Yezidi)),
("Yi", GroupName::Script(Script::Yi)),
("Yiii", GroupName::Script(Script::Yi)),
("Z", GroupName::Category(Category::Separator)),
("Zanabazar_Square", GroupName::Script(Script::Zanabazar_Square)),
("Zanb", GroupName::Script(Script::Zanabazar_Square)),
("Zinh", GroupName::Script(Script::Inherited)),
("Zl", GroupName::Category(Category::Line_Separator)),
("Zp", GroupName::Category(Category::Paragraph_Separator)),
("Zs", GroupName::Category(Category::Space_Separator)),
("Zyyy", GroupName::Script(Script::Common)),
("cntrl", GroupName::Category(Category::Control)),
("d", GroupName::Digit),
("digit", GroupName::Digit),
("h", (GroupName::HorizSpace)),
("horiz_space", (GroupName::HorizSpace)),
("punct", GroupName::Category(Category::Punctuation)),
("s", GroupName::Space),
("space", GroupName::Space),
("v", (GroupName::VertSpace)),
("vert_space", (GroupName::VertSpace)),
("w", (GroupName::Word)),
("word", (GroupName::Word)),
];