rustybuzz/hb/
ot_shaper_use_table.rs

1/* == Start of generated table == */
2/*
3 * The following table is generated by running:
4 *
5 *   ./gen-use-table.py IndicSyllabicCategory.txt IndicPositionalCategory.txt ArabicShaping.txt DerivedCoreProperties.txt UnicodeData.txt Blocks.txt Scripts.txt IndicSyllabicCategory-Additional.txt IndicPositionalCategory-Additional.txt
6 *
7 * on files with these headers:
8 *
9 * # IndicSyllabicCategory-16.0.0.txt
10 * # Date: 2024-04-30, 21:48:21 GMT
11 * # IndicPositionalCategory-16.0.0.txt
12 * # Date: 2024-04-30, 21:48:21 GMT
13 * # ArabicShaping-16.0.0.txt
14 * # Date: 2024-07-30
15 * # DerivedCoreProperties-16.0.0.txt
16 * # Date: 2024-05-31, 18:09:32 GMT
17 * # Blocks-16.0.0.txt
18 * # Date: 2024-02-02
19 * # Scripts-16.0.0.txt
20 * # Date: 2024-04-30, 21:48:40 GMT
21 * # Override values For Indic_Syllabic_Category
22 * # Not derivable
23 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
24 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
25 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-24
26 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
27 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-25
28 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
29 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
30 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
31 * # Override values For Indic_Positional_Category
32 * # Not derivable
33 * # Initial version based on Unicode 7.0 by Andrew Glass 2014-03-17
34 * # Updated for Unicode 10.0 by Andrew Glass 2017-07-25
35 * # Ammended for Unicode 10.0 by Andrew Glass 2018-09-21
36 * # Updated for L2/19-083    by Andrew Glass 2019-05-06
37 * # Updated for Unicode 12.1 by Andrew Glass 2019-05-30
38 * # Updated for Unicode 13.0 by Andrew Glass 2020-07-28
39 * # Updated for Unicode 14.0 by Andrew Glass 2021-09-28
40 * # Updated for Unicode 15.0 by Andrew Glass 2022-09-16
41 * # Updated for Unicode 15.1 by Andrew Glass 2023-09-14
42 * # Updated for Unicode 16.0 by Andrew Glass 2024-09-11
43 * UnicodeData.txt does not have a header.
44 */
45
46// Note that in rustybuzz, this table is not autogenerated yet.
47// There were plans to port harfbuzz's `packTab` to Rust, but we
48// haven't gotten around to it yet.
49
50use super::ot_shaper_use::category::*;
51
52const hb_use_u8: [u8; 3343] =
53[
54    16,   50,   51,   51,   51,   52,   51,   83,  118,  131,   57,   58,   59,  195,  211,   62,
55    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
56    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
57    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
58    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
59    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
60    51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,   51,
61    15,    0,    1,    2,    2,    2,    2,    3,    2,    2,    2,    2,    2,    4,    2,    2,
62    5,    6,    2,    7,    8,    9,   10,   11,   12,   13,   14,   15,   16,    2,    2,   17,
63    18,   19,   20,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   21,
64    22,   23,   24,   25,   26,   27,   28,   29,   30,   31,   32,    2,   33,    2,    2,    2,
65    2,   34,   35,    2,    2,    2,    2,    2,    2,    2,    2,    2,   36,    2,    2,    2,
66    37,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   38,    2,   39,    2,    2,
67    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
68    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
69    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
70    2,   40,   41,   42,   43,   44,   45,    2,   46,    2,    2,    2,    2,    2,    2,    2,
71    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
72    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   47,   48,    2,
73    49,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   50,   51,    2,    2,    2,
74    2,    2,    2,    2,    2,   52,   53,    2,   54,    2,    2,   55,   56,    2,   57,   58,
75    59,   60,   61,   62,   63,   64,   65,   66,   67,   68,   69,    2,   70,   71,   72,   73,
76    2,   74,    2,   75,   76,   77,   78,    2,    2,   79,   80,   81,   82,    2,   83,   84,
77    2,   85,   85,   85,   85,   85,   85,   85,   85,   86,   85,   85,   85,   85,   85,   85,
78    85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,   85,
79    85,   85,   85,   85,   85,   85,   85,   85,   87,    2,    2,    2,    2,    2,    2,    2,
80    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
81    2,    2,    2,   88,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
82    2,    2,    2,    2,    2,    2,   89,   90,    2,    2,    2,   91,    2,    2,    2,   92,
83    93,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
84    2,    2,    2,    2,    2,    2,    2,   94,   94,   94,   95,    2,    2,    2,    2,    2,
85    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
86    2,    2,    2,    2,    2,    2,    2,    2,    2,   96,   97,    2,    2,    2,    2,    2,
87    2,    2,    2,   98,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
88    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
89    2,    2,    2,   99,    2,    2,  100,    2,    2,    2,  101,    2,  102,    2,    2,    2,
90    2,    2,    2,  103,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
91    2,  104,  104,  105,  106,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
92    104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,  104,
93    104,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    1,
94    0,    2,    2,    2,    2,    2,    0,    0,    0,    0,    0,    0,    0,    0,    3,    4,
95    0,    5,    0,    0,    0,    0,    0,    6,    0,    0,    7,    0,    0,    0,    0,    0,
96    0,    0,    0,    0,    1,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
97    8,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    2,    2,
98    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   10,   11,
99    11,   11,   11,    0,    0,    0,    9,   12,    0,    2,    2,    2,    2,   13,   14,    0,
100    0,   11,   15,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   16,   17,
101    18,   19,   20,   21,   22,   16,   23,   24,   25,   12,   26,   27,   20,    2,    2,    2,
102    2,    2,   20,    0,    2,    2,    2,    2,    2,    0,    2,    2,    2,    2,    2,    2,
103    2,   28,   29,   30,    2,    2,    2,    9,   30,    9,   30,    2,    2,    2,    2,    2,
104    2,    2,    2,    2,    2,    9,    2,    2,    2,    9,    9,    0,    2,    2,    0,   17,
105    18,   19,   20,   31,   32,   33,   32,   34,    0,    0,    0,    0,   35,    0,    0,    2,
106    30,    2,    0,    0,    0,    0,    0,    9,   36,   12,   15,   30,    2,    2,    9,    0,
107    30,    9,    2,   30,    9,    2,    0,   37,   18,   19,   31,    0,   27,   38,   27,   39,
108    0,   40,    0,    0,    0,   30,    2,    9,    9,    0,    0,    0,    2,    2,    2,    2,
109    2,   41,   42,   43,    0,    0,    0,    0,    0,   12,   15,   30,    2,    2,    2,    2,
110    30,    2,   30,    2,    2,    2,    2,    2,    2,    9,    2,   30,    2,    2,    0,   17,
111    18,   19,   20,   21,   27,   22,   35,   24,    0,    0,    0,    0,    0,   30,   41,   41,
112    44,   12,   29,   30,    2,    2,    2,    9,   30,    9,    2,   30,    2,    2,    0,   17,
113    45,    0,    0,   27,   22,    0,    0,    2,   30,   30,    0,    0,    0,    0,    0,    0,
114    0,    0,   46,   30,    2,    2,    9,    0,    2,    9,    2,    2,    0,   30,    9,    9,
115    2,    0,   30,    9,    0,    2,    9,    0,    2,    2,    2,    2,    2,    2,    0,    0,
116    23,   16,   47,    0,   48,   33,   48,   34,    0,    0,    0,    0,   35,    0,    0,    0,
117    0,   15,   29,   49,    2,    2,    2,    9,    2,    9,    2,    2,    2,    2,    2,    2,
118    2,    2,    2,    2,    2,    2,    0,   17,   22,   16,   23,   47,   22,   38,   22,   39,
119    0,    0,    0,   27,   31,    2,    9,    0,    0,   10,   29,   30,    2,    2,    2,    9,
120    2,    2,    2,   30,    2,    2,    0,   17,   45,    0,    0,   35,   47,    0,    0,    0,
121    9,   50,   51,    0,    0,    0,    0,    0,    0,   11,   29,    2,    2,    2,    2,    9,
122    2,    2,    2,    2,    2,    2,   52,   53,   23,   19,   20,   31,   48,   33,   48,   34,
123    54,    0,    0,    0,   35,    0,    0,    0,   30,   12,   29,   30,    2,    2,    2,    2,
124    2,    2,    2,    2,    9,    0,    2,    2,    2,    2,   30,    2,    2,    2,    2,   30,
125    0,    2,    2,    2,    9,    0,   55,    0,   35,   23,   22,   31,   31,   18,   48,   48,
126    25,    0,   23,    0,    0,    0,    0,    0,    0,    2,    0,    2,    9,    0,    0,    0,
127    0,    0,    0,    0,    0,   20,    0,    0,    0,    2,    2,   56,   56,   57,    0,    0,
128    18,    2,    2,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,    2,    2,    9,
129    0,   58,   21,   59,   22,   22,   20,   20,   46,   21,   11,   31,   11,    2,    2,   60,
130    61,   61,   61,   61,   61,   62,   61,   61,   61,   61,   61,   61,   61,   61,   61,   61,
131    61,   61,   61,   61,   61,   61,   61,   63,    0,    0,    0,    0,   64,    0,    0,    0,
132    0,    2,    2,    2,    2,    2,   65,   45,   59,   66,   22,   22,   67,   68,   69,   70,
133    71,    2,    2,    2,    2,    2,    1,    0,    5,    2,    2,    2,   23,   20,    2,    2,
134    72,   71,   73,   74,   65,   73,   29,   29,    2,   52,   22,   53,    2,    2,    2,    2,
135    2,    2,   75,   76,   77,   29,   29,   78,   79,    2,    2,    2,    2,    2,   29,   45,
136    0,    2,   59,   80,    0,    0,    0,    0,   30,    2,   59,   47,    0,    0,    0,    0,
137    0,    2,   59,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    9,
138    2,    9,   59,    0,    0,    0,    0,    0,    0,    2,    2,   81,   45,   22,   59,   20,
139    48,   48,   48,   48,   15,   82,   83,   84,   85,   86,   87,    0,    0,    0,    0,   88,
140    0,    9,    0,    0,   30,    0,   89,   81,   90,    2,    2,    2,    2,    9,    0,    0,
141    0,   42,   42,   91,   92,    2,    2,    2,    2,    2,    2,    2,    2,   13,    9,    0,
142    0,   93,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,
143    9,   22,   80,   45,   22,   94,   61,    0,    0,   95,   96,   95,   95,   97,   98,    0,
144    0,    2,    2,    2,    2,    2,    2,    2,    0,    2,    2,    9,    0,    0,    0,    0,
145    0,    2,    2,    2,    2,    2,    2,    0,    0,    2,    2,    2,    2,   29,    0,    0,
146    0,    2,    2,    2,    2,    2,    9,    0,    0,    2,    2,    2,   52,   99,   45,    0,
147    0,    2,    2,  100,  101,  102,  103,   61,   63,  104,   16,   45,   22,   59,   21,   80,
148    48,   48,   76,   11,   11,   11,  105,   46,   40,   11,  106,   74,    2,    2,    2,    2,
149    2,    2,    2,  107,   22,   20,   20,   22,   48,   48,   22,  108,    2,    2,    2,    9,
150    0,    0,    0,    0,    0,    0,  109,  110,  110,  110,  110,    0,    0,    0,    0,    0,
151    0,  106,   74,    2,    2,    2,    2,    2,    2,   60,   61,   59,   25,   22,  111,   61,
152    2,    2,    2,    2,  107,   22,   23,   45,   45,  102,   14,    0,    0,    0,    0,    0,
153    0,    2,    2,   61,   18,   48,   23,  112,  102,  102,  102,  113,  114,    0,    0,    0,
154    0,    2,    2,    2,    2,    2,    0,   30,    2,   11,   46,  115,  115,  115,   11,  115,
155    115,   15,  115,  115,  115,   26,    0,   40,    0,    0,    0,  116,   51,   11,    5,    0,
156    0,    0,    0,    0,    0,    0,  117,    0,    0,    0,    0,    0,    0,    0,    6,  118,
157    119,   42,   42,    5,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,  119,  119,
158    120,  119,  119,  119,  119,  119,  119,  119,  119,    0,    0,  121,    0,    0,    0,    0,
159    0,    0,    7,  121,    0,    0,    0,    0,    0,   46,    0,    0,    0,    0,    0,    0,
160    0,    0,    0,    0,    0,    0,    0,    9,    0,    0,    0,    0,  122,  122,    0,    0,
161    0,    2,    2,    2,    2,    0,    0,    0,   30,    0,    0,    0,    0,    0,    0,    0,
162    123,    0,  122,  122,    0,    0,    0,    0,    0,    2,   53,    2,  108,    2,   10,    2,
163    2,    2,   65,   19,   16,    0,    0,   31,    0,    2,    2,    0,    0,    0,    0,    0,
164    0,   29,    2,    2,    2,    2,    2,    2,    2,    2,    2,  124,   23,   23,   23,   23,
165    23,   23,   23,  125,    0,    0,    0,    0,    0,   11,   11,   11,   11,   11,   11,   11,
166    11,   11,    2,    0,    0,    0,    0,    0,   52,    2,    2,    2,   22,   22,  126,  115,
167    0,    2,    2,    2,  127,   20,   59,   20,  112,  102,  128,    0,    0,    0,    0,    0,
168    0,   11,  129,    2,    2,    2,    2,    2,    2,    2,  130,   23,   22,   20,   48,  131,
169    132,  133,    0,    0,    0,    0,    0,    0,    0,    2,    2,   52,   30,    2,    2,    2,
170    2,    2,    2,    2,    2,   10,   22,   59,   99,   76,  134,  135,  136,    0,    0,    0,
171    0,    2,  137,    2,    2,    2,    2,  138,    0,   30,    2,   42,    5,    0,   79,   15,
172    2,   53,   22,  139,   52,   53,    2,    2,  105,   10,    9,    0,    0,    0,    0,    0,
173    0,    2,    2,    2,    2,    2,  140,   21,   25,    0,    0,  141,  142,    0,    0,    0,
174    0,    2,   65,   45,   23,   80,   47,  143,    0,   81,   81,   81,   81,   81,   81,   81,
175    81,    0,    0,    0,    0,    0,    0,    0,    6,  119,  119,  119,  119,  120,    0,    0,
176    0,    2,    2,    2,    2,    2,    9,    2,    2,    2,    9,    2,   30,    2,    2,    2,
177    2,    2,   30,    2,    2,    2,   30,    9,    0,  127,   20,   27,   31,    0,    0,  144,
178    145,    2,    2,   30,    2,   30,    2,    2,    2,    2,    2,    2,    0,   14,   37,    0,
179    146,    2,    2,   13,   37,    0,   30,    2,    2,    2,    0,    0,    0,    0,    0,    0,
180    0,    0,    0,    0,    0,   30,    2,    2,    9,    2,    2,   11,   41,    0,    0,    0,
181    0,    2,    2,    2,    0,   27,   22,   22,   30,    2,    2,    2,    0,    0,    0,    0,
182    0,    2,    2,    2,    2,    2,   27,   38,    0,    2,    2,    2,  115,  115,  115,  115,
183    115,  147,    2,    9,    0,    0,    0,    0,    0,    2,   14,   14,    0,    0,    0,    0,
184    0,    9,    2,    2,    9,    2,    2,    2,    2,   30,    2,    9,    0,   30,    2,    0,
185    0,  148,  149,  150,    2,    2,    2,    2,    2,    2,    2,    2,    2,   22,   22,   20,
186    20,   20,   22,   22,  133,    0,    0,    0,    0,    0,  151,  151,  151,  151,  151,  151,
187    151,  151,  151,  151,    2,    2,    2,    2,    2,   53,   52,   53,    0,    0,    0,    0,
188    152,   11,   74,    2,    2,    2,    2,    2,    2,   18,   19,   21,   16,   24,   37,    0,
189    0,    0,   31,    0,    0,    0,    0,    0,    0,   11,   49,    2,    2,    2,    2,    2,
190    2,    2,    2,    2,  127,   20,   22,  153,   22,   21,  154,  155,    2,    2,    2,    2,
191    2,    0,    0,   65,  156,    0,    0,    0,    0,    2,   13,    0,    0,    0,    0,    0,
192    0,    2,   65,   25,   20,   20,   20,   22,   22,  108,  157,    0,    0,   56,  158,   31,
193    159,   30,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,    2,   23,
194    19,   22,   22,  160,   44,    0,    0,    0,   49,  127,    0,    0,    0,    0,    0,    0,
195    0,    2,    2,    2,    9,    9,    2,    2,   30,    2,    2,    2,    2,    2,    2,    2,
196    30,    2,    2,    2,    2,    2,    2,    2,   10,   18,   19,   21,   22,  161,   31,    0,
197    0,   11,   11,   30,    2,    2,    2,    9,   30,    9,    2,   30,    2,    2,   58,   17,
198    23,   16,   23,   47,   32,   33,   32,   34,    0,    0,    0,    0,   35,    0,    0,    0,
199    2,    2,   23,    0,   11,   11,   11,   46,    0,   11,   11,   46,    0,    0,    0,    0,
200    0,    2,    2,    2,    2,    2,   30,    0,    9,    2,    2,    2,   30,   45,   59,   20,
201    20,   31,   33,   32,   32,   25,  162,   29,  163,  164,   37,    0,    0,    0,    0,    0,
202    0,   12,   26,    0,    0,    0,    0,    0,    0,    2,    2,   65,   25,   20,   20,   20,
203    22,   23,  125,   15,   17,    0,    0,    0,    0,    2,    2,    2,    2,    2,    0,    0,
204    165,  166,    0,    0,    0,    0,    0,    0,    0,   18,   19,   20,   20,   66,   99,   25,
205    159,   11,  167,    9,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,    2,    2,
206    65,   25,   20,   20,    0,   48,   48,   11,  168,   37,    0,    0,    0,    0,    0,    0,
207    0,    0,    0,    0,    0,    2,    2,   20,    0,   23,   19,   20,   20,   21,   16,   82,
208    168,   38,    0,    0,    0,    0,    0,    0,    0,    2,    2,    2,    2,    2,   10,  169,
209    25,   20,   22,   22,  167,    9,    0,    0,    0,    2,    2,    2,    2,    2,    9,   43,
210    135,   23,   22,   20,   76,   21,   22,    0,    0,    2,    2,    2,    9,    0,    0,    0,
211    0,    2,    2,    2,    2,    2,    2,   18,   19,   20,   21,   22,  105,  168,   37,    0,
212    0,    2,    2,    2,    9,   30,    0,    2,    2,    2,    2,   30,    9,    2,    2,    2,
213    2,   23,   23,   18,   32,   33,   12,  170,  164,  171,  172,    0,    0,    0,    0,    0,
214    0,    2,    2,    2,    2,    0,    2,    2,    2,   65,   25,   20,   20,    0,   22,   23,
215    29,  108,    0,   33,    0,    0,    0,    0,    0,   52,   20,   22,   22,   22,  139,    2,
216    2,    2,  173,  174,   11,   15,  175,   61,  176,    0,    0,    1,  146,    0,    0,    0,
217    0,   52,   20,   22,   16,   19,   20,    2,    2,    2,    2,  157,  157,  157,  177,  177,
218    177,  177,  177,  177,   15,  178,    0,   30,    0,   22,   20,   20,   31,   22,   22,   11,
219    168,    0,   61,   61,   61,   61,   61,   61,   61,   66,   21,   82,   46,    0,    0,    0,
220    0,    2,    2,    2,    9,    2,   30,    2,    2,   52,   22,   22,   31,    0,   38,   22,
221    27,   11,  158,  179,  180,    0,    0,    0,    0,    2,    2,    2,   30,    9,    2,    2,
222    2,    2,    2,    2,    2,    2,   23,   23,   47,   22,   35,   82,   68,    0,    0,    0,
223    0,    2,  181,   66,   47,    0,    0,    0,    0,   11,  182,    2,    2,    2,    2,    2,
224    2,    2,    2,   23,   22,   20,   31,    0,   48,   16,  142,    0,    0,    0,    0,    0,
225    0,    2,    2,    2,    2,    2,  155,    0,    0,  183,  183,  183,  183,  183,  183,  183,
226    183,  184,  184,  184,  185,  186,  184,  183,  183,  187,  183,  183,  188,  189,  189,  189,
227    189,  189,  189,  189,    0,    0,    0,    0,    0,  183,  183,  183,  183,  183,  190,    0,
228    0,    2,    2,    2,    2,    2,    2,    2,   22,   22,   22,   22,   22,   22,  191,  192,
229    193,   11,   11,   11,   46,    0,    0,    0,    0,   29,   74,    2,    2,    2,    2,    2,
230    2,    2,    2,    2,    2,    2,   65,   47,    0,    2,    2,    2,    2,    2,    9,    0,
231    58,  194,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,   20,
232    20,   20,   20,   20,   20,    0,    0,    0,   40,  115,   26,    0,    0,    0,    0,    0,
233    0,    0,    0,    9,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
234    30,    2,    2,    2,    2,    2,    0,   58,   37,    0,    6,  119,  119,  119,  120,    0,
235    0,   11,   11,   11,   49,    2,    2,    2,    0,    2,    2,    2,    2,    2,    0,    0,
236    2,    2,    2,    2,    2,    2,    2,    2,   46,    2,    2,    2,    2,    2,    2,   11,
237    11,    2,    2,    2,    2,    2,    2,   22,   22,    2,    2,    2,    2,    2,    2,    2,
238    20,    2,    2,   44,   44,   44,   92,    0,    0,    O,    O,    O,   GB,    B,    B,    O,
239    SB,    O,   SE,   GB,    O,    O,   WJ,FMPst,FMPst,    O,  CGJ,    B,    O,    B,VMAbv,VMAbv,
240    VMAbv,    O,VMAbv,    B,CMBlw,CMBlw,CMBlw,VMAbv,VMPst, VAbv, VPst,CMBlw,    B, VPst, VPre, VPst,
241    VBlw, VBlw, VBlw, VBlw, VAbv, VAbv, VAbv, VPst, VPst, VPst,    H, VPre, VPst,VMBlw,    O,    O,
242    VAbv,   GB,VMAbv,VMPst,VMPst,    O,    B, VBlw,    O,    O, VPre, VPre,    O, VPre,    H,    O,
243    VPst,FMAbv,    O,CMBlw,    O, VAbv,    O, VAbv,    H,    O,VMBlw,VMAbv,CMAbv,   GB,   GB,    O,
244    MBlw,CMAbv,CMAbv, VPst, VAbv,VMAbv,    O, VPst,    O, VPre, VPre,VMAbv,    B,    O,   CS,   CS,
245    VMPst,    B, VAbv, VAbv,    B,    R,    O,  HVM,    O,    O,FMBlw,    O,CMAbv,    O,CMBlw, VAbv,
246    VBlw,    B,  SUB,  SUB,  SUB,    O,  SUB,  SUB,    O,FMBlw,    O,    B, VPst, VBlw, VPre,VMAbv,
247    VMBlw,VMPst,   IS, VAbv, MPst, MPre, MBlw, MBlw,    B, MBlw, MBlw, VPst,VMPst,VMPst,    B, MBlw,
248    VPst, VPre, VAbv, VAbv,VMPst,VMPst,VMBlw,    B,VMPst, VBlw, VPst,  CGJ,  CGJ, VPst,VMAbv,VMAbv,
249    FMAbv, FAbv,CMAbv,FMAbv,VMAbv,FMAbv, VAbv,   IS,FMAbv,    B,FMAbv,    B,  CGJ,   WJ,  CGJ,   GB,
250    CMAbv,CMAbv,    B,   GB,    B, VAbv,  SUB, FPst, FPst,VMBlw, FPst, FPst, FBlw,VMAbv,FMBlw, VAbv,
251    VPre,    B, MPre, MBlw,  SUB, FAbv, FAbv, MAbv,  SUB,   Sk, VPst, VAbv,VMAbv,VMAbv, FAbv,CMAbv,
252    VPst,    H,    B,    O,SMAbv,SMAbv,SMAbv, VPst,   IS, VBlw, FAbv,VMPre,VMPre,FMAbv,CMBlw,VMBlw,
253    VMBlw,VMAbv,   CS,    O,FMAbv, ZWNJ,  CGJ,   WJ,   WJ,   WJ,    O,FMPst,    O,   SB,   SE,    O,
254    H, MPst, VPst,    H,VMAbv, VAbv,VMBlw,    B, VBlw, FPst, VPst, FAbv,VMPst,    B,CMAbv, VAbv,
255    MBlw, MPst, MBlw,    H,    O, VBlw, MPst, MPre, MAbv, MBlw,    O,    B, FAbv, FAbv, FPst, VBlw,
256    B,    B, VPre,    O,VMPst,   IS,    O,VMPst, VBlw, VPst,VMBlw,VMBlw,VMAbv,    O,   IS,VMBlw,
257    B,VMPst,VMAbv,VMPst,   CS,   CS,    B,    N,    N,    O,   HN, VPre, VBlw, VAbv,   IS,CMAbv,
258    O, VPst,    B,    R,    R,CMBlw, VAbv, VPre,VMAbv,VMAbv,    H, VAbv,CMBlw,VMPst,    O,VMAbv,
259    CMBlw,   IS,    R,FMAbv,    B,   CS,   CS,    H,CMBlw,VMPst,    H,VMPst, VAbv,VMAbv, VPst, MPst,
260    R, MPst,CMBlw,    B,FMBlw, VBlw,VMAbv,   CS,  SUB,  SUB,   GB, FBlw, FBlw,CMAbv,   IS, VBlw,
261    IS,    R, MBlw,   GB, VAbv,    R,VMPst,    G,    G,    J,    J,    J,   SB,   SE,    J,   HR,
262    G,    G,   HM,   HM,   HM,    G,    O, MPre, MPre, MPst,VMAbv, MBlw, VBlw,    O, VBlw,
263];
264
265const hb_use_u16: [u16; 856] =
266[
267    0,  0,  1,  2,  0,  3,  0,  3,  0,  0,  4,  5,  0,  6,  0,  0,
268    0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  0,  0,  0,
269    0,  0,  0,  0,  8,  0,  0,  0,  0,  0,  0,  0,  9, 10, 11, 12,
270    0,  0,  0,  0, 10, 13,  0,  0, 14, 10, 10, 15, 16, 17, 18, 19,
271    20, 21, 22, 23, 24, 25, 18, 26, 27, 21, 22, 28, 29, 30, 31, 32,
272    33, 34, 22, 35, 36,  0, 18, 37, 38, 21, 22, 39, 24, 40, 18, 41,
273    42, 43, 44, 45, 46, 47, 31,  0, 48, 49, 22, 50, 51, 52, 18,  0,
274    53, 49, 22, 54, 51, 55, 18, 56, 57, 49, 10, 58, 59, 60, 18,  0,
275    61, 62, 10, 63, 64, 65, 31, 66, 67, 68, 10, 69, 70, 10, 71, 72,
276    73, 74, 75, 76, 77,  0,  0,  0, 10, 10, 78, 79, 80, 81, 82, 83,
277    84, 85,  0,  0,  0,  0,  0,  0, 10, 86, 10, 87, 10, 88, 89, 90,
278    10, 10, 10, 91, 92, 93,  2,  0, 94,  0, 10, 10, 10, 10, 10, 95,
279    96, 10, 97,  0,  0,  0,  0,  0, 98, 99,100,101, 31, 10,102,103,
280    10, 10,104, 10,105,106,  0,  0, 10,107, 10, 10, 10,108,109,110,
281    2,  2,  0,  0,  0,  0,  0,  0,111, 10, 10,112,113,  2,114,115,
282    116, 10,117, 10, 10, 10,118,119, 10, 10,120,121,122,  0,  0,  0,
283    0,  0,  0,  0,  0,123,124,125,  0,  0,  0,  0,  0,  0,  0,126,
284    127,128,129,  0,  0,  0,130,131,132,  0,  0,  0,  0,  0,  0,133,
285    0,  0,  0,  0,134,  0,  0,  0,  0,  0,  0,  0,  0,  0,135,  0,
286    0,  0,  0, 10, 10, 10,136,137,  0,  0,138,  0,  0,  0,  0,  0,
287    139, 10,140,  0, 10, 10, 10,141,142, 10, 10,143,144,  2,145,146,
288    10, 10,147, 10,148,149,  0,  0,150, 10, 10,151,152,  2,153, 99,
289    10, 10,154,155,156,  2, 10,157, 10, 10, 10,158,159,  0,160,161,
290    0,  0,  0,  0, 10, 10,162,  2,163,  0,  0,  0,  0,  0,  0,  0,
291    0,  0,  0,  0,  0,  0,  0,164,  0,  0,  0,  0,  0,  0,  0,165,
292    0,  0,  0,  0,  0,  0,  0,166,166,167, 34,168,  0,  0,  0,  0,
293    169,170, 10,171, 95,  0,  0,  0,  0,  0,  0,  0, 70, 10,172,  0,
294    10,173,174,  0,  0,  0,  0,  0, 10, 10,175,  2,  9, 10,176, 10,
295    177,  0,  0,  0,  0,  0,  0,  0, 10, 10,178,173,  0,  0,  0,  0,
296    0,  0,  0, 10,179,180,  0, 10,181,  0,  0,182,183,  0,  0,  0,
297    184, 10, 10,185,186,187,188,189,190, 10, 10,191,192,  0,  0,  0,
298    193, 10,194,195,196, 10, 10,197,190, 10, 10,198,199,106,200,103,
299    10, 34,201,202,203,  0,  0,  0,204,205, 95, 10, 10,206,207,  2,
300    208, 21, 22,209,210,211,212,213,214, 10, 10,215,216,217,218,  0,
301    10, 10, 10,219,220,221,222,  0,200, 10, 10,223,224,  2,  0,  0,
302    10, 10,225,226,227,228,  0,  0, 10, 10, 10,229,230,  2,  0,  0,
303    10, 10,231,232,  2, 10,141,  0, 10,233,234,104,235,  0,  0,  0,
304    10, 10,236,237,  0,  0,  0,  0,238,239, 10,240,241,  2,  0,  0,
305    0,  0,242, 10, 10,243,244,  0,245, 10, 10,246,247,248, 10, 10,
306    249,250,  0,  0,  0,  0,  0,  0, 22, 10,225,251,  8, 10, 71, 19,
307    10,252, 74,253,  0,  0,  0,  0,254, 10, 10,255,256,  2,257, 10,
308    258,259,  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,260,
309    261, 49, 10,262,263,264,  0,  0,265,265,265,265,265,265,265,265,
310    265,265,265,266,267,268,265,265,265,265,265,265,265,265,265,269,
311    10,270,271,  2,  0,  0,  0,  0,  0,  0,  0,  0,  2,  0,  0,  0,
312    10, 10, 10,272,  0,  0,  0,  0,  0,  0,  0,  0,273, 10,274,  2,
313    10, 10, 10, 10,275,276,277,277,278,279,  0,  0,  0,  0,280,  0,
314    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,177,  0,281,
315    10, 10, 10, 10, 10, 10,106, 71, 95,282,  0,  0,  0,  0,  0,  0,
316    0,  0,  0,  0,  0,  0,  0,283, 10, 10, 71,284,285,  0,  0,  0,
317    0, 10,286,  0, 10, 10,287,  2,  0,  0,  0,  0,  0, 10,288,  2,
318    0,  0,  0,  0,  0, 10,289,106, 10, 10, 10, 10,290,  2,  0,  0,
319    130,130,130,130,130,130,130,130,163,163,163,163,163,163,163,163,
320    163,163,163,163,163,163,163,130,
321];
322
323fn hb_use_b4(a: &[u8], i: u32) -> u32 {
324    (a[i as usize>>1]>>((i&1u32)<<2)) as u32 & 15u32
325}
326
327pub(crate) fn hb_use_get_category(u: u32) -> u8 {
328    if u<921600 {
329        hb_use_u8[2953+(((hb_use_u8[625+(((hb_use_u16[((hb_use_u8[113+(((hb_use_b4(&hb_use_u8, u>>1>>3>>3>>5) as usize)<<5)+((u as usize>>1>>3>>3)&31usize))] as usize)<<3)+((u as usize>>1>>3)&7usize)])<<3) as usize +((u as usize>>1)&7usize))] as usize)<<1)+((u as usize)&1usize))]
330    } else {
331        O
332    }
333}