use crate::tables::*;
use core::cmp::Ordering;
#[path = "gen/props.rs"]
mod gen;
pub use gen::*;
pub(crate) fn is_transparent_zero_width(c: char) -> bool {
if crate::lookup::lookup_width(c).0 != 0 {
false
} else {
let cp: u32 = c.into();
NON_TRANSPARENT_ZERO_WIDTHS
.binary_search_by(|&(lo, hi)| {
let lo = u32::from_le_bytes([lo[0], lo[1], lo[2], 0]);
let hi = u32::from_le_bytes([hi[0], hi[1], hi[2], 0]);
if cp < lo {
Ordering::Greater
} else if cp > hi {
Ordering::Less
} else {
Ordering::Equal
}
})
.is_err()
}
}
#[cfg(feature = "cjk")]
pub fn is_solidus_transparent(c: char) -> bool {
let cp: u32 = c.into();
is_ligature_transparent(c)
|| SOLIDUS_TRANSPARENT
.binary_search_by(|&(lo, hi)| {
let lo = u32::from_le_bytes([lo[0], lo[1], lo[2], 0]);
let hi = u32::from_le_bytes([hi[0], hi[1], hi[2], 0]);
if cp < lo {
Ordering::Greater
} else if cp > hi {
Ordering::Less
} else {
Ordering::Equal
}
})
.is_ok()
}