Skip to main content

harfrust/hb/
ot_shaper_indic_table.rs

1/* == Start of generated table == */
2/*
3 * The following table is generated by running:
4 *
5 *   ./gen-indic-table.py --rust IndicSyllabicCategory.txt IndicPositionalCategory.txt Blocks.txt
6 *
7 * on files with these headers:
8 *
9 * # IndicSyllabicCategory-17.0.0.txt
10 * # Date: 2025-08-01, 04:02:23 GMT
11 * # IndicPositionalCategory-17.0.0.txt
12 * # Date: 2025-07-29, 13:35:52 GMT
13 * # Blocks-17.0.0.txt
14 * # Date: 2025-08-01
15 */
16
17#![allow(unused_parens)]
18#![allow(clippy::unnecessary_cast, clippy::unreadable_literal, clippy::double_parens)]
19#![allow(non_camel_case_types)]
20#![allow(unused_imports)]
21
22use super::ot_shaper_indic::ot_category_t::*;
23use super::ot_shaper_indic::ot_position_t::*;
24
25
26use OT_A     as _OT_A;          /*  53 chars; A */
27use OT_As    as _OT_As;         /*   1 chars; As */
28use OT_C     as _OT_C;          /* 476 chars; C */
29use OT_CM    as _OT_CM;         /*   1 chars; CM */
30use OT_CS    as _OT_CS;         /*   4 chars; CS */
31use OT_DOTTEDCIRCLE as _OT_DC;         /*   1 chars; DOTTEDCIRCLE */
32use OT_H     as _OT_H;          /*  11 chars; H */
33use OT_M     as _OT_M;          /* 142 chars; M */
34use OT_MH    as _OT_MH;         /*   1 chars; MH */
35use OT_ML    as _OT_ML;         /*   1 chars; ML */
36use OT_MPst  as _OT_MP;         /*   1 chars; MPst */
37use OT_MR    as _OT_MR;         /*   1 chars; MR */
38use OT_MW    as _OT_MW;         /*   2 chars; MW */
39use OT_MY    as _OT_MY;         /*   3 chars; MY */
40use OT_N     as _OT_N;          /*  17 chars; N */
41use OT_PLACEHOLDER as _OT_GB;         /* 185 chars; PLACEHOLDER */
42use OT_PT    as _OT_PT;         /*   8 chars; PT */
43use OT_Ra    as _OT_R;          /*  14 chars; Ra */
44use OT_Repha as _OT_Rf;         /*   1 chars; Repha */
45use OT_Robatic as _OT_Rt;         /*   3 chars; Robatic */
46use OT_SM    as _OT_SM;         /*  50 chars; SM */
47use OT_SMPst as _OT_SP;         /*   6 chars; SMPst */
48use OT_Symbol as _OT_S;          /*  22 chars; Symbol */
49use OT_V     as _OT_V;          /* 172 chars; V */
50use OT_VAbv  as _OT_VA;         /*  18 chars; VAbv */
51use OT_VBlw  as _OT_VB;         /*   7 chars; VBlw */
52use OT_VPre  as _OT_VL;         /*   5 chars; VPre */
53use OT_VPst  as _OT_VR;         /*  13 chars; VPst */
54use OT_VS    as _OT_VS;         /*  16 chars; VS */
55use OT_X     as _OT_X;          /*   2 chars; X */
56use OT_Xgroup as _OT_Xg;         /*   7 chars; Xgroup */
57use OT_Ygroup as _OT_Yg;         /*   4 chars; Ygroup */
58use OT_ZWJ   as _OT_ZWJ;        /*   1 chars; ZWJ */
59use OT_ZWNJ  as _OT_ZWNJ;       /*   1 chars; ZWNJ */
60
61use POS_ABOVE_C as _POS_T;         /*  22 chars; ABOVE_C */
62use POS_AFTER_MAIN as _POS_A;         /*   3 chars; AFTER_MAIN */
63use POS_AFTER_POST as _POS_AP;        /*  50 chars; AFTER_POST */
64use POS_AFTER_SUB as _POS_AS;        /*  51 chars; AFTER_SUB */
65use POS_BASE_C as _POS_C;         /* 853 chars; BASE_C */
66use POS_BEFORE_SUB as _POS_BS;        /*  25 chars; BEFORE_SUB */
67use POS_BELOW_C as _POS_B;         /*  13 chars; BELOW_C */
68use POS_END  as _POS_X;         /*  71 chars; END */
69use POS_POST_C as _POS_R;         /*  13 chars; POST_C */
70use POS_PRE_C as _POS_L;         /*   5 chars; PRE_C */
71use POS_PRE_M as _POS_LM;        /*  14 chars; PRE_M */
72use POS_SMVD as _POS_SM;        /* 130 chars; SMVD */
73
74const fn indic_combine_categories (s: u8, m: u8) -> u16
75{
76  (s as u16) | ((m as u16) << 8)
77}
78
79
80#[allow(dead_code, non_upper_case_globals, clippy::allow_attributes_without_reason, missing_docs)]
81pub(crate) static _hb_indic_values: [u16; 42]=
82[
83    indic_combine_categories(_OT_A, _POS_SM),  indic_combine_categories(_OT_As, _POS_X),
84     indic_combine_categories(_OT_C, _POS_C),  indic_combine_categories(_OT_CM, _POS_C),
85    indic_combine_categories(_OT_CS, _POS_C),  indic_combine_categories(_OT_DC, _POS_C),
86    indic_combine_categories(_OT_GB, _POS_C),   indic_combine_categories(_OT_H, _POS_B),
87     indic_combine_categories(_OT_H, _POS_T),   indic_combine_categories(_OT_H, _POS_X),
88     indic_combine_categories(_OT_M, _POS_A),  indic_combine_categories(_OT_M, _POS_AP),
89    indic_combine_categories(_OT_M, _POS_AS),   indic_combine_categories(_OT_M, _POS_B),
90    indic_combine_categories(_OT_M, _POS_BS),  indic_combine_categories(_OT_M, _POS_LM),
91    indic_combine_categories(_OT_MH, _POS_X),  indic_combine_categories(_OT_ML, _POS_X),
92   indic_combine_categories(_OT_MP, _POS_AP),  indic_combine_categories(_OT_MR, _POS_X),
93    indic_combine_categories(_OT_MW, _POS_X),  indic_combine_categories(_OT_MY, _POS_X),
94     indic_combine_categories(_OT_N, _POS_X),  indic_combine_categories(_OT_PT, _POS_X),
95     indic_combine_categories(_OT_R, _POS_C),  indic_combine_categories(_OT_Rf, _POS_X),
96    indic_combine_categories(_OT_Rt, _POS_X),  indic_combine_categories(_OT_S, _POS_SM),
97   indic_combine_categories(_OT_SM, _POS_BS), indic_combine_categories(_OT_SM, _POS_SM),
98   indic_combine_categories(_OT_SP, _POS_SM),   indic_combine_categories(_OT_V, _POS_C),
99    indic_combine_categories(_OT_VA, _POS_T),  indic_combine_categories(_OT_VB, _POS_B),
100    indic_combine_categories(_OT_VL, _POS_L),  indic_combine_categories(_OT_VR, _POS_R),
101    indic_combine_categories(_OT_VS, _POS_X),   indic_combine_categories(_OT_X, _POS_X),
102    indic_combine_categories(_OT_Xg, _POS_X),  indic_combine_categories(_OT_Yg, _POS_X),
103   indic_combine_categories(_OT_ZWJ, _POS_X),indic_combine_categories(_OT_ZWNJ, _POS_X),
104];
105#[allow(dead_code, non_upper_case_globals, clippy::allow_attributes_without_reason, missing_docs)]
106pub(crate) static _hb_indic_u8: [u8; 1220]=
107[
108    1,  0, 50,  4,  5, 96,  0,  7,  8,  9,  0,  0,  0,  0,  0,  0,
109    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,
110    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,186,  0,  0,  0,  0,  0,
111    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,192,
112    0,  0,  0,  0,208,224,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,
113    2,  3,  0,  0,  0,  0,  0,  0,  0,  0,  4,  5,  6,  7,  8,  9,
114   10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,  0,  0, 22, 23,
115   24,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 25, 26,  0,  0,
116    0, 27,  0,  0,  0,  0, 28, 29, 30,  0,  0,  0,  0,  0,  0,  0,
117    0,  0,  0,  0,  0, 31,  0,  0,  0, 32,  0,  0,  0, 33,  0, 34,
118    0,  0,  0,  0,  0,  0, 35,  0,  0,  0,  0,  0,  0,  0,  0,  0,
119    0,  0, 36,  0,  0,  0,  0,  0,  0, 37,  0,  0,  0,  0,  0,  0,
120    0,  0,  0,  0,  0,  0,  0, 25,  2, 10,  0,  0,  0,  0, 26,  0,
121   27,  0,  0,  0, 28,  0,  0,  0,  0,  0, 29, 11, 30,  1,  1,  1,
122    4, 31, 32, 33, 34,  1,  6,  2, 35,  1, 12, 13,  7,  1,  1,  3,
123   36, 14, 15, 37, 16, 17,  6,  2, 38, 39, 18, 40,  7,  1,  1,  3,
124   41, 42, 43, 44, 45, 46, 19,  2, 47,  0, 18, 48, 49,  1,  1,  3,
125   20, 14, 50, 51,  0,  0, 21,  2,  0, 52, 53, 13,  7,  1,  1,  3,
126   20, 54, 15, 55, 56, 17,  6,  2, 57,  0, 58, 59, 60, 61, 62, 63,
127    4, 64, 65, 66, 16,  0, 19,  2,  0,  0, 67,  8,  9,  1,  1,  3,
128    4, 22, 68, 69, 70, 71, 23,  2,  0,  0, 12,  8,  9,  1,  1,  3,
129   72, 22, 73, 74, 75, 76, 23,  2, 77,  0, 78,  8,  9,  1,  1,  1,
130    4, 79, 80, 81, 82, 83, 21,  2,  0, 84, 85,  1,  1, 86, 87, 88,
131   89, 90,  2, 91, 92, 93, 94, 95, 96,  1, 97, 98,  2, 99,  0,  0,
132    0,  0,  1,  1,  1,100,101, 11,102,103,104,105,106,107,  2, 10,
133    0,  0,  0,  0,108,  5,  5,109,110,111,  0,112,113,  0,114,  0,
134    0,  0,  0,  0,  0,  0,  0,  0,115,  0,116,  0,  0,  0,  0,  0,
135    0,  0,  0,117,  0,  0,  0,  0,  0,118,  0,  0,  0,  0,  5,  5,
136  119,120,  0,  0,  0,  0,121,  1,  2,122,  0,  0,  0,  0,  1,  1,
137  123,124, 24, 24,  0,  0,  0,  0,  0,  0,125,  0,  0,  0,  0,  0,
138    0,126,  0,  0,  2,  2,  2, 10,  0,  0,  0,  0,  2,  2,  2,  2,
139    4,  4,  4,  4, 10,  2,  2,  2, 26,  2,  2,  2,  8,  8,  8,  8,
140    6, 18,  0,  4, 20, 14, 24,  2,  6,  6, 20,  6, 20,  6, 24,  2,
141    4,  0,  0,  0,  6,  6,  6,  6, 66, 12, 14,  6,  6,  6, 20, 14,
142    2,  0, 36, 50, 52, 18, 38, 68,  0,  0,  0, 32,  0,  0,  2, 16,
143   56, 12, 14,  6,  0,  0,  0,  4, 44,  2, 16,  2,  6, 22,  0,  4,
144    2,  0, 36, 28,  6, 28,  0,  4, 30, 30, 30, 30,  0,  0, 42,  0,
145   34,  0,  0,  0,  0, 64,  0,  0,  0,  0,  0, 42, 12, 12,  6,  6,
146    6,  6, 24,  2,  2, 18, 36,112, 18, 18, 18, 18, 18, 18,114,116,
147  118,120,122, 18,  0,  6,  6,  6, 44, 10,  0,  2, 54, 32, 46, 10,
148   26,  0,  0,  0,  0,  0, 34, 70,  6, 20,  0, 14, 44,  2, 16, 10,
149    2,  0, 72, 50,124, 48,  0, 32, 48, 32, 46,  0,126,  0,  0,  0,
150   16,  2, 10, 10, 12,  2,128,  0,  6,  6,  6, 14,  6, 14, 24,  2,
151   22, 22, 52, 74, 76, 32, 46,  0, 16, 58, 58, 78,130, 12, 14,  6,
152    2,  0, 36,132,134, 32, 46,  0,  0,  0, 80,136, 16,  0,  0,  0,
153    0, 70, 14,  6,  6, 20,  0,  6, 20,  6, 24,  0, 16, 10, 10,  2,
154    0, 16, 10,  0,  2, 10,  0,  2,  2,  0,  0, 22, 76, 48,  0, 82,
155   54, 22, 84,  0, 12, 12,138,  6, 28, 60, 38, 28, 86, 28, 88,  0,
156    0,  0,140, 86,  2, 10, 16,  0, 26,  2, 16,  2, 28, 60, 38, 60,
157   38, 18, 88,  0,  0,  0, 74, 38,  0,  0, 16, 10,142,144,  0,  0,
158   12, 12,146,  6,  2,148,150, 22, 22, 22, 48, 82, 54, 22, 84,152,
159    0,  0,  2,154,  0,  0,  0, 14,  0,  2,  2,  2,  2,  2, 26,  2,
160    2,156,  2,  2, 90,  6,  6,  6,  6,158, 92, 94,160,162, 62, 58,
161  164,166,168,170,  4,  4,  0, 10,  2,  6,  6, 96, 98, 26,  2,172,
162  174,100,176,178,100,102,102,  2,104, 62,180,  2,  2,182,184,186,
163   12, 12, 12,188,  4, 12,190,  0,  2, 26,  2,  2,  2, 90,  6,  6,
164    6,  6,  0, 92, 62, 94, 98,192,194,196, 96,198,200,106,106,108,
165  108,202,  0,  0, 42,  0,204,  0,  8,206,  8,  8,208, 40,210, 40,
166   40,  2,212,214,  8, 34,  0,  0,  0,  0,216,  0,  4,  4,  4,  0,
167    0, 34,  0,  0,  0,  0,110,  0,  0, 64,110,  0,  0,  0,218,  0,
168    0, 42,  4, 34,  8, 40, 40, 40,  0,  0,  0,220,  2,  2,104, 16,
169    4,  2,  2, 10, 16,  2,  4, 34,  0,222, 78,  2, 56, 12,  0,  0,
170    0, 80, 72,  0, 37, 37,  2,  2,  6,  6, 31, 31,  0,  0,  2, 37,
171   29, 29, 37, 31, 37,  2, 12, 12, 31, 37, 11, 11, 31,  2, 24,  2,
172   14, 14, 36, 36, 37, 11,  6, 37, 22, 27, 12, 37, 27, 27, 37,  6,
173   24, 37, 11,  7, 11, 37, 11, 15, 11, 12, 15, 37, 37, 29,  0, 22,
174   14, 12, 32, 32, 30, 30,  6, 29, 37, 15, 29, 37, 22, 37, 37, 12,
175   12, 11, 22, 22, 37, 22, 15, 15, 11,  8, 14, 37, 14,  8,  2, 31,
176   35, 32, 32, 33, 35, 35, 33, 33, 35, 23, 23, 23,  2, 32, 26, 38,
177   38, 38, 30, 37, 12, 15, 12,  7, 15, 12, 37,  0,  0, 29, 29, 12,
178   18, 11, 37, 13, 37,  3, 37, 28, 11, 10, 10, 37, 10, 11, 29, 31,
179   37, 14, 37,  4,  4, 29,  6, 31,  2, 12, 12, 27, 25, 37,  2, 11,
180    2, 24, 31, 35, 33, 34,  0, 32, 29,  9,  1, 21, 19, 20, 16,  2,
181   21, 21, 17,  2, 23,  2,  2, 35, 32,  2, 20, 35, 34, 32, 32, 29,
182    2, 29, 29, 32, 32, 35, 35, 34, 34, 34, 38, 39, 39, 26,  9, 39,
183   27, 39,  0, 37,  0, 27, 27,  0,  0,  4,  4,  0, 41, 40,  5, 37,
184   31, 12,  2, 23,
185];
186
187#[allow(dead_code, unused_parens, trivial_numeric_casts, clippy::allow_attributes_without_reason, clippy::unseparated_literal_suffix, clippy::double_parens, clippy::unnecessary_cast)]
188#[inline(always)]
189fn _hb_indic_b4 (a: &[u8], i: usize) -> u8
190{
191  (a[i>>1]>>((i&1)<<2))&15
192}
193#[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)]
194#[inline]
195pub(crate) fn _hb_indic_get_categories_index (u: usize) -> u8
196{
197  /* packtab: [2^4,2^3,2^3,2^2,2^1] */
198  if u<71396usize { (_hb_indic_u8[996usize+(((_hb_indic_u8[488usize+((((_hb_indic_u8[186usize+((((_hb_indic_u8[70usize+((((_hb_indic_b4(&_hb_indic_u8,(((((((((u)>>1))>>2))>>3))>>3) as usize) as usize)) as usize)<<3) as usize+((((((((u)>>1))>>2))>>3))&7) as usize) as usize]) as usize)<<3) as usize+((((((u)>>1))>>2))&7) as usize) as usize]) as usize)<<2) as usize+((((u)>>1))&3) as usize) as usize]) as usize) as usize+((u)&1) as usize) as usize]) as u8 } else { 37 }
199}
200
201#[inline]
202pub(crate) fn get_categories (u: u32) -> (u8, u8)
203{
204  let v = _hb_indic_values[_hb_indic_get_categories_index (u as usize) as usize];
205  ((v & 0xFF) as u8, (v >> 8) as u8)
206}
207
208/* == End of generated table == */