// Copyright 2025 International Digital Economy Academy
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
///|
/// Script mapping (minimal subset of swash `text` module).
///
/// Ported from `swash/src/text/unicode.rs` + `unicode_data.rs`.
///|
/// Unicode script.
pub(all) enum Script {
Adlam
CaucasianAlbanian
Ahom
Arabic
ImperialAramaic
Armenian
Avestan
Balinese
Bamum
BassaVah
Batak
Bengali
Bhaiksuki
Bopomofo
Brahmi
Braille
Buginese
Buhid
Chakma
CanadianAboriginal
Carian
Cham
Cherokee
Chorasmian
Coptic
Cypriot
Cyrillic
Devanagari
DivesAkuru
Dogra
Deseret
Duployan
EgyptianHieroglyphs
Elbasan
Elymaic
Ethiopic
Georgian
Glagolitic
GunjalaGondi
MasaramGondi
Gothic
Grantha
Greek
Gujarati
Gurmukhi
Hangul
Han
Hanunoo
Hatran
Hebrew
Hiragana
AnatolianHieroglyphs
PahawhHmong
NyiakengPuachueHmong
OldHungarian
OldItalic
Javanese
KayahLi
Katakana
Kharoshthi
Khmer
Khojki
KhitanSmallScript
Kannada
Kaithi
TaiTham
Lao
Latin
Lepcha
Limbu
LinearA
LinearB
Lisu
Lycian
Lydian
Mahajani
Makasar
Mandaic
Manichaean
Marchen
Medefaidrin
MendeKikakui
MeroiticCursive
MeroiticHieroglyphs
Malayalam
Modi
Mongolian
Mro
MeeteiMayek
Multani
Myanmar
Nandinagari
OldNorthArabian
Nabataean
Newa
Nko
Nushu
Ogham
OlChiki
OldTurkic
Oriya
Osage
Osmanya
Palmyrene
PauCinHau
OldPermic
PhagsPa
InscriptionalPahlavi
PsalterPahlavi
Phoenician
Miao
InscriptionalParthian
Rejang
HanifiRohingya
Runic
Samaritan
OldSouthArabian
Saurashtra
SignWriting
Shavian
Sharada
Siddham
Khudawadi
Sinhala
Sogdian
OldSogdian
SoraSompeng
Soyombo
Sundanese
SylotiNagri
Syriac
Tagbanwa
Takri
TaiLe
NewTaiLue
Tamil
Tangut
TaiViet
Telugu
Tifinagh
Tagalog
Thaana
Thai
Tibetan
Tirhuta
Ugaritic
Vai
WarangCiti
Wancho
OldPersian
Cuneiform
Yezidi
Yi
ZanabazarSquare
Inherited
Common
Unknown
}
///|
let text_script_by_tag : ReadOnlyArray[(Tag, Script)] = [
(0x61646C6D, Script::Adlam),
(0x61676862, Script::CaucasianAlbanian),
(0x61686F6D, Script::Ahom),
(0x61726162, Script::Arabic),
(0x61726D69, Script::ImperialAramaic),
(0x61726D6E, Script::Armenian),
(0x61767374, Script::Avestan),
(0x62616C69, Script::Balinese),
(0x62616D75, Script::Bamum),
(0x62617373, Script::BassaVah),
(0x6261746B, Script::Batak),
(0x626E6732, Script::Bengali),
(0x62686B73, Script::Bhaiksuki),
(0x626F706F, Script::Bopomofo),
(0x62726168, Script::Brahmi),
(0x62726169, Script::Braille),
(0x62756769, Script::Buginese),
(0x62756864, Script::Buhid),
(0x63616B6D, Script::Chakma),
(0x63616E73, Script::CanadianAboriginal),
(0x63617269, Script::Carian),
(0x6368616D, Script::Cham),
(0x63686572, Script::Cherokee),
(0x63687273, Script::Chorasmian),
(0x636F7074, Script::Coptic),
(0x63707274, Script::Cypriot),
(0x6379726C, Script::Cyrillic),
(0x64657632, Script::Devanagari),
(0x6469616B, Script::DivesAkuru),
(0x646F6772, Script::Dogra),
(0x64737274, Script::Deseret),
(0x6475706C, Script::Duployan),
(0x65677970, Script::EgyptianHieroglyphs),
(0x656C6261, Script::Elbasan),
(0x656C796D, Script::Elymaic),
(0x65746869, Script::Ethiopic),
(0x67656F72, Script::Georgian),
(0x676C6167, Script::Glagolitic),
(0x676F6E67, Script::GunjalaGondi),
(0x676F6E6D, Script::MasaramGondi),
(0x676F7468, Script::Gothic),
(0x6772616E, Script::Grantha),
(0x6772656B, Script::Greek),
(0x676A7232, Script::Gujarati),
(0x67757232, Script::Gurmukhi),
(0x68616E67, Script::Hangul),
(0x68616E69, Script::Han),
(0x68616E6F, Script::Hanunoo),
(0x68617472, Script::Hatran),
(0x68656272, Script::Hebrew),
(0x68697261, Script::Hiragana),
(0x686C7577, Script::AnatolianHieroglyphs),
(0x686D6E67, Script::PahawhHmong),
(0x686D6E70, Script::NyiakengPuachueHmong),
(0x68756E67, Script::OldHungarian),
(0x6974616C, Script::OldItalic),
(0x6A617661, Script::Javanese),
(0x6B616C69, Script::KayahLi),
(0x6B616E61, Script::Katakana),
(0x6B686172, Script::Kharoshthi),
(0x6B686D72, Script::Khmer),
(0x6B686F6A, Script::Khojki),
(0x6B697473, Script::KhitanSmallScript),
(0x6B6E6432, Script::Kannada),
(0x6B746869, Script::Kaithi),
(0x6C616E61, Script::TaiTham),
(0x6C616F6F, Script::Lao),
(0x6C61746E, Script::Latin),
(0x6C657063, Script::Lepcha),
(0x6C696D62, Script::Limbu),
(0x6C696E61, Script::LinearA),
(0x6C696E62, Script::LinearB),
(0x6C697375, Script::Lisu),
(0x6C796369, Script::Lycian),
(0x6C796469, Script::Lydian),
(0x6D61686A, Script::Mahajani),
(0x6D616B61, Script::Makasar),
(0x6D616E64, Script::Mandaic),
(0x6D616E69, Script::Manichaean),
(0x6D617263, Script::Marchen),
(0x6D656466, Script::Medefaidrin),
(0x6D656E64, Script::MendeKikakui),
(0x6D657263, Script::MeroiticCursive),
(0x6D65726F, Script::MeroiticHieroglyphs),
(0x6D6C6D32, Script::Malayalam),
(0x6D6F6469, Script::Modi),
(0x6D6F6E67, Script::Mongolian),
(0x6D726F6F, Script::Mro),
(0x6D746569, Script::MeeteiMayek),
(0x6D756C74, Script::Multani),
(0x6D796D32, Script::Myanmar),
(0x6E616E64, Script::Nandinagari),
(0x6E617262, Script::OldNorthArabian),
(0x6E626174, Script::Nabataean),
(0x6E657761, Script::Newa),
(0x6E6B6F20, Script::Nko),
(0x6E736875, Script::Nushu),
(0x6F67616D, Script::Ogham),
(0x6F6C636B, Script::OlChiki),
(0x6F726B68, Script::OldTurkic),
(0x6F727932, Script::Oriya),
(0x6F736765, Script::Osage),
(0x6F736D61, Script::Osmanya),
(0x70616C6D, Script::Palmyrene),
(0x70617563, Script::PauCinHau),
(0x7065726D, Script::OldPermic),
(0x70686167, Script::PhagsPa),
(0x70686C69, Script::InscriptionalPahlavi),
(0x70686C70, Script::PsalterPahlavi),
(0x70686E78, Script::Phoenician),
(0x6D69616F, Script::Miao),
(0x70727469, Script::InscriptionalParthian),
(0x726A6E67, Script::Rejang),
(0x726F6867, Script::HanifiRohingya),
(0x72756E72, Script::Runic),
(0x73616D72, Script::Samaritan),
(0x73617262, Script::OldSouthArabian),
(0x73617572, Script::Saurashtra),
(0x73676E77, Script::SignWriting),
(0x73686177, Script::Shavian),
(0x73687264, Script::Sharada),
(0x73696464, Script::Siddham),
(0x73696E64, Script::Khudawadi),
(0x73696E68, Script::Sinhala),
(0x736F6764, Script::Sogdian),
(0x736F676F, Script::OldSogdian),
(0x736F7261, Script::SoraSompeng),
(0x736F796F, Script::Soyombo),
(0x73756E64, Script::Sundanese),
(0x73796C6F, Script::SylotiNagri),
(0x73797263, Script::Syriac),
(0x74616762, Script::Tagbanwa),
(0x74616B72, Script::Takri),
(0x74616C65, Script::TaiLe),
(0x74616C75, Script::NewTaiLue),
(0x746D6C32, Script::Tamil),
(0x74616E67, Script::Tangut),
(0x74617674, Script::TaiViet),
(0x74656C75, Script::Telugu),
(0x74666E67, Script::Tifinagh),
(0x74676C67, Script::Tagalog),
(0x74686161, Script::Thaana),
(0x74686169, Script::Thai),
(0x74696274, Script::Tibetan),
(0x74697268, Script::Tirhuta),
(0x75676172, Script::Ugaritic),
(0x76616969, Script::Vai),
(0x77617261, Script::WarangCiti),
(0x7763686F, Script::Wancho),
(0x7870656F, Script::OldPersian),
(0x78737578, Script::Cuneiform),
(0x79657A69, Script::Yezidi),
(0x79696969, Script::Yi),
(0x7A616E62, Script::ZanabazarSquare),
(0x7A696E68, Script::Inherited),
(0x7A797979, Script::Common),
(0x7A7A7A7A, Script::Unknown),
]
///|
fn text_script_lookup(tag : Tag) -> Script? {
let mut l = 0
let mut h = text_script_by_tag.length()
while l < h {
let mid = (l + h) / 2
let (k, v) = text_script_by_tag[mid]
if k < tag {
l = mid + 1
} else if k > tag {
h = mid
} else {
return Some(v)
}
}
None
}
///|
/// Returns the script associated with the specified OpenType script tag.
pub fn Script::from_opentype(tag : Tag) -> Script? {
text_script_lookup(tag)
}
///|
/// Returns the script as an OpenType tag.
pub fn Script::to_opentype(self : Script) -> Tag {
match self {
Adlam => 0x61646C6D
CaucasianAlbanian => 0x61676862
Ahom => 0x61686F6D
Arabic => 0x61726162
ImperialAramaic => 0x61726D69
Armenian => 0x61726D6E
Avestan => 0x61767374
Balinese => 0x62616C69
Bamum => 0x62616D75
BassaVah => 0x62617373
Batak => 0x6261746B
Bengali => 0x626E6732
Bhaiksuki => 0x62686B73
Bopomofo => 0x626F706F
Brahmi => 0x62726168
Braille => 0x62726169
Buginese => 0x62756769
Buhid => 0x62756864
Chakma => 0x63616B6D
CanadianAboriginal => 0x63616E73
Carian => 0x63617269
Cham => 0x6368616D
Cherokee => 0x63686572
Chorasmian => 0x63687273
Coptic => 0x636F7074
Cypriot => 0x63707274
Cyrillic => 0x6379726C
Devanagari => 0x64657632
DivesAkuru => 0x6469616B
Dogra => 0x646F6772
Deseret => 0x64737274
Duployan => 0x6475706C
EgyptianHieroglyphs => 0x65677970
Elbasan => 0x656C6261
Elymaic => 0x656C796D
Ethiopic => 0x65746869
Georgian => 0x67656F72
Glagolitic => 0x676C6167
GunjalaGondi => 0x676F6E67
MasaramGondi => 0x676F6E6D
Gothic => 0x676F7468
Grantha => 0x6772616E
Greek => 0x6772656B
Gujarati => 0x676A7232
Gurmukhi => 0x67757232
Hangul => 0x68616E67
Han => 0x68616E69
Hanunoo => 0x68616E6F
Hatran => 0x68617472
Hebrew => 0x68656272
Hiragana => 0x68697261
AnatolianHieroglyphs => 0x686C7577
PahawhHmong => 0x686D6E67
NyiakengPuachueHmong => 0x686D6E70
OldHungarian => 0x68756E67
OldItalic => 0x6974616C
Javanese => 0x6A617661
KayahLi => 0x6B616C69
Katakana => 0x6B616E61
Kharoshthi => 0x6B686172
Khmer => 0x6B686D72
Khojki => 0x6B686F6A
KhitanSmallScript => 0x6B697473
Kannada => 0x6B6E6432
Kaithi => 0x6B746869
TaiTham => 0x6C616E61
Lao => 0x6C616F6F
Latin => 0x6C61746E
Lepcha => 0x6C657063
Limbu => 0x6C696D62
LinearA => 0x6C696E61
LinearB => 0x6C696E62
Lisu => 0x6C697375
Lycian => 0x6C796369
Lydian => 0x6C796469
Mahajani => 0x6D61686A
Makasar => 0x6D616B61
Mandaic => 0x6D616E64
Manichaean => 0x6D616E69
Marchen => 0x6D617263
Medefaidrin => 0x6D656466
MendeKikakui => 0x6D656E64
MeroiticCursive => 0x6D657263
MeroiticHieroglyphs => 0x6D65726F
Malayalam => 0x6D6C6D32
Modi => 0x6D6F6469
Mongolian => 0x6D6F6E67
Mro => 0x6D726F6F
MeeteiMayek => 0x6D746569
Multani => 0x6D756C74
Myanmar => 0x6D796D32
Nandinagari => 0x6E616E64
OldNorthArabian => 0x6E617262
Nabataean => 0x6E626174
Newa => 0x6E657761
Nko => 0x6E6B6F6F
Nushu => 0x6E736875
Ogham => 0x6F67616D
OlChiki => 0x6F6C636B
OldTurkic => 0x6F726B68
Oriya => 0x6F727932
Osage => 0x6F736765
Osmanya => 0x6F736D61
Palmyrene => 0x70616C6D
PauCinHau => 0x70617563
OldPermic => 0x7065726D
PhagsPa => 0x70686167
InscriptionalPahlavi => 0x70686C69
PsalterPahlavi => 0x70686C70
Phoenician => 0x70686E78
Miao => 0x6D69616F
InscriptionalParthian => 0x70727469
Rejang => 0x726A6E67
HanifiRohingya => 0x726F6867
Runic => 0x72756E72
Samaritan => 0x73616D72
OldSouthArabian => 0x73617262
Saurashtra => 0x73617572
SignWriting => 0x73676E77
Shavian => 0x73686177
Sharada => 0x73687264
Siddham => 0x73696464
Khudawadi => 0x73696E64
Sinhala => 0x73696E68
Sogdian => 0x736F6764
OldSogdian => 0x736F676F
SoraSompeng => 0x736F7261
Soyombo => 0x736F796F
Sundanese => 0x73756E64
SylotiNagri => 0x73796C6F
Syriac => 0x73797263
Tagbanwa => 0x74616762
Takri => 0x74616B72
TaiLe => 0x74616C65
NewTaiLue => 0x74616C75
Tamil => 0x746D6C32
Tangut => 0x74616E67
TaiViet => 0x74617674
Telugu => 0x74656C75
Tifinagh => 0x74666E67
Tagalog => 0x74676C67
Thaana => 0x74686161
Thai => 0x74686169
Tibetan => 0x74696274
Tirhuta => 0x74697268
Ugaritic => 0x75676172
Vai => 0x76616969
WarangCiti => 0x77617261
Wancho => 0x7763686F
OldPersian => 0x7870656F
Cuneiform => 0x78737578
Yezidi => 0x79657A69
Yi => 0x79696969
ZanabazarSquare => 0x7A616E62
Inherited => 0x7A696E68
Common => 0x7A797979
Unknown => 0x7A7A7A7A
}
}
///|
/// Returns the name of the script.
pub fn Script::name(self : Script) -> String {
match self {
Adlam => "Adlam"
CaucasianAlbanian => "Caucasian Albanian"
Ahom => "Ahom"
Arabic => "Arabic"
ImperialAramaic => "Imperial Aramaic"
Armenian => "Armenian"
Avestan => "Avestan"
Balinese => "Balinese"
Bamum => "Bamum"
BassaVah => "Bassa Vah"
Batak => "Batak"
Bengali => "Bengali"
Bhaiksuki => "Bhaiksuki"
Bopomofo => "Bopomofo"
Brahmi => "Brahmi"
Braille => "Braille"
Buginese => "Buginese"
Buhid => "Buhid"
Chakma => "Chakma"
CanadianAboriginal => "Canadian Aboriginal"
Carian => "Carian"
Cham => "Cham"
Cherokee => "Cherokee"
Chorasmian => "Chorasmian"
Coptic => "Coptic"
Cypriot => "Cypriot"
Cyrillic => "Cyrillic"
Devanagari => "Devanagari"
DivesAkuru => "Dives Akuru"
Dogra => "Dogra"
Deseret => "Deseret"
Duployan => "Duployan"
EgyptianHieroglyphs => "Egyptian Hieroglyphs"
Elbasan => "Elbasan"
Elymaic => "Elymaic"
Ethiopic => "Ethiopic"
Georgian => "Georgian"
Glagolitic => "Glagolitic"
GunjalaGondi => "Gunjala Gondi"
MasaramGondi => "Masaram Gondi"
Gothic => "Gothic"
Grantha => "Grantha"
Greek => "Greek"
Gujarati => "Gujarati"
Gurmukhi => "Gurmukhi"
Hangul => "Hangul"
Han => "Han"
Hanunoo => "Hanunoo"
Hatran => "Hatran"
Hebrew => "Hebrew"
Hiragana => "Hiragana"
AnatolianHieroglyphs => "Anatolian Hieroglyphs"
PahawhHmong => "Pahawh Hmong"
NyiakengPuachueHmong => "Nyiakeng Puachue Hmong"
OldHungarian => "Old Hungarian"
OldItalic => "Old Italic"
Javanese => "Javanese"
KayahLi => "Kayah Li"
Katakana => "Katakana"
Kharoshthi => "Kharoshthi"
Khmer => "Khmer"
Khojki => "Khojki"
KhitanSmallScript => "Khitan Small Script"
Kannada => "Kannada"
Kaithi => "Kaithi"
TaiTham => "Tai Tham"
Lao => "Lao"
Latin => "Latin"
Lepcha => "Lepcha"
Limbu => "Limbu"
LinearA => "Linear A"
LinearB => "Linear B"
Lisu => "Lisu"
Lycian => "Lycian"
Lydian => "Lydian"
Mahajani => "Mahajani"
Makasar => "Makasar"
Mandaic => "Mandaic"
Manichaean => "Manichaean"
Marchen => "Marchen"
Medefaidrin => "Medefaidrin"
MendeKikakui => "Mende Kikakui"
MeroiticCursive => "Meroitic Cursive"
MeroiticHieroglyphs => "Meroitic Hieroglyphs"
Malayalam => "Malayalam"
Modi => "Modi"
Mongolian => "Mongolian"
Mro => "Mro"
MeeteiMayek => "Meetei Mayek"
Multani => "Multani"
Myanmar => "Myanmar"
Nandinagari => "Nandinagari"
OldNorthArabian => "Old North Arabian"
Nabataean => "Nabataean"
Newa => "Newa"
Nko => "Nko"
Nushu => "Nushu"
Ogham => "Ogham"
OlChiki => "Ol Chiki"
OldTurkic => "Old Turkic"
Oriya => "Oriya"
Osage => "Osage"
Osmanya => "Osmanya"
Palmyrene => "Palmyrene"
PauCinHau => "Pau Cin Hau"
OldPermic => "Old Permic"
PhagsPa => "Phags Pa"
InscriptionalPahlavi => "Inscriptional Pahlavi"
PsalterPahlavi => "Psalter Pahlavi"
Phoenician => "Phoenician"
Miao => "Miao"
InscriptionalParthian => "Inscriptional Parthian"
Rejang => "Rejang"
HanifiRohingya => "Hanifi Rohingya"
Runic => "Runic"
Samaritan => "Samaritan"
OldSouthArabian => "Old South Arabian"
Saurashtra => "Saurashtra"
SignWriting => "SignWriting"
Shavian => "Shavian"
Sharada => "Sharada"
Siddham => "Siddham"
Khudawadi => "Khudawadi"
Sinhala => "Sinhala"
Sogdian => "Sogdian"
OldSogdian => "Old Sogdian"
SoraSompeng => "Sora Sompeng"
Soyombo => "Soyombo"
Sundanese => "Sundanese"
SylotiNagri => "Syloti Nagri"
Syriac => "Syriac"
Tagbanwa => "Tagbanwa"
Takri => "Takri"
TaiLe => "Tai Le"
NewTaiLue => "New Tai Lue"
Tamil => "Tamil"
Tangut => "Tangut"
TaiViet => "Tai Viet"
Telugu => "Telugu"
Tifinagh => "Tifinagh"
Tagalog => "Tagalog"
Thaana => "Thaana"
Thai => "Thai"
Tibetan => "Tibetan"
Tirhuta => "Tirhuta"
Ugaritic => "Ugaritic"
Vai => "Vai"
WarangCiti => "Warang Citi"
Wancho => "Wancho"
OldPersian => "Old Persian"
Cuneiform => "Cuneiform"
Yezidi => "Yezidi"
Yi => "Yi"
ZanabazarSquare => "Zanabazar Square"
Inherited => "Inherited"
Common => "Common"
Unknown => "Unknown"
}
}
///|
/// Returns true if the script requires complex shaping.
pub fn Script::is_complex(self : Script) -> Bool {
match self {
Adlam => true
CaucasianAlbanian => false
Ahom => true
Arabic => false
ImperialAramaic => false
Armenian => false
Avestan => false
Balinese => true
Bamum => false
BassaVah => false
Batak => true
Bengali => true
Bhaiksuki => true
Bopomofo => false
Brahmi => true
Braille => false
Buginese => true
Buhid => true
Chakma => true
CanadianAboriginal => false
Carian => false
Cham => true
Cherokee => false
Chorasmian => false
Coptic => false
Cypriot => false
Cyrillic => false
Devanagari => true
DivesAkuru => false
Dogra => true
Deseret => false
Duployan => true
EgyptianHieroglyphs => true
Elbasan => false
Elymaic => true
Ethiopic => false
Georgian => false
Glagolitic => false
GunjalaGondi => true
MasaramGondi => true
Gothic => false
Grantha => true
Greek => false
Gujarati => true
Gurmukhi => true
Hangul => false
Han => false
Hanunoo => true
Hatran => false
Hebrew => false
Hiragana => false
AnatolianHieroglyphs => false
PahawhHmong => true
NyiakengPuachueHmong => true
OldHungarian => false
OldItalic => false
Javanese => true
KayahLi => false
Katakana => false
Kharoshthi => true
Khmer => true
Khojki => true
KhitanSmallScript => false
Kannada => true
Kaithi => true
TaiTham => true
Lao => false
Latin => false
Lepcha => true
Limbu => true
LinearA => false
LinearB => false
Lisu => false
Lycian => false
Lydian => false
Mahajani => true
Makasar => true
Mandaic => true
Manichaean => true
Marchen => true
Medefaidrin => true
MendeKikakui => false
MeroiticCursive => false
MeroiticHieroglyphs => false
Malayalam => true
Modi => true
Mongolian => false
Mro => false
MeeteiMayek => false
Multani => true
Myanmar => true
Nandinagari => true
OldNorthArabian => false
Nabataean => false
Newa => true
Nko => false
Nushu => false
Ogham => false
OlChiki => false
OldTurkic => false
Oriya => true
Osage => false
Osmanya => false
Palmyrene => false
PauCinHau => false
OldPermic => false
PhagsPa => false
InscriptionalPahlavi => false
PsalterPahlavi => true
Phoenician => false
Miao => true
InscriptionalParthian => false
Rejang => true
HanifiRohingya => true
Runic => false
Samaritan => false
OldSouthArabian => false
Saurashtra => true
SignWriting => false
Shavian => false
Sharada => true
Siddham => true
Khudawadi => true
Sinhala => true
Sogdian => true
OldSogdian => true
SoraSompeng => false
Soyombo => true
Sundanese => true
SylotiNagri => true
Syriac => false
Tagbanwa => true
Takri => true
TaiLe => false
NewTaiLue => false
Tamil => true
Tangut => false
TaiViet => true
Telugu => true
Tifinagh => true
Tagalog => true
Thaana => false
Thai => false
Tibetan => true
Tirhuta => true
Ugaritic => false
Vai => false
WarangCiti => false
Wancho => true
OldPersian => false
Cuneiform => false
Yezidi => false
Yi => false
ZanabazarSquare => true
Inherited => false
Common => false
Unknown => false
}
}
///|
/// Returns true if the script has cursive joining.
pub fn Script::is_joined(self : Script) -> Bool {
match self {
Adlam => true
CaucasianAlbanian => false
Ahom => false
Arabic => true
ImperialAramaic => false
Armenian => false
Avestan => false
Balinese => false
Bamum => false
BassaVah => false
Batak => false
Bengali => false
Bhaiksuki => false
Bopomofo => false
Brahmi => false
Braille => false
Buginese => false
Buhid => false
Chakma => false
CanadianAboriginal => false
Carian => false
Cham => false
Cherokee => false
Chorasmian => false
Coptic => false
Cypriot => false
Cyrillic => false
Devanagari => false
DivesAkuru => false
Dogra => false
Deseret => false
Duployan => false
EgyptianHieroglyphs => false
Elbasan => false
Elymaic => false
Ethiopic => false
Georgian => false
Glagolitic => false
GunjalaGondi => false
MasaramGondi => false
Gothic => false
Grantha => false
Greek => false
Gujarati => false
Gurmukhi => false
Hangul => false
Han => false
Hanunoo => false
Hatran => false
Hebrew => false
Hiragana => false
AnatolianHieroglyphs => false
PahawhHmong => false
NyiakengPuachueHmong => false
OldHungarian => false
OldItalic => false
Javanese => false
KayahLi => false
Katakana => false
Kharoshthi => false
Khmer => false
Khojki => false
KhitanSmallScript => false
Kannada => false
Kaithi => false
TaiTham => false
Lao => false
Latin => false
Lepcha => false
Limbu => false
LinearA => false
LinearB => false
Lisu => false
Lycian => false
Lydian => false
Mahajani => false
Makasar => false
Mandaic => true
Manichaean => true
Marchen => false
Medefaidrin => false
MendeKikakui => false
MeroiticCursive => false
MeroiticHieroglyphs => false
Malayalam => false
Modi => false
Mongolian => true
Mro => false
MeeteiMayek => false
Multani => false
Myanmar => false
Nandinagari => false
OldNorthArabian => false
Nabataean => false
Newa => false
Nko => true
Nushu => false
Ogham => false
OlChiki => false
OldTurkic => false
Oriya => false
Osage => false
Osmanya => false
Palmyrene => false
PauCinHau => false
OldPermic => false
PhagsPa => true
InscriptionalPahlavi => false
PsalterPahlavi => true
Phoenician => false
Miao => false
InscriptionalParthian => false
Rejang => false
HanifiRohingya => false
Runic => false
Samaritan => false
OldSouthArabian => false
Saurashtra => false
SignWriting => false
Shavian => false
Sharada => false
Siddham => false
Khudawadi => false
Sinhala => false
Sogdian => false
OldSogdian => false
SoraSompeng => false
Soyombo => false
Sundanese => false
SylotiNagri => false
Syriac => true
Tagbanwa => false
Takri => false
TaiLe => false
NewTaiLue => false
Tamil => false
Tangut => false
TaiViet => false
Telugu => false
Tifinagh => false
Tagalog => false
Thaana => false
Thai => false
Tibetan => false
Tirhuta => false
Ugaritic => false
Vai => false
WarangCiti => false
Wancho => false
OldPersian => false
Cuneiform => false
Yezidi => false
Yi => false
ZanabazarSquare => false
Inherited => false
Common => false
Unknown => false
}
}