1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
include!(concat!(env!("OUT_DIR"), "/joining_type.rs")); // generated by build.rs const MASK: usize = BLOCK_SIZE - 1; const SHIFT: usize = MASK.count_ones() as usize; /// Look up the joining type for a character. /// /// ### Example /// /// ``` /// use unicode_joining_type::{get_joining_type, JoiningType}; /// /// assert_eq!(get_joining_type('ھ'), JoiningType::DualJoining); /// ``` pub fn get_joining_type(chr: char) -> JoiningType { let u = chr as u32; if u <= LAST_CODEPOINT { JOINING_TYPE_BLOCKS [JOINING_TYPE_BLOCK_OFFSETS[u as usize >> SHIFT] as usize + (u as usize & MASK)] } else { NonJoining } }