#![allow(unused_parens)]
#![allow(clippy::unnecessary_cast, clippy::unreadable_literal, clippy::double_parens)]
use crate::unicode::Codepoint;
use super::ot_shaper_arabic::hb_arabic_joining_type_t::{self, D, GroupAlaph, GroupDalathRish, L, R, T, U, X};
#[allow(dead_code, non_upper_case_globals, clippy::allow_attributes_without_reason, missing_docs)]
pub(crate) static _hb_arabic_joining_u8: [u8; 737]=
[
0, 16, 2, 0, 0, 0, 3, 0, 4, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 96,135, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0,
0, 0, 0, 8, 16, 24, 32, 40, 48, 0, 56, 0, 64, 72, 80, 0,
0, 0, 0, 88, 96,104, 0, 0, 0, 0, 0,112,120, 0, 0, 0,
0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 0,
0,144, 0, 0, 0, 0, 0,152, 0, 0, 0, 0, 0, 0,160,168,
176,184,192, 0, 0,200,208, 0, 0, 0, 0, 0, 0, 0, 0,216,
224, 0, 0, 0, 0, 0, 0, 0, 0, 8, 9, 0, 0, 10, 11, 12,
1, 1, 13, 0, 0, 0, 14, 15, 1, 1, 2, 2, 4, 1, 1, 1,
1, 16, 17, 18, 3, 0, 19, 0, 20, 0, 21, 22, 23, 1, 24, 0,
0, 0, 25, 1, 26, 1, 27, 28, 4, 0, 29, 1, 1, 1, 30, 0,
31, 32, 5, 33, 34, 35, 36, 2, 2, 37, 38, 6, 0, 1, 39, 40,
5, 1, 7, 0, 0, 41, 0, 0, 0, 42, 43, 0, 0, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 7, 44, 1, 1, 1, 1, 45, 0,
0, 0, 46, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 48, 6, 0,
0, 1, 1, 1, 1, 1, 1, 49, 0, 50, 51, 52, 53, 54, 55, 0,
0, 56, 57, 58, 0, 0, 59, 0, 0, 60, 1, 1, 1, 61, 0, 0,
0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63,
1, 64, 0, 65, 0, 0, 0, 66, 1, 67, 0, 0, 0, 0, 0, 68,
69, 70, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3, 0, 3, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 72, 73, 0, 0, 0, 0, 0, 0,119,119,119,119, 51, 51, 51,
51, 34, 34, 34, 34,119,119, 7,119, 34, 51, 51, 51, 35, 51, 51,
51, 0,119,119,119,115,119,119,119, 0, 0, 0,119,112, 7,119,
119, 3, 34, 34, 35, 35, 51, 51, 35, 34, 50, 51, 51, 50,115,119,
119,119,119,119, 51, 39, 34, 32, 34, 50, 35, 34, 34, 34, 34, 35,
35, 51, 34, 39,119,119,119,119, 34,119, 51,115, 55,119,119,119,
103,116, 51, 83, 37, 34, 51, 51, 50, 50, 53, 50, 83,119,119, 39,
51, 35, 34, 51, 51, 51, 35, 50, 51, 35, 35, 50, 51,119, 51, 51,
51, 51,115,119,119,119,115,119,119, 50, 51, 51, 34, 51, 51, 50,
34,114,119,119,119, 3, 51, 51, 32, 35,114,119,119, 34, 50, 51,
3, 48, 51, 51, 50, 51, 34, 2, 50, 35, 50, 51, 51,119,112,119,
119,119,119,119, 48,119,115,119,112, 0, 0, 96, 54,115,115,119,
119,119,119, 48,119,119,119,119, 7,119,119,119, 0, 51, 1,119,
119, 51, 51, 35, 32, 32, 2, 16, 34, 34, 50, 51, 19, 51, 51, 35,
51, 35, 0,114,119,119, 55, 51, 35, 35, 35, 34, 51, 35, 51, 50,
34, 35,119,119,119, 39, 34, 50, 3, 49, 51, 51, 51, 51, 50,119,
119,119, 50,115, 51, 51, 35, 51, 51, 51, 51, 3,119, 55, 51,114,
119, 51, 51, 34, 51, 51,119,119,119, 3, 51, 34, 2, 35, 50, 35,
51, 48, 34, 3, 0, 32, 19,119,119, 51, 51,119,119,119,103,119,
119,
];
#[allow(dead_code, unused_parens, trivial_numeric_casts, clippy::allow_attributes_without_reason, clippy::unseparated_literal_suffix, clippy::double_parens, clippy::unnecessary_cast)]
#[inline(always)]
fn _hb_arabic_joining_b4 (a: &[u8], i: usize) -> u8
{
(a[i>>1]>>((i&1)<<2))&15
}
#[allow(dead_code, unused_parens, trivial_numeric_casts, clippy::allow_attributes_without_reason, clippy::unseparated_literal_suffix, clippy::double_parens, clippy::unnecessary_cast, missing_docs)]
#[inline]
pub(crate) fn _hb_arabic_joining_joining_type_u8 (u: usize) -> u8
{
if u<125260usize { (_hb_arabic_joining_b4(&_hb_arabic_joining_u8[441usize..],(((_hb_arabic_joining_u8[209usize+(((_hb_arabic_joining_u8[123usize+((((_hb_arabic_joining_b4(&_hb_arabic_joining_u8,(((((((u)>>3))>>3))>>3) as usize) as usize)) as usize)<<3) as usize+((((((u)>>3))>>3))&7) as usize) as usize]) as usize) as usize+((((u)>>3))&7) as usize) as usize]) as usize)<<3) as usize+((u)&7) as usize)) as u8 } else { 7 }
}
#[inline]
pub(crate) fn joining_type (u: Codepoint) -> hb_arabic_joining_type_t
{
match _hb_arabic_joining_joining_type_u8 (u as usize) {
0 => U,
1 => L,
2 => R,
3 => D,
4 => GroupAlaph,
5 => GroupDalathRish,
6 => T,
7 => X,
_ => unreachable! (),
}
}
pub(crate) const SHAPING_TABLE: &[(u16, [u16; 4])] = &[
(0x0621, [0x0000, 0x0000, 0x0000, 0xFE80]),
(0x0622, [0x0000, 0x0000, 0xFE82, 0xFE81]),
(0x0623, [0x0000, 0x0000, 0xFE84, 0xFE83]),
(0x0624, [0x0000, 0x0000, 0xFE86, 0xFE85]),
(0x0625, [0x0000, 0x0000, 0xFE88, 0xFE87]),
(0x0626, [0xFE8B, 0xFE8C, 0xFE8A, 0xFE89]),
(0x0627, [0x0000, 0x0000, 0xFE8E, 0xFE8D]),
(0x0628, [0xFE91, 0xFE92, 0xFE90, 0xFE8F]),
(0x0629, [0x0000, 0x0000, 0xFE94, 0xFE93]),
(0x062A, [0xFE97, 0xFE98, 0xFE96, 0xFE95]),
(0x062B, [0xFE9B, 0xFE9C, 0xFE9A, 0xFE99]),
(0x062C, [0xFE9F, 0xFEA0, 0xFE9E, 0xFE9D]),
(0x062D, [0xFEA3, 0xFEA4, 0xFEA2, 0xFEA1]),
(0x062E, [0xFEA7, 0xFEA8, 0xFEA6, 0xFEA5]),
(0x062F, [0x0000, 0x0000, 0xFEAA, 0xFEA9]),
(0x0630, [0x0000, 0x0000, 0xFEAC, 0xFEAB]),
(0x0631, [0x0000, 0x0000, 0xFEAE, 0xFEAD]),
(0x0632, [0x0000, 0x0000, 0xFEB0, 0xFEAF]),
(0x0633, [0xFEB3, 0xFEB4, 0xFEB2, 0xFEB1]),
(0x0634, [0xFEB7, 0xFEB8, 0xFEB6, 0xFEB5]),
(0x0635, [0xFEBB, 0xFEBC, 0xFEBA, 0xFEB9]),
(0x0636, [0xFEBF, 0xFEC0, 0xFEBE, 0xFEBD]),
(0x0637, [0xFEC3, 0xFEC4, 0xFEC2, 0xFEC1]),
(0x0638, [0xFEC7, 0xFEC8, 0xFEC6, 0xFEC5]),
(0x0639, [0xFECB, 0xFECC, 0xFECA, 0xFEC9]),
(0x063A, [0xFECF, 0xFED0, 0xFECE, 0xFECD]),
(0x0641, [0xFED3, 0xFED4, 0xFED2, 0xFED1]),
(0x0642, [0xFED7, 0xFED8, 0xFED6, 0xFED5]),
(0x0643, [0xFEDB, 0xFEDC, 0xFEDA, 0xFED9]),
(0x0644, [0xFEDF, 0xFEE0, 0xFEDE, 0xFEDD]),
(0x0645, [0xFEE3, 0xFEE4, 0xFEE2, 0xFEE1]),
(0x0646, [0xFEE7, 0xFEE8, 0xFEE6, 0xFEE5]),
(0x0647, [0xFEEB, 0xFEEC, 0xFEEA, 0xFEE9]),
(0x0648, [0x0000, 0x0000, 0xFEEE, 0xFEED]),
(0x0649, [0xFBE8, 0xFBE9, 0xFEF0, 0xFEEF]),
(0x064A, [0xFEF3, 0xFEF4, 0xFEF2, 0xFEF1]),
(0x0671, [0x0000, 0x0000, 0xFB51, 0xFB50]),
(0x0677, [0x0000, 0x0000, 0x0000, 0xFBDD]),
(0x0679, [0xFB68, 0xFB69, 0xFB67, 0xFB66]),
(0x067A, [0xFB60, 0xFB61, 0xFB5F, 0xFB5E]),
(0x067B, [0xFB54, 0xFB55, 0xFB53, 0xFB52]),
(0x067E, [0xFB58, 0xFB59, 0xFB57, 0xFB56]),
(0x067F, [0xFB64, 0xFB65, 0xFB63, 0xFB62]),
(0x0680, [0xFB5C, 0xFB5D, 0xFB5B, 0xFB5A]),
(0x0683, [0xFB78, 0xFB79, 0xFB77, 0xFB76]),
(0x0684, [0xFB74, 0xFB75, 0xFB73, 0xFB72]),
(0x0686, [0xFB7C, 0xFB7D, 0xFB7B, 0xFB7A]),
(0x0687, [0xFB80, 0xFB81, 0xFB7F, 0xFB7E]),
(0x0688, [0x0000, 0x0000, 0xFB89, 0xFB88]),
(0x068C, [0x0000, 0x0000, 0xFB85, 0xFB84]),
(0x068D, [0x0000, 0x0000, 0xFB83, 0xFB82]),
(0x068E, [0x0000, 0x0000, 0xFB87, 0xFB86]),
(0x0691, [0x0000, 0x0000, 0xFB8D, 0xFB8C]),
(0x0698, [0x0000, 0x0000, 0xFB8B, 0xFB8A]),
(0x06A4, [0xFB6C, 0xFB6D, 0xFB6B, 0xFB6A]),
(0x06A6, [0xFB70, 0xFB71, 0xFB6F, 0xFB6E]),
(0x06A9, [0xFB90, 0xFB91, 0xFB8F, 0xFB8E]),
(0x06AD, [0xFBD5, 0xFBD6, 0xFBD4, 0xFBD3]),
(0x06AF, [0xFB94, 0xFB95, 0xFB93, 0xFB92]),
(0x06B1, [0xFB9C, 0xFB9D, 0xFB9B, 0xFB9A]),
(0x06B3, [0xFB98, 0xFB99, 0xFB97, 0xFB96]),
(0x06BA, [0x0000, 0x0000, 0xFB9F, 0xFB9E]),
(0x06BB, [0xFBA2, 0xFBA3, 0xFBA1, 0xFBA0]),
(0x06BE, [0xFBAC, 0xFBAD, 0xFBAB, 0xFBAA]),
(0x06C0, [0x0000, 0x0000, 0xFBA5, 0xFBA4]),
(0x06C1, [0xFBA8, 0xFBA9, 0xFBA7, 0xFBA6]),
(0x06C5, [0x0000, 0x0000, 0xFBE1, 0xFBE0]),
(0x06C6, [0x0000, 0x0000, 0xFBDA, 0xFBD9]),
(0x06C7, [0x0000, 0x0000, 0xFBD8, 0xFBD7]),
(0x06C8, [0x0000, 0x0000, 0xFBDC, 0xFBDB]),
(0x06C9, [0x0000, 0x0000, 0xFBE3, 0xFBE2]),
(0x06CB, [0x0000, 0x0000, 0xFBDF, 0xFBDE]),
(0x06CC, [0xFBFE, 0xFBFF, 0xFBFD, 0xFBFC]),
(0x06D0, [0xFBE6, 0xFBE7, 0xFBE5, 0xFBE4]),
(0x06D2, [0x0000, 0x0000, 0xFBAF, 0xFBAE]),
(0x06D3, [0x0000, 0x0000, 0xFBB1, 0xFBB0]),
];
pub(crate) const LIGATURE_3_TABLE: &[([u16; 3], u16)] = &[
([0xFEDF, 0xFEE4, 0xFEA4], 0xFD88),
([0xFEDF, 0xFEE0, 0xFEEA], 0xF201),
([0xFEDF, 0xFEE4, 0xFEA0], 0xF211),
];
pub(crate) const LIGATURE_TABLE: &[([u16; 2], u16)] = &[
([0xFE91, 0xFEE2], 0xFC08),
([0xFE91, 0xFEE4], 0xFC9F),
([0xFE91, 0xFEA0], 0xFC9C),
([0xFE91, 0xFEA4], 0xFC9D),
([0xFE91, 0xFEA8], 0xFC9E),
([0xFE92, 0xFEAE], 0xFC6A),
([0xFE92, 0xFEE6], 0xFC6D),
([0xFE92, 0xFEF2], 0xFC6F),
([0xFE97, 0xFEE2], 0xFC0E),
([0xFE97, 0xFEE4], 0xFCA4),
([0xFE97, 0xFEA0], 0xFCA1),
([0xFE97, 0xFEA4], 0xFCA2),
([0xFE97, 0xFEA8], 0xFCA3),
([0xFE98, 0xFEAE], 0xFC70),
([0xFE98, 0xFEE6], 0xFC73),
([0xFE98, 0xFEF2], 0xFC75),
([0xFE9B, 0xFEE2], 0xFC12),
([0xFE9F, 0xFEE4], 0xFCA8),
([0xFEA3, 0xFEE4], 0xFCAA),
([0xFEA7, 0xFEE4], 0xFCAC),
([0xFEB3, 0xFEE4], 0xFCB0),
([0xFEB7, 0xFEE4], 0xFD30),
([0xFED3, 0xFEF2], 0xFC32),
([0xFEDF, 0xFE9E], 0xFC3F),
([0xFEDF, 0xFEA0], 0xFCC9),
([0xFEDF, 0xFEA2], 0xFC40),
([0xFEDF, 0xFEA4], 0xFCCA),
([0xFEDF, 0xFEA6], 0xFC41),
([0xFEDF, 0xFEA8], 0xFCCB),
([0xFEDF, 0xFEE2], 0xFC42),
([0xFEDF, 0xFEE4], 0xFCCC),
([0xFEDF, 0xFEF0], 0xFC43),
([0xFEDF, 0xFEF2], 0xFC44),
([0xFEDF, 0xFEEC], 0xFCCD),
([0xFEDF, 0xFE82], 0xFEF5),
([0xFEDF, 0xFE84], 0xFEF7),
([0xFEDF, 0xFE88], 0xFEF9),
([0xFEDF, 0xFE8E], 0xFEFB),
([0xFEE0, 0xFEF0], 0xFC86),
([0xFEE0, 0xFE82], 0xFEF6),
([0xFEE0, 0xFE84], 0xFEF8),
([0xFEE0, 0xFE88], 0xFEFA),
([0xFEE0, 0xFE8E], 0xFEFC),
([0xFEE3, 0xFEA0], 0xFCCE),
([0xFEE3, 0xFEA4], 0xFCCF),
([0xFEE3, 0xFEA8], 0xFCD0),
([0xFEE3, 0xFEE4], 0xFCD1),
([0xFEE7, 0xFEE2], 0xFC4E),
([0xFEE7, 0xFEE4], 0xFCD5),
([0xFEE7, 0xFEA0], 0xFCD2),
([0xFEE7, 0xFEA4], 0xFCD3),
([0xFEE8, 0xFEF2], 0xFC8F),
([0xFEF3, 0xFEA0], 0xFCDA),
([0xFEF3, 0xFEA4], 0xFCDB),
([0xFEF3, 0xFEA8], 0xFCDC),
([0xFEF3, 0xFEE4], 0xFCDD),
([0xFEF4, 0xFEAE], 0xFC91),
([0xFEF4, 0xFEE6], 0xFC94),
];
pub(crate) const LIGATURE_MARK_TABLE: &[([u16; 2], u16)] = &[
([0x0651, 0x064C], 0xFC5E),
([0x0651, 0x064E], 0xFC60),
([0x0651, 0x064F], 0xFC61),
([0x0651, 0x0650], 0xFC62),
([0x0651, 0x064B], 0xF2EE),
];