unicode_joining_type/
joining_group.rs

1include!(concat!(env!("OUT_DIR"), "/joining_group.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 joining group for a character.
7///
8/// ### Example
9///
10/// ```
11/// use unicode_joining_type::{get_joining_group, JoiningGroup};
12///
13/// assert_eq!(get_joining_group('ھ'), JoiningGroup::KnottedHeh);
14/// ```
15pub fn get_joining_group(chr: char) -> JoiningGroup {
16    let u = chr as u32;
17
18    if u <= LAST_CODEPOINT {
19        JOINING_GROUP_BLOCKS
20            [JOINING_GROUP_BLOCK_OFFSETS[u as usize >> SHIFT] as usize + (u as usize & MASK)]
21    } else {
22        NoJoiningGroup
23    }
24}