unicode_script/script.rs
1include!(concat!(env!("OUT_DIR"), "/script.rs")); // generated by build.rs
2
3const MASK: usize = BLOCK_SIZE - 1;
4const SHIFT: usize = MASK.count_ones() as usize;
5
6/// Look up the script for a character.
7///
8/// ### Example
9///
10/// ```
11/// use unicode_script::{get_script, Script};
12///
13/// assert_eq!(get_script('A'), Script::Latin);
14/// assert_eq!(get_script('カ'), Script::Katakana);
15/// ```
16pub fn get_script(chr: char) -> Script {
17 let u = chr as u32;
18
19 if u <= LAST_CODEPOINT {
20 return SCRIPT_BLOCKS
21 [SCRIPT_BLOCK_OFFSETS[u as usize >> SHIFT] as usize + (u as usize & MASK)];
22 } else {
23 return Unknown; // Zzzz
24 }
25}