| 1 | // WARNING: this file was generated by scripts/gen-arabic-table.py |
| 2 | |
| 3 | use super::ot_shaper_arabic::hb_arabic_joining_type_t::{ |
| 4 | self, GroupAlaph as A, GroupDalathRish as DR, D, L, R, T, U, X, |
| 5 | }; |
| 6 | |
| 7 | #[rustfmt::skip] |
| 8 | pub const JOINING_TABLE: &[hb_arabic_joining_type_t] = &[ |
| 9 | |
| 10 | /* Arabic */ |
| 11 | |
| 12 | /* 0600 */ U,U,U,U,U,U,X,X,U,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 13 | /* 0620 */ D,U,R,R,R,R,D,R,D,R,D,D,D,D,D,R,R,R,R,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 14 | /* 0640 */ D,D,D,D,D,D,D,D,R,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 15 | /* 0660 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,D,D,X,R,R,R,U,R,R,R,D,D,D,D,D,D,D,D, |
| 16 | /* 0680 */ D,D,D,D,D,D,D,D,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,D,D,D,D,D,D, |
| 17 | /* 06A0 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 18 | /* 06C0 */ R,D,D,R,R,R,R,R,R,R,R,R,D,R,D,R,D,D,R,R,X,R,X,X,X,X,X,X,X,U,X,X, |
| 19 | /* 06E0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,R,R,X,X,X,X,X,X,X,X,X,X,D,D,D,X,X,D, |
| 20 | |
| 21 | /* Syriac */ |
| 22 | |
| 23 | /* 0700 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,T,A,X,D,D,D,DR,DR,R,R,R,D,D,D,D,R,D, |
| 24 | /* 0720 */ D,D,D,D,D,D,D,D,R,D,DR,D,R,D,D,DR,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 25 | /* 0740 */ X,X,X,X,X,X,X,X,X,X,X,X,X,R,D,D, |
| 26 | |
| 27 | /* Arabic Supplement */ |
| 28 | |
| 29 | /* 0740 */ D,D,D,D,D,D,D,D,D,R,R,R,D,D,D,D, |
| 30 | /* 0760 */ D,D,D,D,D,D,D,D,D,D,D,R,R,D,D,D,D,R,D,R,R,D,D,D,R,R,D,D,D,D,D,D, |
| 31 | |
| 32 | /* FILLER */ |
| 33 | |
| 34 | /* 0780 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 35 | /* 07A0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 36 | |
| 37 | /* NKo */ |
| 38 | |
| 39 | /* 07C0 */ X,X,X,X,X,X,X,X,X,X,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 40 | /* 07E0 */ D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,D,X,X,X,X,X, |
| 41 | |
| 42 | /* FILLER */ |
| 43 | |
| 44 | /* 0800 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 45 | /* 0820 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 46 | |
| 47 | /* Mandaic */ |
| 48 | |
| 49 | /* 0840 */ R,D,D,D,D,D,R,R,D,R,D,D,D,D,D,D,D,D,D,D,R,D,R,R,R,X,X,X,X,X,X,X, |
| 50 | |
| 51 | /* Syriac Supplement */ |
| 52 | |
| 53 | /* 0860 */ D,U,D,D,D,D,U,R,D,R,R,X,X,X,X,X, |
| 54 | |
| 55 | /* Arabic Extended-B */ |
| 56 | |
| 57 | /* 0860 */ R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R, |
| 58 | /* 0880 */ R,R,R,D,D,D,D,U,U,D,D,D,D,D,R,X,U,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 59 | |
| 60 | /* Arabic Extended-A */ |
| 61 | |
| 62 | /* 08A0 */ D,D,D,D,D,D,D,D,D,D,R,R,R,U,R,D,D,R,R,D,D,D,D,D,D,R,D,D,D,D,D,D, |
| 63 | /* 08C0 */ D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 64 | /* 08E0 */ X,X,U, |
| 65 | |
| 66 | /* Mongolian */ |
| 67 | |
| 68 | /* 1800 */ U,D,X,X,D,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 69 | /* 1820 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 70 | /* 1840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 71 | /* 1860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,X,X,X,X,X,X,X, |
| 72 | /* 1880 */ U,U,U,U,U,T,T,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 73 | /* 18A0 */ D,D,D,D,D,D,D,D,D,X,D, |
| 74 | |
| 75 | /* General Punctuation */ |
| 76 | |
| 77 | /* 2000 */ U,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 78 | /* 2020 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,U,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 79 | /* 2040 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 80 | /* 2060 */ X,X,X,X,X,X,U,U,U,U, |
| 81 | |
| 82 | /* Phags-pa */ |
| 83 | |
| 84 | /* A840 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 85 | /* A860 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,L,U, |
| 86 | |
| 87 | /* Manichaean */ |
| 88 | |
| 89 | /* 10AC0 */ D,D,D,D,D,R,U,R,U,R,R,U,U,L,R,R,R,R,R,D,D,D,D,L,D,D,D,D,D,R,D,D, |
| 90 | /* 10AE0 */ D,R,U,U,R,X,X,X,X,X,X,D,D,D,D,R, |
| 91 | |
| 92 | /* Psalter Pahlavi */ |
| 93 | |
| 94 | /* 10B80 */ D,R,D,R,R,R,D,D,D,R,D,D,R,D,R,R,D,R,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 95 | /* 10BA0 */ X,X,X,X,X,X,X,X,X,R,R,R,R,D,D,U, |
| 96 | |
| 97 | /* Hanifi Rohingya */ |
| 98 | |
| 99 | /* 10D00 */ L,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 100 | /* 10D20 */ D,D,R,D, |
| 101 | |
| 102 | /* Arabic Extended-C */ |
| 103 | |
| 104 | /* 10EC0 */ R,D,D, |
| 105 | |
| 106 | /* Sogdian */ |
| 107 | |
| 108 | /* 10F20 */ D,D,D,R,D,D,D,D,D,D,D,D,D,D,D,D, |
| 109 | /* 10F40 */ D,D,D,D,D,U,X,X,X,X,X,X,X,X,X,X,X,D,D,D,R,X,X,X,X,X,X,X,X,X,X,X, |
| 110 | /* 10F60 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 111 | |
| 112 | /* Old Uyghur */ |
| 113 | |
| 114 | /* 10F60 */ D,D,D,D,R,R,D,D,D,D,D,D,D,D,D,D, |
| 115 | /* 10F80 */ D,D,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 116 | /* 10FA0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X, |
| 117 | |
| 118 | /* Chorasmian */ |
| 119 | |
| 120 | /* 10FA0 */ D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D, |
| 121 | /* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L, |
| 122 | |
| 123 | /* Kaithi */ |
| 124 | |
| 125 | /* 110A0 */ U,X,X, |
| 126 | /* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U, |
| 127 | |
| 128 | /* Adlam */ |
| 129 | |
| 130 | /* 1E900 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 131 | /* 1E920 */ D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D,D, |
| 132 | /* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T, |
| 133 | ]; |
| 134 | |
| 135 | const JOINING_OFFSET_0X0600: usize = 0; |
| 136 | const JOINING_OFFSET_0X1806: usize = 739; |
| 137 | const JOINING_OFFSET_0X200C: usize = 904; |
| 138 | const JOINING_OFFSET_0XA840: usize = 998; |
| 139 | const JOINING_OFFSET_0X10AC0: usize = 1050; |
| 140 | const JOINING_OFFSET_0X10B80: usize = 1098; |
| 141 | const JOINING_OFFSET_0X10D00: usize = 1146; |
| 142 | const JOINING_OFFSET_0X10EC2: usize = 1182; |
| 143 | const JOINING_OFFSET_0X10F30: usize = 1185; |
| 144 | const JOINING_OFFSET_0X110BD: usize = 1341; |
| 145 | const JOINING_OFFSET_0X1E900: usize = 1358; |
| 146 | |
| 147 | pub fn joining_type(u: char) -> hb_arabic_joining_type_t { |
| 148 | let u = u as u32; |
| 149 | match u >> 12 { |
| 150 | 0x0 => { |
| 151 | if (0x0600..=0x08E2).contains(&u) { |
| 152 | return JOINING_TABLE[u as usize - 0x0600 + JOINING_OFFSET_0X0600]; |
| 153 | } |
| 154 | } |
| 155 | 0x1 => { |
| 156 | if (0x1806..=0x18AA).contains(&u) { |
| 157 | return JOINING_TABLE[u as usize - 0x1806 + JOINING_OFFSET_0X1806]; |
| 158 | } |
| 159 | } |
| 160 | 0x2 => { |
| 161 | if (0x200C..=0x2069).contains(&u) { |
| 162 | return JOINING_TABLE[u as usize - 0x200C + JOINING_OFFSET_0X200C]; |
| 163 | } |
| 164 | } |
| 165 | 0xA => { |
| 166 | if (0xA840..=0xA873).contains(&u) { |
| 167 | return JOINING_TABLE[u as usize - 0xA840 + JOINING_OFFSET_0XA840]; |
| 168 | } |
| 169 | } |
| 170 | 0x10 => { |
| 171 | if (0x10AC0..=0x10AEF).contains(&u) { |
| 172 | return JOINING_TABLE[u as usize - 0x10AC0 + JOINING_OFFSET_0X10AC0]; |
| 173 | } |
| 174 | if (0x10B80..=0x10BAF).contains(&u) { |
| 175 | return JOINING_TABLE[u as usize - 0x10B80 + JOINING_OFFSET_0X10B80]; |
| 176 | } |
| 177 | if (0x10D00..=0x10D23).contains(&u) { |
| 178 | return JOINING_TABLE[u as usize - 0x10D00 + JOINING_OFFSET_0X10D00]; |
| 179 | } |
| 180 | if (0x10EC2..=0x10EC4).contains(&u) { |
| 181 | return JOINING_TABLE[u as usize - 0x10EC2 + JOINING_OFFSET_0X10EC2]; |
| 182 | } |
| 183 | if (0x10F30..=0x10FCB).contains(&u) { |
| 184 | return JOINING_TABLE[u as usize - 0x10F30 + JOINING_OFFSET_0X10F30]; |
| 185 | } |
| 186 | } |
| 187 | 0x11 => { |
| 188 | if (0x110BD..=0x110CD).contains(&u) { |
| 189 | return JOINING_TABLE[u as usize - 0x110BD + JOINING_OFFSET_0X110BD]; |
| 190 | } |
| 191 | } |
| 192 | 0x1E => { |
| 193 | if (0x1E900..=0x1E94B).contains(&u) { |
| 194 | return JOINING_TABLE[u as usize - 0x1E900 + JOINING_OFFSET_0X1E900]; |
| 195 | } |
| 196 | } |
| 197 | _ => {} |
| 198 | } |
| 199 | |
| 200 | X |
| 201 | } |
| 202 | |