const MERMAID_UNICODE_TEXT_RANGES: &[(u32, u32)] = &[
(0xAA, 0xAA),
(0xB5, 0xB5),
(0xBA, 0xBA),
(0xC0, 0xD6),
(0xD8, 0xF6),
(0xF8, 0x2C1),
(0x2C6, 0x2D1),
(0x2E0, 0x2E4),
(0x2EC, 0x2EC),
(0x2EE, 0x2EE),
(0x370, 0x374),
(0x376, 0x377),
(0x37A, 0x37D),
(0x386, 0x386),
(0x388, 0x38A),
(0x38C, 0x38C),
(0x38E, 0x3A1),
(0x3A3, 0x3F5),
(0x3F7, 0x481),
(0x48A, 0x527),
(0x531, 0x556),
(0x559, 0x559),
(0x561, 0x587),
(0x5D0, 0x5EA),
(0x5F0, 0x5F2),
(0x620, 0x64A),
(0x66E, 0x66F),
(0x671, 0x6D3),
(0x6D5, 0x6D5),
(0x6E5, 0x6E6),
(0x6EE, 0x6EF),
(0x6FA, 0x6FC),
(0x6FF, 0x6FF),
(0x710, 0x710),
(0x712, 0x72F),
(0x74D, 0x7A5),
(0x7B1, 0x7B1),
(0x7CA, 0x7EA),
(0x7F4, 0x7F5),
(0x7FA, 0x7FA),
(0x800, 0x815),
(0x81A, 0x81A),
(0x824, 0x824),
(0x828, 0x828),
(0x840, 0x858),
(0x8A0, 0x8A0),
(0x8A2, 0x8AC),
(0x904, 0x939),
(0x93D, 0x93D),
(0x950, 0x950),
(0x958, 0x961),
(0x971, 0x977),
(0x979, 0x97F),
(0x985, 0x98C),
(0x98F, 0x990),
(0x993, 0x9A8),
(0x9AA, 0x9B0),
(0x9B2, 0x9B2),
(0x9B6, 0x9B9),
(0x9BD, 0x9BD),
(0x9CE, 0x9CE),
(0x9DC, 0x9DD),
(0x9DF, 0x9E1),
(0x9F0, 0x9F1),
(0xA05, 0xA0A),
(0xA0F, 0xA10),
(0xA13, 0xA28),
(0xA2A, 0xA30),
(0xA32, 0xA33),
(0xA35, 0xA36),
(0xA38, 0xA39),
(0xA59, 0xA5C),
(0xA5E, 0xA5E),
(0xA72, 0xA74),
(0xA85, 0xA8D),
(0xA8F, 0xA91),
(0xA93, 0xAA8),
(0xAAA, 0xAB0),
(0xAB2, 0xAB3),
(0xAB5, 0xAB9),
(0xABD, 0xABD),
(0xAD0, 0xAD0),
(0xAE0, 0xAE1),
(0xB05, 0xB0C),
(0xB0F, 0xB10),
(0xB13, 0xB28),
(0xB2A, 0xB30),
(0xB32, 0xB33),
(0xB35, 0xB39),
(0xB3D, 0xB3D),
(0xB5C, 0xB5D),
(0xB5F, 0xB61),
(0xB71, 0xB71),
(0xB83, 0xB83),
(0xB85, 0xB8A),
(0xB8E, 0xB90),
(0xB92, 0xB95),
(0xB99, 0xB9A),
(0xB9C, 0xB9C),
(0xB9E, 0xB9F),
(0xBA3, 0xBA4),
(0xBA8, 0xBAA),
(0xBAE, 0xBB9),
(0xBD0, 0xBD0),
(0xC05, 0xC0C),
(0xC0E, 0xC10),
(0xC12, 0xC28),
(0xC2A, 0xC33),
(0xC35, 0xC39),
(0xC3D, 0xC3D),
(0xC58, 0xC59),
(0xC60, 0xC61),
(0xC85, 0xC8C),
(0xC8E, 0xC90),
(0xC92, 0xCA8),
(0xCAA, 0xCB3),
(0xCB5, 0xCB9),
(0xCBD, 0xCBD),
(0xCDE, 0xCDE),
(0xCE0, 0xCE1),
(0xCF1, 0xCF2),
(0xD05, 0xD0C),
(0xD0E, 0xD10),
(0xD12, 0xD3A),
(0xD3D, 0xD3D),
(0xD4E, 0xD4E),
(0xD60, 0xD61),
(0xD7A, 0xD7F),
(0xD85, 0xD96),
(0xD9A, 0xDB1),
(0xDB3, 0xDBB),
(0xDBD, 0xDBD),
(0xDC0, 0xDC6),
(0xE01, 0xE30),
(0xE32, 0xE33),
(0xE40, 0xE46),
(0xE81, 0xE82),
(0xE84, 0xE84),
(0xE87, 0xE88),
(0xE8A, 0xE8A),
(0xE8D, 0xE8D),
(0xE94, 0xE97),
(0xE99, 0xE9F),
(0xEA1, 0xEA3),
(0xEA5, 0xEA5),
(0xEA7, 0xEA7),
(0xEAA, 0xEAB),
(0xEAD, 0xEB0),
(0xEB2, 0xEB3),
(0xEBD, 0xEBD),
(0xEC0, 0xEC4),
(0xEC6, 0xEC6),
(0xEDC, 0xEDF),
(0xF00, 0xF00),
(0xF40, 0xF47),
(0xF49, 0xF6C),
(0xF88, 0xF8C),
(0x1000, 0x102A),
(0x103F, 0x103F),
(0x1050, 0x1055),
(0x105A, 0x105D),
(0x1061, 0x1061),
(0x1065, 0x1066),
(0x106E, 0x1070),
(0x1075, 0x1081),
(0x108E, 0x108E),
(0x10A0, 0x10C5),
(0x10C7, 0x10C7),
(0x10CD, 0x10CD),
(0x10D0, 0x10FA),
(0x10FC, 0x1248),
(0x124A, 0x124D),
(0x1250, 0x1256),
(0x1258, 0x1258),
(0x125A, 0x125D),
(0x1260, 0x1288),
(0x128A, 0x128D),
(0x1290, 0x12B0),
(0x12B2, 0x12B5),
(0x12B8, 0x12BE),
(0x12C0, 0x12C0),
(0x12C2, 0x12C5),
(0x12C8, 0x12D6),
(0x12D8, 0x1310),
(0x1312, 0x1315),
(0x1318, 0x135A),
(0x1380, 0x138F),
(0x13A0, 0x13F4),
(0x1401, 0x166C),
(0x166F, 0x167F),
(0x1681, 0x169A),
(0x16A0, 0x16EA),
(0x1700, 0x170C),
(0x170E, 0x1711),
(0x1720, 0x1731),
(0x1740, 0x1751),
(0x1760, 0x176C),
(0x176E, 0x1770),
(0x1780, 0x17B3),
(0x17D7, 0x17D7),
(0x17DC, 0x17DC),
(0x1820, 0x1877),
(0x1880, 0x18A8),
(0x18AA, 0x18AA),
(0x18B0, 0x18F5),
(0x1900, 0x191C),
(0x1950, 0x196D),
(0x1970, 0x1974),
(0x1980, 0x19AB),
(0x19C1, 0x19C7),
(0x1A00, 0x1A16),
(0x1A20, 0x1A54),
(0x1AA7, 0x1AA7),
(0x1B05, 0x1B33),
(0x1B45, 0x1B4B),
(0x1B83, 0x1BA0),
(0x1BAE, 0x1BAF),
(0x1BBA, 0x1BE5),
(0x1C00, 0x1C23),
(0x1C4D, 0x1C4F),
(0x1C5A, 0x1C7D),
(0x1CE9, 0x1CEC),
(0x1CEE, 0x1CF1),
(0x1CF5, 0x1CF6),
(0x1D00, 0x1DBF),
(0x1E00, 0x1F15),
(0x1F18, 0x1F1D),
(0x1F20, 0x1F45),
(0x1F48, 0x1F4D),
(0x1F50, 0x1F57),
(0x1F59, 0x1F59),
(0x1F5B, 0x1F5B),
(0x1F5D, 0x1F5D),
(0x1F5F, 0x1F7D),
(0x1F80, 0x1FB4),
(0x1FB6, 0x1FBC),
(0x1FBE, 0x1FBE),
(0x1FC2, 0x1FC4),
(0x1FC6, 0x1FCC),
(0x1FD0, 0x1FD3),
(0x1FD6, 0x1FDB),
(0x1FE0, 0x1FEC),
(0x1FF2, 0x1FF4),
(0x1FF6, 0x1FFC),
(0x2071, 0x2071),
(0x207F, 0x207F),
(0x2090, 0x209C),
(0x2102, 0x2102),
(0x2107, 0x2107),
(0x210A, 0x2113),
(0x2115, 0x2115),
(0x2119, 0x211D),
(0x2124, 0x2124),
(0x2126, 0x2126),
(0x2128, 0x2128),
(0x212A, 0x212D),
(0x212F, 0x2139),
(0x213C, 0x213F),
(0x2145, 0x2149),
(0x214E, 0x214E),
(0x2183, 0x2184),
(0x2C00, 0x2C2E),
(0x2C30, 0x2C5E),
(0x2C60, 0x2CE4),
(0x2CEB, 0x2CEE),
(0x2CF2, 0x2CF3),
(0x2D00, 0x2D25),
(0x2D27, 0x2D27),
(0x2D2D, 0x2D2D),
(0x2D30, 0x2D67),
(0x2D6F, 0x2D6F),
(0x2D80, 0x2D96),
(0x2DA0, 0x2DA6),
(0x2DA8, 0x2DAE),
(0x2DB0, 0x2DB6),
(0x2DB8, 0x2DBE),
(0x2DC0, 0x2DC6),
(0x2DC8, 0x2DCE),
(0x2DD0, 0x2DD6),
(0x2DD8, 0x2DDE),
(0x2E2F, 0x2E2F),
(0x3005, 0x3006),
(0x3031, 0x3035),
(0x303B, 0x303C),
(0x3041, 0x3096),
(0x309D, 0x309F),
(0x30A1, 0x30FA),
(0x30FC, 0x30FF),
(0x3105, 0x312D),
(0x3131, 0x318E),
(0x31A0, 0x31BA),
(0x31F0, 0x31FF),
(0x3400, 0x4DB5),
(0x4E00, 0x9FCC),
(0xA000, 0xA48C),
(0xA4D0, 0xA4FD),
(0xA500, 0xA60C),
(0xA610, 0xA61F),
(0xA62A, 0xA62B),
(0xA640, 0xA66E),
(0xA67F, 0xA697),
(0xA6A0, 0xA6E5),
(0xA717, 0xA71F),
(0xA722, 0xA788),
(0xA78B, 0xA78E),
(0xA790, 0xA793),
(0xA7A0, 0xA7AA),
(0xA7F8, 0xA801),
(0xA803, 0xA805),
(0xA807, 0xA80A),
(0xA80C, 0xA822),
(0xA840, 0xA873),
(0xA882, 0xA8B3),
(0xA8F2, 0xA8F7),
(0xA8FB, 0xA8FB),
(0xA90A, 0xA925),
(0xA930, 0xA946),
(0xA960, 0xA97C),
(0xA984, 0xA9B2),
(0xA9CF, 0xA9CF),
(0xAA00, 0xAA28),
(0xAA40, 0xAA42),
(0xAA44, 0xAA4B),
(0xAA60, 0xAA76),
(0xAA7A, 0xAA7A),
(0xAA80, 0xAAAF),
(0xAAB1, 0xAAB1),
(0xAAB5, 0xAAB6),
(0xAAB9, 0xAABD),
(0xAAC0, 0xAAC0),
(0xAAC2, 0xAAC2),
(0xAADB, 0xAADD),
(0xAAE0, 0xAAEA),
(0xAAF2, 0xAAF4),
(0xAB01, 0xAB06),
(0xAB09, 0xAB0E),
(0xAB11, 0xAB16),
(0xAB20, 0xAB26),
(0xAB28, 0xAB2E),
(0xABC0, 0xABE2),
(0xAC00, 0xD7A3),
(0xD7B0, 0xD7C6),
(0xD7CB, 0xD7FB),
(0xF900, 0xFA6D),
(0xFA70, 0xFAD9),
(0xFB00, 0xFB06),
(0xFB13, 0xFB17),
(0xFB1D, 0xFB1D),
(0xFB1F, 0xFB28),
(0xFB2A, 0xFB36),
(0xFB38, 0xFB3C),
(0xFB3E, 0xFB3E),
(0xFB40, 0xFB41),
(0xFB43, 0xFB44),
(0xFB46, 0xFBB1),
(0xFBD3, 0xFD3D),
(0xFD50, 0xFD8F),
(0xFD92, 0xFDC7),
(0xFDF0, 0xFDFB),
(0xFE70, 0xFE74),
(0xFE76, 0xFEFC),
(0xFF21, 0xFF3A),
(0xFF41, 0xFF5A),
(0xFF66, 0xFFBE),
(0xFFC2, 0xFFC7),
(0xFFCA, 0xFFCF),
(0xFFD2, 0xFFD7),
(0xFFDA, 0xFFDC),
];
pub(crate) fn is_mermaid_unicode_text(ch: char) -> bool {
let code = ch as u32;
MERMAID_UNICODE_TEXT_RANGES
.binary_search_by(|&(start, end)| {
if code < start {
std::cmp::Ordering::Greater
} else if code > end {
std::cmp::Ordering::Less
} else {
std::cmp::Ordering::Equal
}
})
.is_ok()
}