1// WARNING: this file was generated by scripts/gen-arabic-table.py
2
3use 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]
8pub 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
135const JOINING_OFFSET_0X0600: usize = 0;
136const JOINING_OFFSET_0X1806: usize = 739;
137const JOINING_OFFSET_0X200C: usize = 904;
138const JOINING_OFFSET_0XA840: usize = 998;
139const JOINING_OFFSET_0X10AC0: usize = 1050;
140const JOINING_OFFSET_0X10B80: usize = 1098;
141const JOINING_OFFSET_0X10D00: usize = 1146;
142const JOINING_OFFSET_0X10EC2: usize = 1182;
143const JOINING_OFFSET_0X10F30: usize = 1185;
144const JOINING_OFFSET_0X110BD: usize = 1341;
145const JOINING_OFFSET_0X1E900: usize = 1358;
146
147pub 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