diff --git a/Cargo.lock b/Cargo.lock index 7d46e5ff66b..157bfb1b04f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1613,6 +1613,7 @@ dependencies = [ "icu_provider", "serde", "unicode-bidi", + "unicode-script", "zerotrie", "zerovec", ] @@ -3298,6 +3299,12 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unicode-script" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "383ad40bb927465ec0ce7720e033cb4ca06912855fc35db31b5755d0de75b1ee" + [[package]] name = "unicode-width" version = "0.1.14" diff --git a/Cargo.toml b/Cargo.toml index 073d6852cec..4747f485445 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -262,6 +262,7 @@ smallvec = { version = "1.10.0", default-features = false } stable_deref_trait = { version = "1.2.0", default-features = false } twox-hash = { version = "2.0.0", default-features = false, features = ["xxhash64"] } unicode-bidi = { version = "0.3.11", default-features = false } +unicode-script = { version = "0.5.8", default-features = false } utf16_iter = { version = "1.0.2", default-features = false } utf8_iter = { version = "1.0.2", default-features = false } write16 = { version = "1.0.0", default-features = false } diff --git a/components/properties/Cargo.toml b/components/properties/Cargo.toml index 32542e28df0..dcaa3d377a7 100644 --- a/components/properties/Cargo.toml +++ b/components/properties/Cargo.toml @@ -30,6 +30,7 @@ icu_locale_core = { workspace = true, features = ["zerovec"] } harfbuzz-traits = { workspace = true, optional = true } unicode-bidi = { workspace = true, optional = true } +unicode-script = { workspace = true, optional = true } icu_properties_data = { workspace = true, optional = true } @@ -42,6 +43,7 @@ serde = ["dep:serde", "icu_locale_core/serde", "zerovec/serde", "icu_collections datagen = ["serde", "dep:databake", "zerovec/databake", "icu_collections/databake", "icu_locale_core/databake", "zerotrie/databake", "icu_provider/export"] unicode_bidi = ["dep:unicode-bidi"] harfbuzz_traits = ["dep:harfbuzz-traits"] +unicode_script = ["dep:unicode-script"] compiled_data = ["dep:icu_properties_data", "icu_provider/baked"] alloc = ["zerovec/alloc", "icu_collections/alloc", "serde?/alloc"] diff --git a/components/properties/src/props.rs b/components/properties/src/props.rs index e39b846cbc6..42586133072 100644 --- a/components/properties/src/props.rs +++ b/components/properties/src/props.rs @@ -925,6 +925,401 @@ impl From for Script { } } +#[cfg(feature = "unicode_script")] +impl From for Script { + fn from(value: unicode_script::Script) -> Self { + match value { + unicode_script::Script::Adlam => Self::Adlam, + unicode_script::Script::Ahom => Self::Ahom, + unicode_script::Script::Anatolian_Hieroglyphs => Self::AnatolianHieroglyphs, + unicode_script::Script::Arabic => Self::Arabic, + unicode_script::Script::Armenian => Self::Armenian, + unicode_script::Script::Avestan => Self::Avestan, + unicode_script::Script::Balinese => Self::Balinese, + unicode_script::Script::Bamum => Self::Bamum, + unicode_script::Script::Bassa_Vah => Self::BassaVah, + unicode_script::Script::Batak => Self::Batak, + unicode_script::Script::Bengali => Self::Bengali, + unicode_script::Script::Beria_Erfe => Self::BeriaErfe, + unicode_script::Script::Bhaiksuki => Self::Bhaiksuki, + unicode_script::Script::Bopomofo => Self::Bopomofo, + unicode_script::Script::Brahmi => Self::Brahmi, + unicode_script::Script::Braille => Self::Braille, + unicode_script::Script::Buginese => Self::Buginese, + unicode_script::Script::Buhid => Self::Buhid, + unicode_script::Script::Canadian_Aboriginal => Self::CanadianAboriginal, + unicode_script::Script::Carian => Self::Carian, + unicode_script::Script::Caucasian_Albanian => Self::CaucasianAlbanian, + unicode_script::Script::Chakma => Self::Chakma, + unicode_script::Script::Cham => Self::Cham, + unicode_script::Script::Cherokee => Self::Cherokee, + unicode_script::Script::Chorasmian => Self::Chorasmian, + unicode_script::Script::Common => Self::Common, + unicode_script::Script::Coptic => Self::Coptic, + unicode_script::Script::Cuneiform => Self::Cuneiform, + unicode_script::Script::Cypriot => Self::Cypriot, + unicode_script::Script::Cypro_Minoan => Self::CyproMinoan, + unicode_script::Script::Cyrillic => Self::Cyrillic, + unicode_script::Script::Deseret => Self::Deseret, + unicode_script::Script::Devanagari => Self::Devanagari, + unicode_script::Script::Dives_Akuru => Self::DivesAkuru, + unicode_script::Script::Dogra => Self::Dogra, + unicode_script::Script::Duployan => Self::Duployan, + unicode_script::Script::Egyptian_Hieroglyphs => Self::EgyptianHieroglyphs, + unicode_script::Script::Elbasan => Self::Elbasan, + unicode_script::Script::Elymaic => Self::Elymaic, + unicode_script::Script::Ethiopic => Self::Ethiopian, + unicode_script::Script::Garay => Self::Garay, + unicode_script::Script::Georgian => Self::Georgian, + unicode_script::Script::Glagolitic => Self::Glagolitic, + unicode_script::Script::Gothic => Self::Gothic, + unicode_script::Script::Grantha => Self::Grantha, + unicode_script::Script::Greek => Self::Greek, + unicode_script::Script::Gujarati => Self::Gujarati, + unicode_script::Script::Gunjala_Gondi => Self::GunjalaGondi, + unicode_script::Script::Gurmukhi => Self::Gurmukhi, + unicode_script::Script::Gurung_Khema => Self::GurungKhema, + unicode_script::Script::Han => Self::Han, + unicode_script::Script::Hangul => Self::Hangul, + unicode_script::Script::Hanifi_Rohingya => Self::HanifiRohingya, + unicode_script::Script::Hanunoo => Self::Hanunoo, + unicode_script::Script::Hatran => Self::Hatran, + unicode_script::Script::Hebrew => Self::Hebrew, + unicode_script::Script::Hiragana => Self::Hiragana, + unicode_script::Script::Imperial_Aramaic => Self::ImperialAramaic, + unicode_script::Script::Inherited => Self::Inherited, + unicode_script::Script::Inscriptional_Pahlavi => Self::InscriptionalPahlavi, + unicode_script::Script::Inscriptional_Parthian => Self::InscriptionalParthian, + unicode_script::Script::Javanese => Self::Javanese, + unicode_script::Script::Kaithi => Self::Kaithi, + unicode_script::Script::Kannada => Self::Kannada, + unicode_script::Script::Katakana => Self::Katakana, + unicode_script::Script::Kawi => Self::Kawi, + unicode_script::Script::Kayah_Li => Self::KayahLi, + unicode_script::Script::Kharoshthi => Self::Kharoshthi, + unicode_script::Script::Khitan_Small_Script => Self::KhitanSmallScript, + unicode_script::Script::Khmer => Self::Khmer, + unicode_script::Script::Khojki => Self::Khojki, + unicode_script::Script::Khudawadi => Self::Khudawadi, + unicode_script::Script::Kirat_Rai => Self::KiratRai, + unicode_script::Script::Lao => Self::Lao, + unicode_script::Script::Latin => Self::Latin, + unicode_script::Script::Lepcha => Self::Lepcha, + unicode_script::Script::Limbu => Self::Limbu, + unicode_script::Script::Linear_A => Self::LinearA, + unicode_script::Script::Linear_B => Self::LinearB, + unicode_script::Script::Lisu => Self::Lisu, + unicode_script::Script::Lycian => Self::Lycian, + unicode_script::Script::Lydian => Self::Lydian, + unicode_script::Script::Mahajani => Self::Mahajani, + unicode_script::Script::Makasar => Self::Makasar, + unicode_script::Script::Malayalam => Self::Malayalam, + unicode_script::Script::Mandaic => Self::Mandaic, + unicode_script::Script::Manichaean => Self::Manichaean, + unicode_script::Script::Marchen => Self::Marchen, + unicode_script::Script::Masaram_Gondi => Self::MasaramGondi, + unicode_script::Script::Medefaidrin => Self::Medefaidrin, + unicode_script::Script::Meetei_Mayek => Self::MeeteiMayek, + unicode_script::Script::Mende_Kikakui => Self::MendeKikakui, + unicode_script::Script::Meroitic_Cursive => Self::MeroiticCursive, + unicode_script::Script::Meroitic_Hieroglyphs => Self::MeroiticHieroglyphs, + unicode_script::Script::Miao => Self::Miao, + unicode_script::Script::Modi => Self::Modi, + unicode_script::Script::Mongolian => Self::Mongolian, + unicode_script::Script::Mro => Self::Mro, + unicode_script::Script::Multani => Self::Multani, + unicode_script::Script::Myanmar => Self::Myanmar, + unicode_script::Script::Nabataean => Self::Nabataean, + unicode_script::Script::Nag_Mundari => Self::NagMundari, + unicode_script::Script::Nandinagari => Self::Nandinagari, + unicode_script::Script::New_Tai_Lue => Self::NewTaiLue, + unicode_script::Script::Newa => Self::Newa, + unicode_script::Script::Nko => Self::Nko, + unicode_script::Script::Nushu => Self::Nushu, + unicode_script::Script::Nyiakeng_Puachue_Hmong => Self::NyiakengPuachueHmong, + unicode_script::Script::Ogham => Self::Ogham, + unicode_script::Script::Ol_Chiki => Self::OlChiki, + unicode_script::Script::Ol_Onal => Self::OlOnal, + unicode_script::Script::Old_Hungarian => Self::OldHungarian, + unicode_script::Script::Old_Italic => Self::OldItalic, + unicode_script::Script::Old_North_Arabian => Self::OldNorthArabian, + unicode_script::Script::Old_Permic => Self::OldPermic, + unicode_script::Script::Old_Persian => Self::OldPersian, + unicode_script::Script::Old_Sogdian => Self::OldSogdian, + unicode_script::Script::Old_South_Arabian => Self::OldSouthArabian, + unicode_script::Script::Old_Turkic => Self::OldTurkic, + unicode_script::Script::Old_Uyghur => Self::OldUyghur, + unicode_script::Script::Oriya => Self::Oriya, + unicode_script::Script::Osage => Self::Osage, + unicode_script::Script::Osmanya => Self::Osmanya, + unicode_script::Script::Pahawh_Hmong => Self::PahawhHmong, + unicode_script::Script::Palmyrene => Self::Palmyrene, + unicode_script::Script::Pau_Cin_Hau => Self::PauCinHau, + unicode_script::Script::Phags_Pa => Self::PhagsPa, + unicode_script::Script::Phoenician => Self::Phoenician, + unicode_script::Script::Psalter_Pahlavi => Self::PsalterPahlavi, + unicode_script::Script::Rejang => Self::Rejang, + unicode_script::Script::Runic => Self::Runic, + unicode_script::Script::Samaritan => Self::Samaritan, + unicode_script::Script::Saurashtra => Self::Saurashtra, + unicode_script::Script::Sharada => Self::Sharada, + unicode_script::Script::Shavian => Self::Shavian, + unicode_script::Script::Siddham => Self::Siddham, + unicode_script::Script::Sidetic => Self::Sidetic, + unicode_script::Script::SignWriting => Self::SignWriting, + unicode_script::Script::Sinhala => Self::Sinhala, + unicode_script::Script::Sogdian => Self::Sogdian, + unicode_script::Script::Sora_Sompeng => Self::SoraSompeng, + unicode_script::Script::Soyombo => Self::Soyombo, + unicode_script::Script::Sundanese => Self::Sundanese, + unicode_script::Script::Sunuwar => Self::Sunuwar, + unicode_script::Script::Syloti_Nagri => Self::SylotiNagri, + unicode_script::Script::Syriac => Self::Syriac, + unicode_script::Script::Tagalog => Self::Tagalog, + unicode_script::Script::Tagbanwa => Self::Tagbanwa, + unicode_script::Script::Tai_Le => Self::TaiLe, + unicode_script::Script::Tai_Tham => Self::TaiTham, + unicode_script::Script::Tai_Viet => Self::TaiViet, + unicode_script::Script::Tai_Yo => Self::TaiYo, + unicode_script::Script::Takri => Self::Takri, + unicode_script::Script::Tamil => Self::Tamil, + unicode_script::Script::Tangsa => Self::Tangsa, + unicode_script::Script::Tangut => Self::Tangut, + unicode_script::Script::Telugu => Self::Telugu, + unicode_script::Script::Thaana => Self::Thaana, + unicode_script::Script::Thai => Self::Thai, + unicode_script::Script::Tibetan => Self::Tibetan, + unicode_script::Script::Tifinagh => Self::Tifinagh, + unicode_script::Script::Tirhuta => Self::Tirhuta, + unicode_script::Script::Todhri => Self::Todhri, + unicode_script::Script::Tolong_Siki => Self::TolongSiki, + unicode_script::Script::Toto => Self::Toto, + unicode_script::Script::Tulu_Tigalari => Self::TuluTigalari, + unicode_script::Script::Ugaritic => Self::Ugaritic, + unicode_script::Script::Vai => Self::Vai, + unicode_script::Script::Vithkuqi => Self::Vithkuqi, + unicode_script::Script::Wancho => Self::Wancho, + unicode_script::Script::Warang_Citi => Self::WarangCiti, + unicode_script::Script::Yezidi => Self::Yezidi, + unicode_script::Script::Yi => Self::Yi, + unicode_script::Script::Zanabazar_Square => Self::ZanabazarSquare, + _ => Self::Unknown, + } + } +} + +#[cfg(feature = "unicode_script")] +impl From