rustybuzz/hb/
ot_shape_complex_arabic_table.rs

1// WARNING: this file was generated by scripts/gen-arabic-table.py
2
3use super::ot_shape_complex_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  /* Sogdian */
103
104  /* 10F20 */                                 D,D,D,R,D,D,D,D,D,D,D,D,D,D,D,D,
105  /* 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,
106  /* 10F60 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
107
108  /* Old Uyghur */
109
110  /* 10F60 */                                 D,D,D,D,R,R,D,D,D,D,D,D,D,D,D,D,
111  /* 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,
112  /* 10FA0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,X,
113
114  /* Chorasmian */
115
116  /* 10FA0 */                                 D,U,D,D,R,R,R,U,D,R,R,D,D,R,D,D,
117  /* 10FC0 */ U,D,R,R,D,U,U,U,U,R,D,L,
118
119  /* Kaithi */
120
121  /* 110A0 */                                                           U,X,X,
122  /* 110C0 */ X,X,X,X,X,X,X,X,X,X,X,X,X,U,
123
124  /* Adlam */
125
126  /* 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,
127  /* 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,
128  /* 1E940 */ D,D,D,D,X,X,X,X,X,X,X,T,
129];
130
131const JOINING_OFFSET_0X0600: usize = 0;
132const JOINING_OFFSET_0X1806: usize = 739;
133const JOINING_OFFSET_0X200C: usize = 904;
134const JOINING_OFFSET_0XA840: usize = 998;
135const JOINING_OFFSET_0X10AC0: usize = 1050;
136const JOINING_OFFSET_0X10B80: usize = 1098;
137const JOINING_OFFSET_0X10D00: usize = 1146;
138const JOINING_OFFSET_0X10F30: usize = 1182;
139const JOINING_OFFSET_0X110BD: usize = 1338;
140const JOINING_OFFSET_0X1E900: usize = 1355;
141
142pub fn joining_type(u: char) -> hb_arabic_joining_type_t {
143    let u = u as u32;
144    match u >> 12 {
145        0x0 => {
146            if (0x0600..=0x08E2).contains(&u) {
147                return JOINING_TABLE[u as usize - 0x0600 + JOINING_OFFSET_0X0600];
148            }
149        }
150        0x1 => {
151            if (0x1806..=0x18AA).contains(&u) {
152                return JOINING_TABLE[u as usize - 0x1806 + JOINING_OFFSET_0X1806];
153            }
154        }
155        0x2 => {
156            if (0x200C..=0x2069).contains(&u) {
157                return JOINING_TABLE[u as usize - 0x200C + JOINING_OFFSET_0X200C];
158            }
159        }
160        0xA => {
161            if (0xA840..=0xA873).contains(&u) {
162                return JOINING_TABLE[u as usize - 0xA840 + JOINING_OFFSET_0XA840];
163            }
164        }
165        0x10 => {
166            if (0x10AC0..=0x10AEF).contains(&u) {
167                return JOINING_TABLE[u as usize - 0x10AC0 + JOINING_OFFSET_0X10AC0];
168            }
169            if (0x10B80..=0x10BAF).contains(&u) {
170                return JOINING_TABLE[u as usize - 0x10B80 + JOINING_OFFSET_0X10B80];
171            }
172            if (0x10D00..=0x10D23).contains(&u) {
173                return JOINING_TABLE[u as usize - 0x10D00 + JOINING_OFFSET_0X10D00];
174            }
175            if (0x10F30..=0x10FCB).contains(&u) {
176                return JOINING_TABLE[u as usize - 0x10F30 + JOINING_OFFSET_0X10F30];
177            }
178        }
179        0x11 => {
180            if (0x110BD..=0x110CD).contains(&u) {
181                return JOINING_TABLE[u as usize - 0x110BD + JOINING_OFFSET_0X110BD];
182            }
183        }
184        0x1E => {
185            if (0x1E900..=0x1E94B).contains(&u) {
186                return JOINING_TABLE[u as usize - 0x1E900 + JOINING_OFFSET_0X1E900];
187            }
188        }
189        _ => {}
190    }
191
192    X
193}