#[cfg(test)]
#[cfg(not(miri))]
#[path = "generated.tests.rs"]
mod tests;
#[cfg(feature = "unicode")]
pub const UNICODE_VERSION: (u32, u32, u32) = (18, 0, 0);
fn in_range(c: char, table: &[(char, char)]) -> bool {
use core::cmp::Ordering::*;
table
.binary_search_by(|&(low, high)| {
if low > c {
Greater
} else if high < c {
Less
} else {
Equal
}
})
.is_ok()
}
pub fn is_titlecase(c: char) -> bool {
const TABLE: &[(char, char)] = &[
('\u{001C5}', '\u{001C5}'), ('\u{001C8}', '\u{001C8}'), ('\u{001CB}', '\u{001CB}'),
('\u{001F2}', '\u{001F2}'), ('\u{01F88}', '\u{01F8F}'), ('\u{01F98}', '\u{01F9F}'),
('\u{01FA8}', '\u{01FAF}'), ('\u{01FBC}', '\u{01FBC}'), ('\u{01FCC}', '\u{01FCC}'),
('\u{01FFC}', '\u{01FFC}'),
];
if c < '\u{001C5}' {
return false;
}
in_range(c, TABLE)
}
pub fn is_titlecase_greek_variant(tc: char) -> bool {
tc >= '\u{01F88}'
}
#[cfg(feature = "unicode")]
pub fn is_combining_mark(c: char) -> bool {
const TABLE: &[(char, char)] = &[
('\u{00300}', '\u{0036F}'), ('\u{00483}', '\u{00489}'), ('\u{00591}', '\u{005BD}'),
('\u{005BF}', '\u{005BF}'), ('\u{005C1}', '\u{005C2}'), ('\u{005C4}', '\u{005C5}'),
('\u{005C7}', '\u{005C9}'), ('\u{00610}', '\u{0061A}'), ('\u{0064B}', '\u{0065F}'),
('\u{00670}', '\u{00670}'), ('\u{006D6}', '\u{006DC}'), ('\u{006DF}', '\u{006E4}'),
('\u{006E7}', '\u{006E8}'), ('\u{006EA}', '\u{006ED}'), ('\u{00711}', '\u{00711}'),
('\u{00730}', '\u{0074A}'), ('\u{007A6}', '\u{007B0}'), ('\u{007EB}', '\u{007F3}'),
('\u{007FD}', '\u{007FD}'), ('\u{00816}', '\u{00819}'), ('\u{0081B}', '\u{00823}'),
('\u{00825}', '\u{00827}'), ('\u{00829}', '\u{0082D}'), ('\u{00859}', '\u{0085B}'),
('\u{00897}', '\u{0089F}'), ('\u{008CA}', '\u{008E1}'), ('\u{008E3}', '\u{00903}'),
('\u{0093A}', '\u{0093C}'), ('\u{0093E}', '\u{0094F}'), ('\u{00951}', '\u{00957}'),
('\u{00962}', '\u{00963}'), ('\u{00981}', '\u{00983}'), ('\u{009BC}', '\u{009BC}'),
('\u{009BE}', '\u{009C4}'), ('\u{009C7}', '\u{009C8}'), ('\u{009CB}', '\u{009CD}'),
('\u{009D7}', '\u{009D7}'), ('\u{009E2}', '\u{009E3}'), ('\u{009FE}', '\u{009FE}'),
('\u{00A01}', '\u{00A03}'), ('\u{00A3C}', '\u{00A3C}'), ('\u{00A3E}', '\u{00A42}'),
('\u{00A47}', '\u{00A48}'), ('\u{00A4B}', '\u{00A4D}'), ('\u{00A51}', '\u{00A51}'),
('\u{00A70}', '\u{00A71}'), ('\u{00A75}', '\u{00A75}'), ('\u{00A81}', '\u{00A83}'),
('\u{00ABC}', '\u{00ABC}'), ('\u{00ABE}', '\u{00AC5}'), ('\u{00AC7}', '\u{00AC9}'),
('\u{00ACB}', '\u{00ACD}'), ('\u{00AE2}', '\u{00AE3}'), ('\u{00AFA}', '\u{00AFF}'),
('\u{00B01}', '\u{00B03}'), ('\u{00B3C}', '\u{00B3C}'), ('\u{00B3E}', '\u{00B44}'),
('\u{00B47}', '\u{00B48}'), ('\u{00B4B}', '\u{00B4D}'), ('\u{00B53}', '\u{00B57}'),
('\u{00B62}', '\u{00B63}'), ('\u{00B82}', '\u{00B82}'), ('\u{00BBE}', '\u{00BC2}'),
('\u{00BC6}', '\u{00BC8}'), ('\u{00BCA}', '\u{00BCD}'), ('\u{00BD7}', '\u{00BD7}'),
('\u{00C00}', '\u{00C04}'), ('\u{00C3C}', '\u{00C3C}'), ('\u{00C3E}', '\u{00C44}'),
('\u{00C46}', '\u{00C48}'), ('\u{00C4A}', '\u{00C4D}'), ('\u{00C55}', '\u{00C56}'),
('\u{00C62}', '\u{00C63}'), ('\u{00C81}', '\u{00C83}'), ('\u{00CBC}', '\u{00CBC}'),
('\u{00CBE}', '\u{00CC4}'), ('\u{00CC6}', '\u{00CC8}'), ('\u{00CCA}', '\u{00CCD}'),
('\u{00CD5}', '\u{00CD6}'), ('\u{00CE2}', '\u{00CE3}'), ('\u{00CF3}', '\u{00CF3}'),
('\u{00D00}', '\u{00D03}'), ('\u{00D3B}', '\u{00D3C}'), ('\u{00D3E}', '\u{00D44}'),
('\u{00D46}', '\u{00D48}'), ('\u{00D4A}', '\u{00D4D}'), ('\u{00D57}', '\u{00D57}'),
('\u{00D62}', '\u{00D63}'), ('\u{00D81}', '\u{00D83}'), ('\u{00DCA}', '\u{00DCA}'),
('\u{00DCF}', '\u{00DD4}'), ('\u{00DD6}', '\u{00DD6}'), ('\u{00DD8}', '\u{00DDF}'),
('\u{00DF2}', '\u{00DF3}'), ('\u{00E31}', '\u{00E31}'), ('\u{00E34}', '\u{00E3A}'),
('\u{00E47}', '\u{00E4E}'), ('\u{00EB1}', '\u{00EB1}'), ('\u{00EB4}', '\u{00EBC}'),
('\u{00EC8}', '\u{00ECE}'), ('\u{00F18}', '\u{00F19}'), ('\u{00F35}', '\u{00F35}'),
('\u{00F37}', '\u{00F37}'), ('\u{00F39}', '\u{00F39}'), ('\u{00F3E}', '\u{00F3F}'),
('\u{00F71}', '\u{00F84}'), ('\u{00F86}', '\u{00F87}'), ('\u{00F8D}', '\u{00F97}'),
('\u{00F99}', '\u{00FBC}'), ('\u{00FC6}', '\u{00FC6}'), ('\u{0102B}', '\u{0103E}'),
('\u{01056}', '\u{01059}'), ('\u{0105E}', '\u{01060}'), ('\u{01062}', '\u{01064}'),
('\u{01067}', '\u{0106D}'), ('\u{01071}', '\u{01074}'), ('\u{01082}', '\u{0108D}'),
('\u{0108F}', '\u{0108F}'), ('\u{0109A}', '\u{0109D}'), ('\u{0135D}', '\u{0135F}'),
('\u{01712}', '\u{01715}'), ('\u{01732}', '\u{01734}'), ('\u{01752}', '\u{01753}'),
('\u{01772}', '\u{01773}'), ('\u{017B4}', '\u{017D3}'), ('\u{017DD}', '\u{017DD}'),
('\u{0180B}', '\u{0180D}'), ('\u{0180F}', '\u{0180F}'), ('\u{01885}', '\u{01886}'),
('\u{018A9}', '\u{018A9}'), ('\u{01920}', '\u{0192B}'), ('\u{01930}', '\u{0193B}'),
('\u{01A17}', '\u{01A1B}'), ('\u{01A55}', '\u{01A5E}'), ('\u{01A60}', '\u{01A7C}'),
('\u{01A7F}', '\u{01A7F}'), ('\u{01AB0}', '\u{01AF0}'), ('\u{01B00}', '\u{01B04}'),
('\u{01B34}', '\u{01B44}'), ('\u{01B6B}', '\u{01B73}'), ('\u{01B80}', '\u{01B82}'),
('\u{01BA1}', '\u{01BAD}'), ('\u{01BE6}', '\u{01BF3}'), ('\u{01C24}', '\u{01C37}'),
('\u{01CD0}', '\u{01CD2}'), ('\u{01CD4}', '\u{01CE8}'), ('\u{01CED}', '\u{01CED}'),
('\u{01CF4}', '\u{01CF4}'), ('\u{01CF7}', '\u{01CF9}'), ('\u{01DC0}', '\u{01DFF}'),
('\u{020D0}', '\u{020F0}'), ('\u{02CEF}', '\u{02CF1}'), ('\u{02D7F}', '\u{02D7F}'),
('\u{02DE0}', '\u{02DFF}'), ('\u{0302A}', '\u{0302F}'), ('\u{03099}', '\u{0309A}'),
('\u{0A66F}', '\u{0A672}'), ('\u{0A674}', '\u{0A67D}'), ('\u{0A69E}', '\u{0A69F}'),
('\u{0A6F0}', '\u{0A6F1}'), ('\u{0A802}', '\u{0A802}'), ('\u{0A806}', '\u{0A806}'),
('\u{0A80B}', '\u{0A80B}'), ('\u{0A823}', '\u{0A827}'), ('\u{0A82C}', '\u{0A82C}'),
('\u{0A880}', '\u{0A881}'), ('\u{0A8B4}', '\u{0A8C5}'), ('\u{0A8E0}', '\u{0A8F1}'),
('\u{0A8FF}', '\u{0A8FF}'), ('\u{0A926}', '\u{0A92D}'), ('\u{0A947}', '\u{0A953}'),
('\u{0A980}', '\u{0A983}'), ('\u{0A9B3}', '\u{0A9C0}'), ('\u{0A9E5}', '\u{0A9E5}'),
('\u{0AA29}', '\u{0AA36}'), ('\u{0AA43}', '\u{0AA43}'), ('\u{0AA4C}', '\u{0AA4D}'),
('\u{0AA7B}', '\u{0AA7D}'), ('\u{0AAB0}', '\u{0AAB0}'), ('\u{0AAB2}', '\u{0AAB4}'),
('\u{0AAB7}', '\u{0AAB8}'), ('\u{0AABE}', '\u{0AABF}'), ('\u{0AAC1}', '\u{0AAC1}'),
('\u{0AAEB}', '\u{0AAEF}'), ('\u{0AAF5}', '\u{0AAF6}'), ('\u{0ABE3}', '\u{0ABEA}'),
('\u{0ABEC}', '\u{0ABED}'), ('\u{0FB1E}', '\u{0FB1E}'), ('\u{0FE00}', '\u{0FE0F}'),
('\u{0FE20}', '\u{0FE2F}'), ('\u{101FD}', '\u{101FD}'), ('\u{102E0}', '\u{102E0}'),
('\u{10376}', '\u{1037A}'), ('\u{10A01}', '\u{10A03}'), ('\u{10A05}', '\u{10A06}'),
('\u{10A0C}', '\u{10A0F}'), ('\u{10A38}', '\u{10A3A}'), ('\u{10A3F}', '\u{10A3F}'),
('\u{10AE5}', '\u{10AE6}'), ('\u{10D24}', '\u{10D27}'), ('\u{10D69}', '\u{10D6D}'),
('\u{10EAB}', '\u{10EAC}'), ('\u{10ECB}', '\u{10ECF}'), ('\u{10EF0}', '\u{10EFF}'),
('\u{10F46}', '\u{10F50}'), ('\u{10F82}', '\u{10F85}'), ('\u{11000}', '\u{11002}'),
('\u{11038}', '\u{11046}'), ('\u{11070}', '\u{11070}'), ('\u{11073}', '\u{11074}'),
('\u{1107F}', '\u{11082}'), ('\u{110B0}', '\u{110BA}'), ('\u{110C2}', '\u{110C2}'),
('\u{11100}', '\u{11102}'), ('\u{11127}', '\u{11134}'), ('\u{11145}', '\u{11146}'),
('\u{11173}', '\u{11173}'), ('\u{11180}', '\u{11182}'), ('\u{111B3}', '\u{111C0}'),
('\u{111C9}', '\u{111CC}'), ('\u{111CE}', '\u{111CF}'), ('\u{1122C}', '\u{11237}'),
('\u{1123E}', '\u{1123E}'), ('\u{11241}', '\u{11241}'), ('\u{112DF}', '\u{112EA}'),
('\u{11300}', '\u{11303}'), ('\u{1133B}', '\u{1133C}'), ('\u{1133E}', '\u{11344}'),
('\u{11347}', '\u{11348}'), ('\u{1134B}', '\u{1134D}'), ('\u{11357}', '\u{11357}'),
('\u{11362}', '\u{11363}'), ('\u{11366}', '\u{1136C}'), ('\u{11370}', '\u{11374}'),
('\u{113B8}', '\u{113C0}'), ('\u{113C2}', '\u{113C2}'), ('\u{113C5}', '\u{113C5}'),
('\u{113C7}', '\u{113CA}'), ('\u{113CC}', '\u{113D0}'), ('\u{113D2}', '\u{113D2}'),
('\u{113E1}', '\u{113E2}'), ('\u{11435}', '\u{11446}'), ('\u{1145E}', '\u{1145E}'),
('\u{114B0}', '\u{114C3}'), ('\u{115AF}', '\u{115B5}'), ('\u{115B8}', '\u{115C0}'),
('\u{115DC}', '\u{115DD}'), ('\u{11630}', '\u{11640}'), ('\u{116AB}', '\u{116B7}'),
('\u{1171D}', '\u{1172B}'), ('\u{1182C}', '\u{1183A}'), ('\u{11930}', '\u{11935}'),
('\u{11937}', '\u{11938}'), ('\u{1193B}', '\u{1193E}'), ('\u{11940}', '\u{11940}'),
('\u{11942}', '\u{11943}'), ('\u{119D1}', '\u{119D7}'), ('\u{119DA}', '\u{119E0}'),
('\u{119E4}', '\u{119E4}'), ('\u{11A01}', '\u{11A0A}'), ('\u{11A33}', '\u{11A39}'),
('\u{11A3B}', '\u{11A3E}'), ('\u{11A47}', '\u{11A47}'), ('\u{11A51}', '\u{11A5B}'),
('\u{11A8A}', '\u{11A99}'), ('\u{11B60}', '\u{11B67}'), ('\u{11C2F}', '\u{11C36}'),
('\u{11C38}', '\u{11C3F}'), ('\u{11C92}', '\u{11CA7}'), ('\u{11CA9}', '\u{11CB6}'),
('\u{11D31}', '\u{11D36}'), ('\u{11D3A}', '\u{11D3A}'), ('\u{11D3C}', '\u{11D3D}'),
('\u{11D3F}', '\u{11D45}'), ('\u{11D47}', '\u{11D47}'), ('\u{11D8A}', '\u{11D8E}'),
('\u{11D90}', '\u{11D91}'), ('\u{11D93}', '\u{11D97}'), ('\u{11DF0}', '\u{11DF0}'),
('\u{11EF3}', '\u{11EF6}'), ('\u{11F00}', '\u{11F01}'), ('\u{11F03}', '\u{11F03}'),
('\u{11F34}', '\u{11F3A}'), ('\u{11F3E}', '\u{11F42}'), ('\u{11F5A}', '\u{11F5A}'),
('\u{13440}', '\u{13440}'), ('\u{13447}', '\u{13455}'), ('\u{1611E}', '\u{1612F}'),
('\u{16AF0}', '\u{16AF4}'), ('\u{16B30}', '\u{16B36}'), ('\u{16F4F}', '\u{16F4F}'),
('\u{16F51}', '\u{16F87}'), ('\u{16F8F}', '\u{16F92}'), ('\u{16FE4}', '\u{16FE4}'),
('\u{16FF0}', '\u{16FF1}'), ('\u{1BC9D}', '\u{1BC9E}'), ('\u{1CF00}', '\u{1CF2D}'),
('\u{1CF30}', '\u{1CF46}'), ('\u{1D127}', '\u{1D128}'), ('\u{1D165}', '\u{1D169}'),
('\u{1D16D}', '\u{1D172}'), ('\u{1D17B}', '\u{1D182}'), ('\u{1D185}', '\u{1D18B}'),
('\u{1D1AA}', '\u{1D1AD}'), ('\u{1D242}', '\u{1D244}'), ('\u{1D250}', '\u{1D252}'),
('\u{1D25B}', '\u{1D25C}'), ('\u{1D25F}', '\u{1D25F}'), ('\u{1D280}', '\u{1D281}'),
('\u{1DA00}', '\u{1DA36}'), ('\u{1DA3B}', '\u{1DA6C}'), ('\u{1DA75}', '\u{1DA75}'),
('\u{1DA84}', '\u{1DA84}'), ('\u{1DA9B}', '\u{1DA9F}'), ('\u{1DAA1}', '\u{1DAAF}'),
('\u{1E000}', '\u{1E006}'), ('\u{1E008}', '\u{1E018}'), ('\u{1E01B}', '\u{1E021}'),
('\u{1E023}', '\u{1E024}'), ('\u{1E026}', '\u{1E02A}'), ('\u{1E08F}', '\u{1E08F}'),
('\u{1E130}', '\u{1E136}'), ('\u{1E2AE}', '\u{1E2AE}'), ('\u{1E2EC}', '\u{1E2EF}'),
('\u{1E4EC}', '\u{1E4EF}'), ('\u{1E5EE}', '\u{1E5EF}'), ('\u{1E6E3}', '\u{1E6E3}'),
('\u{1E6E6}', '\u{1E6E6}'), ('\u{1E6EE}', '\u{1E6EF}'), ('\u{1E6F5}', '\u{1E6F5}'),
('\u{1E8D0}', '\u{1E8D6}'), ('\u{1E944}', '\u{1E94A}'), ('\u{E0100}', '\u{E01EF}'),
];
if c < '\u{00300}' {
return false;
}
in_range(c, TABLE)
}
#[cfg(test)]
#[cfg(not(miri))]
#[cfg(feature = "unicode")]
pub fn is_enclosing_mark(c: char) -> bool {
const TABLE: &[(char, char)] = &[
('\u{00488}', '\u{00489}'), ('\u{01ABE}', '\u{01ABE}'), ('\u{020DD}', '\u{020E0}'),
('\u{020E2}', '\u{020E4}'), ('\u{0A670}', '\u{0A672}'),
];
if c < '\u{00488}' {
return false;
}
in_range(c, TABLE)
}
#[cfg(test)]
#[cfg(not(miri))]
#[cfg(feature = "unicode")]
pub fn is_nonspacing_mark(c: char) -> bool {
const TABLE: &[(char, char)] = &[
('\u{00300}', '\u{0036F}'), ('\u{00483}', '\u{00487}'), ('\u{00591}', '\u{005BD}'),
('\u{005BF}', '\u{005BF}'), ('\u{005C1}', '\u{005C2}'), ('\u{005C4}', '\u{005C5}'),
('\u{005C7}', '\u{005C9}'), ('\u{00610}', '\u{0061A}'), ('\u{0064B}', '\u{0065F}'),
('\u{00670}', '\u{00670}'), ('\u{006D6}', '\u{006DC}'), ('\u{006DF}', '\u{006E4}'),
('\u{006E7}', '\u{006E8}'), ('\u{006EA}', '\u{006ED}'), ('\u{00711}', '\u{00711}'),
('\u{00730}', '\u{0074A}'), ('\u{007A6}', '\u{007B0}'), ('\u{007EB}', '\u{007F3}'),
('\u{007FD}', '\u{007FD}'), ('\u{00816}', '\u{00819}'), ('\u{0081B}', '\u{00823}'),
('\u{00825}', '\u{00827}'), ('\u{00829}', '\u{0082D}'), ('\u{00859}', '\u{0085B}'),
('\u{00897}', '\u{0089F}'), ('\u{008CA}', '\u{008E1}'), ('\u{008E3}', '\u{00902}'),
('\u{0093A}', '\u{0093A}'), ('\u{0093C}', '\u{0093C}'), ('\u{00941}', '\u{00948}'),
('\u{0094D}', '\u{0094D}'), ('\u{00951}', '\u{00957}'), ('\u{00962}', '\u{00963}'),
('\u{00981}', '\u{00981}'), ('\u{009BC}', '\u{009BC}'), ('\u{009C1}', '\u{009C4}'),
('\u{009CD}', '\u{009CD}'), ('\u{009E2}', '\u{009E3}'), ('\u{009FE}', '\u{009FE}'),
('\u{00A01}', '\u{00A02}'), ('\u{00A3C}', '\u{00A3C}'), ('\u{00A41}', '\u{00A42}'),
('\u{00A47}', '\u{00A48}'), ('\u{00A4B}', '\u{00A4D}'), ('\u{00A51}', '\u{00A51}'),
('\u{00A70}', '\u{00A71}'), ('\u{00A75}', '\u{00A75}'), ('\u{00A81}', '\u{00A82}'),
('\u{00ABC}', '\u{00ABC}'), ('\u{00AC1}', '\u{00AC5}'), ('\u{00AC7}', '\u{00AC8}'),
('\u{00ACD}', '\u{00ACD}'), ('\u{00AE2}', '\u{00AE3}'), ('\u{00AFA}', '\u{00AFF}'),
('\u{00B01}', '\u{00B01}'), ('\u{00B3C}', '\u{00B3C}'), ('\u{00B3F}', '\u{00B3F}'),
('\u{00B41}', '\u{00B44}'), ('\u{00B4D}', '\u{00B4D}'), ('\u{00B53}', '\u{00B56}'),
('\u{00B62}', '\u{00B63}'), ('\u{00B82}', '\u{00B82}'), ('\u{00BC0}', '\u{00BC0}'),
('\u{00BCD}', '\u{00BCD}'), ('\u{00C00}', '\u{00C00}'), ('\u{00C04}', '\u{00C04}'),
('\u{00C3C}', '\u{00C3C}'), ('\u{00C3E}', '\u{00C40}'), ('\u{00C46}', '\u{00C48}'),
('\u{00C4A}', '\u{00C4D}'), ('\u{00C55}', '\u{00C56}'), ('\u{00C62}', '\u{00C63}'),
('\u{00C81}', '\u{00C81}'), ('\u{00CBC}', '\u{00CBC}'), ('\u{00CBF}', '\u{00CBF}'),
('\u{00CC6}', '\u{00CC6}'), ('\u{00CCC}', '\u{00CCD}'), ('\u{00CE2}', '\u{00CE3}'),
('\u{00D00}', '\u{00D01}'), ('\u{00D3B}', '\u{00D3C}'), ('\u{00D41}', '\u{00D44}'),
('\u{00D4D}', '\u{00D4D}'), ('\u{00D62}', '\u{00D63}'), ('\u{00D81}', '\u{00D81}'),
('\u{00DCA}', '\u{00DCA}'), ('\u{00DD2}', '\u{00DD4}'), ('\u{00DD6}', '\u{00DD6}'),
('\u{00E31}', '\u{00E31}'), ('\u{00E34}', '\u{00E3A}'), ('\u{00E47}', '\u{00E4E}'),
('\u{00EB1}', '\u{00EB1}'), ('\u{00EB4}', '\u{00EBC}'), ('\u{00EC8}', '\u{00ECE}'),
('\u{00F18}', '\u{00F19}'), ('\u{00F35}', '\u{00F35}'), ('\u{00F37}', '\u{00F37}'),
('\u{00F39}', '\u{00F39}'), ('\u{00F71}', '\u{00F7E}'), ('\u{00F80}', '\u{00F84}'),
('\u{00F86}', '\u{00F87}'), ('\u{00F8D}', '\u{00F97}'), ('\u{00F99}', '\u{00FBC}'),
('\u{00FC6}', '\u{00FC6}'), ('\u{0102D}', '\u{01030}'), ('\u{01032}', '\u{01037}'),
('\u{01039}', '\u{0103A}'), ('\u{0103D}', '\u{0103E}'), ('\u{01058}', '\u{01059}'),
('\u{0105E}', '\u{01060}'), ('\u{01071}', '\u{01074}'), ('\u{01082}', '\u{01082}'),
('\u{01085}', '\u{01086}'), ('\u{0108D}', '\u{0108D}'), ('\u{0109D}', '\u{0109D}'),
('\u{0135D}', '\u{0135F}'), ('\u{01712}', '\u{01714}'), ('\u{01732}', '\u{01733}'),
('\u{01752}', '\u{01753}'), ('\u{01772}', '\u{01773}'), ('\u{017B4}', '\u{017B5}'),
('\u{017B7}', '\u{017BD}'), ('\u{017C6}', '\u{017C6}'), ('\u{017C9}', '\u{017D3}'),
('\u{017DD}', '\u{017DD}'), ('\u{0180B}', '\u{0180D}'), ('\u{0180F}', '\u{0180F}'),
('\u{01885}', '\u{01886}'), ('\u{018A9}', '\u{018A9}'), ('\u{01920}', '\u{01922}'),
('\u{01927}', '\u{01928}'), ('\u{01932}', '\u{01932}'), ('\u{01939}', '\u{0193B}'),
('\u{01A17}', '\u{01A18}'), ('\u{01A1B}', '\u{01A1B}'), ('\u{01A56}', '\u{01A56}'),
('\u{01A58}', '\u{01A5E}'), ('\u{01A60}', '\u{01A60}'), ('\u{01A62}', '\u{01A62}'),
('\u{01A65}', '\u{01A6C}'), ('\u{01A73}', '\u{01A7C}'), ('\u{01A7F}', '\u{01A7F}'),
('\u{01AB0}', '\u{01ABD}'), ('\u{01ABF}', '\u{01AF0}'), ('\u{01B00}', '\u{01B03}'),
('\u{01B34}', '\u{01B34}'), ('\u{01B36}', '\u{01B3A}'), ('\u{01B3C}', '\u{01B3C}'),
('\u{01B42}', '\u{01B42}'), ('\u{01B6B}', '\u{01B73}'), ('\u{01B80}', '\u{01B81}'),
('\u{01BA2}', '\u{01BA5}'), ('\u{01BA8}', '\u{01BA9}'), ('\u{01BAB}', '\u{01BAD}'),
('\u{01BE6}', '\u{01BE6}'), ('\u{01BE8}', '\u{01BE9}'), ('\u{01BED}', '\u{01BED}'),
('\u{01BEF}', '\u{01BF1}'), ('\u{01C2C}', '\u{01C33}'), ('\u{01C36}', '\u{01C37}'),
('\u{01CD0}', '\u{01CD2}'), ('\u{01CD4}', '\u{01CE0}'), ('\u{01CE2}', '\u{01CE8}'),
('\u{01CED}', '\u{01CED}'), ('\u{01CF4}', '\u{01CF4}'), ('\u{01CF8}', '\u{01CF9}'),
('\u{01DC0}', '\u{01DFF}'), ('\u{020D0}', '\u{020DC}'), ('\u{020E1}', '\u{020E1}'),
('\u{020E5}', '\u{020F0}'), ('\u{02CEF}', '\u{02CF1}'), ('\u{02D7F}', '\u{02D7F}'),
('\u{02DE0}', '\u{02DFF}'), ('\u{0302A}', '\u{0302D}'), ('\u{03099}', '\u{0309A}'),
('\u{0A66F}', '\u{0A66F}'), ('\u{0A674}', '\u{0A67D}'), ('\u{0A69E}', '\u{0A69F}'),
('\u{0A6F0}', '\u{0A6F1}'), ('\u{0A802}', '\u{0A802}'), ('\u{0A806}', '\u{0A806}'),
('\u{0A80B}', '\u{0A80B}'), ('\u{0A825}', '\u{0A826}'), ('\u{0A82C}', '\u{0A82C}'),
('\u{0A8C4}', '\u{0A8C5}'), ('\u{0A8E0}', '\u{0A8F1}'), ('\u{0A8FF}', '\u{0A8FF}'),
('\u{0A926}', '\u{0A92D}'), ('\u{0A947}', '\u{0A951}'), ('\u{0A980}', '\u{0A982}'),
('\u{0A9B3}', '\u{0A9B3}'), ('\u{0A9B6}', '\u{0A9B9}'), ('\u{0A9BC}', '\u{0A9BD}'),
('\u{0A9E5}', '\u{0A9E5}'), ('\u{0AA29}', '\u{0AA2E}'), ('\u{0AA31}', '\u{0AA32}'),
('\u{0AA35}', '\u{0AA36}'), ('\u{0AA43}', '\u{0AA43}'), ('\u{0AA4C}', '\u{0AA4C}'),
('\u{0AA7C}', '\u{0AA7C}'), ('\u{0AAB0}', '\u{0AAB0}'), ('\u{0AAB2}', '\u{0AAB4}'),
('\u{0AAB7}', '\u{0AAB8}'), ('\u{0AABE}', '\u{0AABF}'), ('\u{0AAC1}', '\u{0AAC1}'),
('\u{0AAEC}', '\u{0AAED}'), ('\u{0AAF6}', '\u{0AAF6}'), ('\u{0ABE5}', '\u{0ABE5}'),
('\u{0ABE8}', '\u{0ABE8}'), ('\u{0ABED}', '\u{0ABED}'), ('\u{0FB1E}', '\u{0FB1E}'),
('\u{0FE00}', '\u{0FE0F}'), ('\u{0FE20}', '\u{0FE2F}'), ('\u{101FD}', '\u{101FD}'),
('\u{102E0}', '\u{102E0}'), ('\u{10376}', '\u{1037A}'), ('\u{10A01}', '\u{10A03}'),
('\u{10A05}', '\u{10A06}'), ('\u{10A0C}', '\u{10A0F}'), ('\u{10A38}', '\u{10A3A}'),
('\u{10A3F}', '\u{10A3F}'), ('\u{10AE5}', '\u{10AE6}'), ('\u{10D24}', '\u{10D27}'),
('\u{10D69}', '\u{10D6D}'), ('\u{10EAB}', '\u{10EAC}'), ('\u{10ECB}', '\u{10ECF}'),
('\u{10EF0}', '\u{10EFF}'), ('\u{10F46}', '\u{10F50}'), ('\u{10F82}', '\u{10F85}'),
('\u{11001}', '\u{11001}'), ('\u{11038}', '\u{11046}'), ('\u{11070}', '\u{11070}'),
('\u{11073}', '\u{11074}'), ('\u{1107F}', '\u{11081}'), ('\u{110B3}', '\u{110B6}'),
('\u{110B9}', '\u{110BA}'), ('\u{110C2}', '\u{110C2}'), ('\u{11100}', '\u{11102}'),
('\u{11127}', '\u{1112B}'), ('\u{1112D}', '\u{11134}'), ('\u{11173}', '\u{11173}'),
('\u{11180}', '\u{11181}'), ('\u{111B6}', '\u{111BE}'), ('\u{111C9}', '\u{111CC}'),
('\u{111CF}', '\u{111CF}'), ('\u{1122F}', '\u{11231}'), ('\u{11234}', '\u{11234}'),
('\u{11236}', '\u{11237}'), ('\u{1123E}', '\u{1123E}'), ('\u{11241}', '\u{11241}'),
('\u{112DF}', '\u{112DF}'), ('\u{112E3}', '\u{112EA}'), ('\u{11300}', '\u{11301}'),
('\u{1133B}', '\u{1133C}'), ('\u{11340}', '\u{11340}'), ('\u{11366}', '\u{1136C}'),
('\u{11370}', '\u{11374}'), ('\u{113BB}', '\u{113C0}'), ('\u{113CE}', '\u{113CE}'),
('\u{113D0}', '\u{113D0}'), ('\u{113D2}', '\u{113D2}'), ('\u{113E1}', '\u{113E2}'),
('\u{11438}', '\u{1143F}'), ('\u{11442}', '\u{11444}'), ('\u{11446}', '\u{11446}'),
('\u{1145E}', '\u{1145E}'), ('\u{114B3}', '\u{114B8}'), ('\u{114BA}', '\u{114BA}'),
('\u{114BF}', '\u{114C0}'), ('\u{114C2}', '\u{114C3}'), ('\u{115B2}', '\u{115B5}'),
('\u{115BC}', '\u{115BD}'), ('\u{115BF}', '\u{115C0}'), ('\u{115DC}', '\u{115DD}'),
('\u{11633}', '\u{1163A}'), ('\u{1163D}', '\u{1163D}'), ('\u{1163F}', '\u{11640}'),
('\u{116AB}', '\u{116AB}'), ('\u{116AD}', '\u{116AD}'), ('\u{116B0}', '\u{116B5}'),
('\u{116B7}', '\u{116B7}'), ('\u{1171D}', '\u{1171D}'), ('\u{1171F}', '\u{1171F}'),
('\u{11722}', '\u{11725}'), ('\u{11727}', '\u{1172B}'), ('\u{1182F}', '\u{11837}'),
('\u{11839}', '\u{1183A}'), ('\u{1193B}', '\u{1193C}'), ('\u{1193E}', '\u{1193E}'),
('\u{11943}', '\u{11943}'), ('\u{119D4}', '\u{119D7}'), ('\u{119DA}', '\u{119DB}'),
('\u{119E0}', '\u{119E0}'), ('\u{11A01}', '\u{11A0A}'), ('\u{11A33}', '\u{11A38}'),
('\u{11A3B}', '\u{11A3E}'), ('\u{11A47}', '\u{11A47}'), ('\u{11A51}', '\u{11A56}'),
('\u{11A59}', '\u{11A5B}'), ('\u{11A8A}', '\u{11A96}'), ('\u{11A98}', '\u{11A99}'),
('\u{11B60}', '\u{11B60}'), ('\u{11B62}', '\u{11B64}'), ('\u{11B66}', '\u{11B66}'),
('\u{11C30}', '\u{11C36}'), ('\u{11C38}', '\u{11C3D}'), ('\u{11C3F}', '\u{11C3F}'),
('\u{11C92}', '\u{11CA7}'), ('\u{11CAA}', '\u{11CB0}'), ('\u{11CB2}', '\u{11CB3}'),
('\u{11CB5}', '\u{11CB6}'), ('\u{11D31}', '\u{11D36}'), ('\u{11D3A}', '\u{11D3A}'),
('\u{11D3C}', '\u{11D3D}'), ('\u{11D3F}', '\u{11D45}'), ('\u{11D47}', '\u{11D47}'),
('\u{11D90}', '\u{11D91}'), ('\u{11D95}', '\u{11D95}'), ('\u{11D97}', '\u{11D97}'),
('\u{11DF0}', '\u{11DF0}'), ('\u{11EF3}', '\u{11EF4}'), ('\u{11F00}', '\u{11F01}'),
('\u{11F36}', '\u{11F3A}'), ('\u{11F40}', '\u{11F40}'), ('\u{11F42}', '\u{11F42}'),
('\u{11F5A}', '\u{11F5A}'), ('\u{13440}', '\u{13440}'), ('\u{13447}', '\u{13455}'),
('\u{1611E}', '\u{16129}'), ('\u{1612D}', '\u{1612F}'), ('\u{16AF0}', '\u{16AF4}'),
('\u{16B30}', '\u{16B36}'), ('\u{16F4F}', '\u{16F4F}'), ('\u{16F8F}', '\u{16F92}'),
('\u{16FE4}', '\u{16FE4}'), ('\u{1BC9D}', '\u{1BC9E}'), ('\u{1CF00}', '\u{1CF2D}'),
('\u{1CF30}', '\u{1CF46}'), ('\u{1D127}', '\u{1D128}'), ('\u{1D167}', '\u{1D169}'),
('\u{1D17B}', '\u{1D182}'), ('\u{1D185}', '\u{1D18B}'), ('\u{1D1AA}', '\u{1D1AD}'),
('\u{1D242}', '\u{1D244}'), ('\u{1D25B}', '\u{1D25C}'), ('\u{1DA00}', '\u{1DA36}'),
('\u{1DA3B}', '\u{1DA6C}'), ('\u{1DA75}', '\u{1DA75}'), ('\u{1DA84}', '\u{1DA84}'),
('\u{1DA9B}', '\u{1DA9F}'), ('\u{1DAA1}', '\u{1DAAF}'), ('\u{1E000}', '\u{1E006}'),
('\u{1E008}', '\u{1E018}'), ('\u{1E01B}', '\u{1E021}'), ('\u{1E023}', '\u{1E024}'),
('\u{1E026}', '\u{1E02A}'), ('\u{1E08F}', '\u{1E08F}'), ('\u{1E130}', '\u{1E136}'),
('\u{1E2AE}', '\u{1E2AE}'), ('\u{1E2EC}', '\u{1E2EF}'), ('\u{1E4EC}', '\u{1E4EF}'),
('\u{1E5EE}', '\u{1E5EF}'), ('\u{1E6E3}', '\u{1E6E3}'), ('\u{1E6E6}', '\u{1E6E6}'),
('\u{1E6EE}', '\u{1E6EF}'), ('\u{1E6F5}', '\u{1E6F5}'), ('\u{1E8D0}', '\u{1E8D6}'),
('\u{1E944}', '\u{1E94A}'), ('\u{E0100}', '\u{E01EF}'),
];
if c < '\u{00300}' {
return false;
}
in_range(c, TABLE)
}
#[cfg(test)]
#[cfg(not(miri))]
#[cfg(feature = "unicode")]
pub fn is_spacing_mark(c: char) -> bool {
const TABLE: &[(char, char)] = &[
('\u{00903}', '\u{00903}'), ('\u{0093B}', '\u{0093B}'), ('\u{0093E}', '\u{00940}'),
('\u{00949}', '\u{0094C}'), ('\u{0094E}', '\u{0094F}'), ('\u{00982}', '\u{00983}'),
('\u{009BE}', '\u{009C0}'), ('\u{009C7}', '\u{009C8}'), ('\u{009CB}', '\u{009CC}'),
('\u{009D7}', '\u{009D7}'), ('\u{00A03}', '\u{00A03}'), ('\u{00A3E}', '\u{00A40}'),
('\u{00A83}', '\u{00A83}'), ('\u{00ABE}', '\u{00AC0}'), ('\u{00AC9}', '\u{00AC9}'),
('\u{00ACB}', '\u{00ACC}'), ('\u{00B02}', '\u{00B03}'), ('\u{00B3E}', '\u{00B3E}'),
('\u{00B40}', '\u{00B40}'), ('\u{00B47}', '\u{00B48}'), ('\u{00B4B}', '\u{00B4C}'),
('\u{00B57}', '\u{00B57}'), ('\u{00BBE}', '\u{00BBF}'), ('\u{00BC1}', '\u{00BC2}'),
('\u{00BC6}', '\u{00BC8}'), ('\u{00BCA}', '\u{00BCC}'), ('\u{00BD7}', '\u{00BD7}'),
('\u{00C01}', '\u{00C03}'), ('\u{00C41}', '\u{00C44}'), ('\u{00C82}', '\u{00C83}'),
('\u{00CBE}', '\u{00CBE}'), ('\u{00CC0}', '\u{00CC4}'), ('\u{00CC7}', '\u{00CC8}'),
('\u{00CCA}', '\u{00CCB}'), ('\u{00CD5}', '\u{00CD6}'), ('\u{00CF3}', '\u{00CF3}'),
('\u{00D02}', '\u{00D03}'), ('\u{00D3E}', '\u{00D40}'), ('\u{00D46}', '\u{00D48}'),
('\u{00D4A}', '\u{00D4C}'), ('\u{00D57}', '\u{00D57}'), ('\u{00D82}', '\u{00D83}'),
('\u{00DCF}', '\u{00DD1}'), ('\u{00DD8}', '\u{00DDF}'), ('\u{00DF2}', '\u{00DF3}'),
('\u{00F3E}', '\u{00F3F}'), ('\u{00F7F}', '\u{00F7F}'), ('\u{0102B}', '\u{0102C}'),
('\u{01031}', '\u{01031}'), ('\u{01038}', '\u{01038}'), ('\u{0103B}', '\u{0103C}'),
('\u{01056}', '\u{01057}'), ('\u{01062}', '\u{01064}'), ('\u{01067}', '\u{0106D}'),
('\u{01083}', '\u{01084}'), ('\u{01087}', '\u{0108C}'), ('\u{0108F}', '\u{0108F}'),
('\u{0109A}', '\u{0109C}'), ('\u{01715}', '\u{01715}'), ('\u{01734}', '\u{01734}'),
('\u{017B6}', '\u{017B6}'), ('\u{017BE}', '\u{017C5}'), ('\u{017C7}', '\u{017C8}'),
('\u{01923}', '\u{01926}'), ('\u{01929}', '\u{0192B}'), ('\u{01930}', '\u{01931}'),
('\u{01933}', '\u{01938}'), ('\u{01A19}', '\u{01A1A}'), ('\u{01A55}', '\u{01A55}'),
('\u{01A57}', '\u{01A57}'), ('\u{01A61}', '\u{01A61}'), ('\u{01A63}', '\u{01A64}'),
('\u{01A6D}', '\u{01A72}'), ('\u{01B04}', '\u{01B04}'), ('\u{01B35}', '\u{01B35}'),
('\u{01B3B}', '\u{01B3B}'), ('\u{01B3D}', '\u{01B41}'), ('\u{01B43}', '\u{01B44}'),
('\u{01B82}', '\u{01B82}'), ('\u{01BA1}', '\u{01BA1}'), ('\u{01BA6}', '\u{01BA7}'),
('\u{01BAA}', '\u{01BAA}'), ('\u{01BE7}', '\u{01BE7}'), ('\u{01BEA}', '\u{01BEC}'),
('\u{01BEE}', '\u{01BEE}'), ('\u{01BF2}', '\u{01BF3}'), ('\u{01C24}', '\u{01C2B}'),
('\u{01C34}', '\u{01C35}'), ('\u{01CE1}', '\u{01CE1}'), ('\u{01CF7}', '\u{01CF7}'),
('\u{0302E}', '\u{0302F}'), ('\u{0A823}', '\u{0A824}'), ('\u{0A827}', '\u{0A827}'),
('\u{0A880}', '\u{0A881}'), ('\u{0A8B4}', '\u{0A8C3}'), ('\u{0A952}', '\u{0A953}'),
('\u{0A983}', '\u{0A983}'), ('\u{0A9B4}', '\u{0A9B5}'), ('\u{0A9BA}', '\u{0A9BB}'),
('\u{0A9BE}', '\u{0A9C0}'), ('\u{0AA2F}', '\u{0AA30}'), ('\u{0AA33}', '\u{0AA34}'),
('\u{0AA4D}', '\u{0AA4D}'), ('\u{0AA7B}', '\u{0AA7B}'), ('\u{0AA7D}', '\u{0AA7D}'),
('\u{0AAEB}', '\u{0AAEB}'), ('\u{0AAEE}', '\u{0AAEF}'), ('\u{0AAF5}', '\u{0AAF5}'),
('\u{0ABE3}', '\u{0ABE4}'), ('\u{0ABE6}', '\u{0ABE7}'), ('\u{0ABE9}', '\u{0ABEA}'),
('\u{0ABEC}', '\u{0ABEC}'), ('\u{11000}', '\u{11000}'), ('\u{11002}', '\u{11002}'),
('\u{11082}', '\u{11082}'), ('\u{110B0}', '\u{110B2}'), ('\u{110B7}', '\u{110B8}'),
('\u{1112C}', '\u{1112C}'), ('\u{11145}', '\u{11146}'), ('\u{11182}', '\u{11182}'),
('\u{111B3}', '\u{111B5}'), ('\u{111BF}', '\u{111C0}'), ('\u{111CE}', '\u{111CE}'),
('\u{1122C}', '\u{1122E}'), ('\u{11232}', '\u{11233}'), ('\u{11235}', '\u{11235}'),
('\u{112E0}', '\u{112E2}'), ('\u{11302}', '\u{11303}'), ('\u{1133E}', '\u{1133F}'),
('\u{11341}', '\u{11344}'), ('\u{11347}', '\u{11348}'), ('\u{1134B}', '\u{1134D}'),
('\u{11357}', '\u{11357}'), ('\u{11362}', '\u{11363}'), ('\u{113B8}', '\u{113BA}'),
('\u{113C2}', '\u{113C2}'), ('\u{113C5}', '\u{113C5}'), ('\u{113C7}', '\u{113CA}'),
('\u{113CC}', '\u{113CD}'), ('\u{113CF}', '\u{113CF}'), ('\u{11435}', '\u{11437}'),
('\u{11440}', '\u{11441}'), ('\u{11445}', '\u{11445}'), ('\u{114B0}', '\u{114B2}'),
('\u{114B9}', '\u{114B9}'), ('\u{114BB}', '\u{114BE}'), ('\u{114C1}', '\u{114C1}'),
('\u{115AF}', '\u{115B1}'), ('\u{115B8}', '\u{115BB}'), ('\u{115BE}', '\u{115BE}'),
('\u{11630}', '\u{11632}'), ('\u{1163B}', '\u{1163C}'), ('\u{1163E}', '\u{1163E}'),
('\u{116AC}', '\u{116AC}'), ('\u{116AE}', '\u{116AF}'), ('\u{116B6}', '\u{116B6}'),
('\u{1171E}', '\u{1171E}'), ('\u{11720}', '\u{11721}'), ('\u{11726}', '\u{11726}'),
('\u{1182C}', '\u{1182E}'), ('\u{11838}', '\u{11838}'), ('\u{11930}', '\u{11935}'),
('\u{11937}', '\u{11938}'), ('\u{1193D}', '\u{1193D}'), ('\u{11940}', '\u{11940}'),
('\u{11942}', '\u{11942}'), ('\u{119D1}', '\u{119D3}'), ('\u{119DC}', '\u{119DF}'),
('\u{119E4}', '\u{119E4}'), ('\u{11A39}', '\u{11A39}'), ('\u{11A57}', '\u{11A58}'),
('\u{11A97}', '\u{11A97}'), ('\u{11B61}', '\u{11B61}'), ('\u{11B65}', '\u{11B65}'),
('\u{11B67}', '\u{11B67}'), ('\u{11C2F}', '\u{11C2F}'), ('\u{11C3E}', '\u{11C3E}'),
('\u{11CA9}', '\u{11CA9}'), ('\u{11CB1}', '\u{11CB1}'), ('\u{11CB4}', '\u{11CB4}'),
('\u{11D8A}', '\u{11D8E}'), ('\u{11D93}', '\u{11D94}'), ('\u{11D96}', '\u{11D96}'),
('\u{11EF5}', '\u{11EF6}'), ('\u{11F03}', '\u{11F03}'), ('\u{11F34}', '\u{11F35}'),
('\u{11F3E}', '\u{11F3F}'), ('\u{11F41}', '\u{11F41}'), ('\u{1612A}', '\u{1612C}'),
('\u{16F51}', '\u{16F87}'), ('\u{16FF0}', '\u{16FF1}'), ('\u{1D165}', '\u{1D166}'),
('\u{1D16D}', '\u{1D172}'), ('\u{1D250}', '\u{1D252}'), ('\u{1D25F}', '\u{1D25F}'),
('\u{1D280}', '\u{1D281}'),
];
if c < '\u{00903}' {
return false;
}
in_range(c, TABLE)
}