1 # include <stdio.h>
2
3 # include "ucdIntern.h"
4 # include "ucdBidiClass.h"
5
6 # define ET UCDbidi_ET
7 # define S UCDbidi_S
8 # define LRO UCDbidi_LRO
9 # define AL UCDbidi_AL
10 # define RLO UCDbidi_RLO
11 # define BN UCDbidi_BN
12 # define RLE UCDbidi_RLE
13 # define L UCDbidi_L
14 # define LRE UCDbidi_LRE
15 # define NSM UCDbidi_NSM
16 # define ON UCDbidi_ON
17 # define B UCDbidi_B
18 # define PDF UCDbidi_PDF
19 # define CS UCDbidi_CS
20 # define AN UCDbidi_AN
21 # define WS UCDbidi_WS
22 # define R UCDbidi_R
23 # define ES UCDbidi_ES
24 # define EN UCDbidi_EN
25
26 static const unsigned char UCD_BIDI_0000_000f[16]= {BN,BN,BN,BN,BN,BN,BN,BN,BN,S,B,S,WS,B,BN,BN,};
27 static const unsigned char UCD_BIDI_0010_001f[16]= {BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,B,B,B,S,};
28 static const unsigned char UCD_BIDI_0020_002f[16]= {WS,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS,};
29 static const unsigned char UCD_BIDI_0030_003f[16]= {EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,CS,ON,ON,ON,ON,ON,};
30 static const unsigned char UCD_BIDI_0040_004f[16]= {ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
31 static const unsigned char UCD_BIDI_0050_005f[16]= {L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,};
32 static const unsigned char UCD_BIDI_0070_007f[16]= {L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,BN,};
33 static const unsigned char UCD_BIDI_0080_008f[16]= {BN,BN,BN,BN,BN,B,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,};
34 static const unsigned char UCD_BIDI_0090_009f[16]= {BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,BN,};
35 static const unsigned char UCD_BIDI_00a0_00af[16]= {CS,ON,ET,ET,ET,ET,ON,ON,ON,ON,L,ON,ON,BN,ON,ON,};
36 static const unsigned char UCD_BIDI_00b0_00bf[16]= {ET,ET,EN,EN,ON,L,ON,ON,ON,EN,L,ON,ON,ON,ON,ON,};
37 static const unsigned char UCD_BIDI_00c0_00cf[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
38 static const unsigned char UCD_BIDI_00d0_00df[16]= {L,L,L,L,L,L,L,ON,L,L,L,L,L,L,L,L,};
39 static const unsigned char * const UCD_BIDI_0000_00ff[16]= {
40 UCD_BIDI_0000_000f,
41 UCD_BIDI_0010_001f,
42 UCD_BIDI_0020_002f,
43 UCD_BIDI_0030_003f,
44 UCD_BIDI_0040_004f,
45 UCD_BIDI_0050_005f,
46 UCD_BIDI_0040_004f, /* UCD_BIDI_0060_006f */
47 UCD_BIDI_0070_007f,
48 UCD_BIDI_0080_008f,
49 UCD_BIDI_0090_009f,
50 UCD_BIDI_00a0_00af,
51 UCD_BIDI_00b0_00bf,
52 UCD_BIDI_00c0_00cf,
53 UCD_BIDI_00d0_00df,
54 UCD_BIDI_00c0_00cf, /* UCD_BIDI_00e0_00ef */
55 UCD_BIDI_00d0_00df, /* UCD_BIDI_00f0_00ff */
56 };
57 static const unsigned char * const UCD_BIDI_0100_01ff[16]= {
58 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0100_010f */
59 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0110_011f */
60 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0120_012f */
61 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0130_013f */
62 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0140_014f */
63 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0150_015f */
64 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0160_016f */
65 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0170_017f */
66 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0180_018f */
67 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0190_019f */
68 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01a0_01af */
69 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01b0_01bf */
70 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01c0_01cf */
71 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01d0_01df */
72 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01e0_01ef */
73 UCD_BIDI_00c0_00cf, /* UCD_BIDI_01f0_01ff */
74 };
75 static const unsigned char UCD_BIDI_02b0_02bf[16]= {L,L,L,L,L,L,L,L,L,ON,ON,L,L,L,L,L,};
76 static const unsigned char UCD_BIDI_02c0_02cf[16]= {L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
77 static const unsigned char UCD_BIDI_02e0_02ef[16]= {L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,ON,};
78 static const unsigned char UCD_BIDI_02f0_02ff[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
79 static const unsigned char * const UCD_BIDI_0200_02ff[16]= {
80 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0200_020f */
81 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0210_021f */
82 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0220_022f */
83 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0230_023f */
84 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0240_024f */
85 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0250_025f */
86 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0260_026f */
87 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0270_027f */
88 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0280_028f */
89 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0290_029f */
90 UCD_BIDI_00c0_00cf, /* UCD_BIDI_02a0_02af */
91 UCD_BIDI_02b0_02bf,
92 UCD_BIDI_02c0_02cf,
93 UCD_BIDI_02c0_02cf, /* UCD_BIDI_02d0_02df */
94 UCD_BIDI_02e0_02ef,
95 UCD_BIDI_02f0_02ff,
96 };
97 static const unsigned char UCD_BIDI_0300_030f[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
98 static const unsigned char UCD_BIDI_0370_037f[16]= {L,L,L,L,ON,ON,L,L,ON,ON,L,L,L,L,ON,ON,};
99 static const unsigned char UCD_BIDI_0380_038f[16]= {ON,ON,ON,ON,ON,ON,L,ON,L,L,L,ON,L,ON,L,L,};
100 static const unsigned char UCD_BIDI_03a0_03af[16]= {L,L,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,};
101 static const unsigned char UCD_BIDI_03f0_03ff[16]= {L,L,L,L,L,L,ON,L,L,L,L,L,L,L,L,L,};
102 static const unsigned char * const UCD_BIDI_0300_03ff[16]= {
103 UCD_BIDI_0300_030f,
104 UCD_BIDI_0300_030f, /* UCD_BIDI_0310_031f */
105 UCD_BIDI_0300_030f, /* UCD_BIDI_0320_032f */
106 UCD_BIDI_0300_030f, /* UCD_BIDI_0330_033f */
107 UCD_BIDI_0300_030f, /* UCD_BIDI_0340_034f */
108 UCD_BIDI_0300_030f, /* UCD_BIDI_0350_035f */
109 UCD_BIDI_0300_030f, /* UCD_BIDI_0360_036f */
110 UCD_BIDI_0370_037f,
111 UCD_BIDI_0380_038f,
112 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0390_039f */
113 UCD_BIDI_03a0_03af,
114 UCD_BIDI_00c0_00cf, /* UCD_BIDI_03b0_03bf */
115 UCD_BIDI_00c0_00cf, /* UCD_BIDI_03c0_03cf */
116 UCD_BIDI_00c0_00cf, /* UCD_BIDI_03d0_03df */
117 UCD_BIDI_00c0_00cf, /* UCD_BIDI_03e0_03ef */
118 UCD_BIDI_03f0_03ff,
119 };
120 static const unsigned char UCD_BIDI_0480_048f[16]= {L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,L,L,L,L,};
121 static const unsigned char * const UCD_BIDI_0400_04ff[16]= {
122 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0400_040f */
123 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0410_041f */
124 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0420_042f */
125 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0430_043f */
126 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0440_044f */
127 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0450_045f */
128 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0460_046f */
129 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0470_047f */
130 UCD_BIDI_0480_048f,
131 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0490_049f */
132 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04a0_04af */
133 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04b0_04bf */
134 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04c0_04cf */
135 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04d0_04df */
136 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04e0_04ef */
137 UCD_BIDI_00c0_00cf, /* UCD_BIDI_04f0_04ff */
138 };
139 static const unsigned char UCD_BIDI_0520_052f[16]= {L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,};
140 static const unsigned char UCD_BIDI_0550_055f[16]= {L,L,L,L,L,L,L,ON,ON,L,L,L,L,L,L,L,};
141 static const unsigned char UCD_BIDI_0580_058f[16]= {L,L,L,L,L,L,L,L,ON,L,ON,ON,ON,ON,ON,ET,};
142 static const unsigned char UCD_BIDI_0590_059f[16]= {ON,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
143 static const unsigned char UCD_BIDI_05b0_05bf[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,R,NSM,};
144 static const unsigned char UCD_BIDI_05c0_05cf[16]= {R,NSM,NSM,R,NSM,NSM,R,NSM,ON,ON,ON,ON,ON,ON,ON,ON,};
145 static const unsigned char UCD_BIDI_05d0_05df[16]= {R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,};
146 static const unsigned char UCD_BIDI_05e0_05ef[16]= {R,R,R,R,R,R,R,R,R,R,R,ON,ON,ON,ON,ON,};
147 static const unsigned char UCD_BIDI_05f0_05ff[16]= {R,R,R,R,R,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
148 static const unsigned char * const UCD_BIDI_0500_05ff[16]= {
149 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0500_050f */
150 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0510_051f */
151 UCD_BIDI_0520_052f,
152 UCD_BIDI_0040_004f, /* UCD_BIDI_0530_053f */
153 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0540_054f */
154 UCD_BIDI_0550_055f,
155 UCD_BIDI_0040_004f, /* UCD_BIDI_0560_056f */
156 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0570_057f */
157 UCD_BIDI_0580_058f,
158 UCD_BIDI_0590_059f,
159 UCD_BIDI_0300_030f, /* UCD_BIDI_05a0_05af */
160 UCD_BIDI_05b0_05bf,
161 UCD_BIDI_05c0_05cf,
162 UCD_BIDI_05d0_05df,
163 UCD_BIDI_05e0_05ef,
164 UCD_BIDI_05f0_05ff,
165 };
166 static const unsigned char UCD_BIDI_0600_060f[16]= {AN,AN,AN,AN,AN,ON,ON,ON,AL,ET,ET,AL,CS,AL,ON,ON,};
167 static const unsigned char UCD_BIDI_0610_061f[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,AL,ON,ON,AL,AL,};
168 static const unsigned char UCD_BIDI_0620_062f[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
169 static const unsigned char UCD_BIDI_0640_064f[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,NSM,NSM,NSM,NSM,NSM,};
170 static const unsigned char UCD_BIDI_0660_066f[16]= {AN,AN,AN,AN,AN,AN,AN,AN,AN,AN,ET,AN,AN,AL,AL,AL,};
171 static const unsigned char UCD_BIDI_0670_067f[16]= {NSM,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
172 static const unsigned char UCD_BIDI_06d0_06df[16]= {AL,AL,AL,AL,AL,AL,NSM,NSM,NSM,NSM,NSM,NSM,NSM,AN,ON,NSM,};
173 static const unsigned char UCD_BIDI_06e0_06ef[16]= {NSM,NSM,NSM,NSM,NSM,AL,AL,NSM,NSM,ON,NSM,NSM,NSM,NSM,AL,AL,};
174 static const unsigned char UCD_BIDI_06f0_06ff[16]= {EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,AL,AL,AL,AL,AL,AL,};
175 static const unsigned char * const UCD_BIDI_0600_06ff[16]= {
176 UCD_BIDI_0600_060f,
177 UCD_BIDI_0610_061f,
178 UCD_BIDI_0620_062f,
179 UCD_BIDI_0620_062f, /* UCD_BIDI_0630_063f */
180 UCD_BIDI_0640_064f,
181 UCD_BIDI_0300_030f, /* UCD_BIDI_0650_065f */
182 UCD_BIDI_0660_066f,
183 UCD_BIDI_0670_067f,
184 UCD_BIDI_0620_062f, /* UCD_BIDI_0680_068f */
185 UCD_BIDI_0620_062f, /* UCD_BIDI_0690_069f */
186 UCD_BIDI_0620_062f, /* UCD_BIDI_06a0_06af */
187 UCD_BIDI_0620_062f, /* UCD_BIDI_06b0_06bf */
188 UCD_BIDI_0620_062f, /* UCD_BIDI_06c0_06cf */
189 UCD_BIDI_06d0_06df,
190 UCD_BIDI_06e0_06ef,
191 UCD_BIDI_06f0_06ff,
192 };
193 static const unsigned char UCD_BIDI_0700_070f[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,ON,AL,};
194 static const unsigned char UCD_BIDI_0710_071f[16]= {AL,NSM,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
195 static const unsigned char UCD_BIDI_0740_074f[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,AL,AL,AL,};
196 static const unsigned char UCD_BIDI_07a0_07af[16]= {AL,AL,AL,AL,AL,AL,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
197 static const unsigned char UCD_BIDI_07b0_07bf[16]= {NSM,AL,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
198 static const unsigned char UCD_BIDI_07e0_07ef[16]= {R,R,R,R,R,R,R,R,R,R,R,NSM,NSM,NSM,NSM,NSM,};
199 static const unsigned char UCD_BIDI_07f0_07ff[16]= {NSM,NSM,NSM,NSM,R,R,ON,ON,ON,ON,R,ON,ON,ON,ON,ON,};
200 static const unsigned char * const UCD_BIDI_0700_07ff[16]= {
201 UCD_BIDI_0700_070f,
202 UCD_BIDI_0710_071f,
203 UCD_BIDI_0620_062f, /* UCD_BIDI_0720_072f */
204 UCD_BIDI_0300_030f, /* UCD_BIDI_0730_073f */
205 UCD_BIDI_0740_074f,
206 UCD_BIDI_0620_062f, /* UCD_BIDI_0750_075f */
207 UCD_BIDI_0620_062f, /* UCD_BIDI_0760_076f */
208 UCD_BIDI_0620_062f, /* UCD_BIDI_0770_077f */
209 UCD_BIDI_0620_062f, /* UCD_BIDI_0780_078f */
210 UCD_BIDI_0620_062f, /* UCD_BIDI_0790_079f */
211 UCD_BIDI_07a0_07af,
212 UCD_BIDI_07b0_07bf,
213 UCD_BIDI_05d0_05df, /* UCD_BIDI_07c0_07cf */
214 UCD_BIDI_05d0_05df, /* UCD_BIDI_07d0_07df */
215 UCD_BIDI_07e0_07ef,
216 UCD_BIDI_07f0_07ff,
217 };
218 static const unsigned char UCD_BIDI_0810_081f[16]= {R,R,R,R,R,R,NSM,NSM,NSM,NSM,R,NSM,NSM,NSM,NSM,NSM,};
219 static const unsigned char UCD_BIDI_0820_082f[16]= {NSM,NSM,NSM,NSM,R,NSM,NSM,NSM,R,NSM,NSM,NSM,NSM,NSM,ON,ON,};
220 static const unsigned char UCD_BIDI_0830_083f[16]= {R,R,R,R,R,R,R,R,R,R,R,R,R,R,R,ON,};
221 static const unsigned char UCD_BIDI_0850_085f[16]= {R,R,R,R,R,R,R,R,R,NSM,NSM,NSM,ON,ON,R,ON,};
222 static const unsigned char UCD_BIDI_08a0_08af[16]= {AL,ON,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,ON,ON,ON,};
223 static const unsigned char UCD_BIDI_08e0_08ef[16]= {ON,ON,ON,ON,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
224 static const unsigned char UCD_BIDI_08f0_08ff[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,};
225 static const unsigned char * const UCD_BIDI_0800_08ff[16]= {
226 UCD_BIDI_05d0_05df, /* UCD_BIDI_0800_080f */
227 UCD_BIDI_0810_081f,
228 UCD_BIDI_0820_082f,
229 UCD_BIDI_0830_083f,
230 UCD_BIDI_05d0_05df, /* UCD_BIDI_0840_084f */
231 UCD_BIDI_0850_085f,
232 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0860_086f */
233 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0870_087f */
234 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0880_088f */
235 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0890_089f */
236 UCD_BIDI_08a0_08af,
237 UCD_BIDI_02f0_02ff, /* UCD_BIDI_08b0_08bf */
238 UCD_BIDI_02f0_02ff, /* UCD_BIDI_08c0_08cf */
239 UCD_BIDI_02f0_02ff, /* UCD_BIDI_08d0_08df */
240 UCD_BIDI_08e0_08ef,
241 UCD_BIDI_08f0_08ff,
242 };
243 static const unsigned char UCD_BIDI_0900_090f[16]= {NSM,NSM,NSM,L,L,L,L,L,L,L,L,L,L,L,L,L,};
244 static const unsigned char UCD_BIDI_0930_093f[16]= {L,L,L,L,L,L,L,L,L,L,NSM,L,NSM,L,L,L,};
245 static const unsigned char UCD_BIDI_0940_094f[16]= {L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,L,L,NSM,L,L,};
246 static const unsigned char UCD_BIDI_0950_095f[16]= {L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,L,L,L,L,L,L,};
247 static const unsigned char UCD_BIDI_0960_096f[16]= {L,L,NSM,NSM,L,L,L,L,L,L,L,L,L,L,L,L,};
248 static const unsigned char UCD_BIDI_0970_097f[16]= {L,L,L,L,L,L,L,L,ON,L,L,L,L,L,L,L,};
249 static const unsigned char UCD_BIDI_0980_098f[16]= {ON,NSM,L,L,ON,L,L,L,L,L,L,L,L,ON,ON,L,};
250 static const unsigned char UCD_BIDI_0990_099f[16]= {L,ON,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,};
251 static const unsigned char UCD_BIDI_09a0_09af[16]= {L,L,L,L,L,L,L,L,L,ON,L,L,L,L,L,L,};
252 static const unsigned char UCD_BIDI_09b0_09bf[16]= {L,ON,L,ON,ON,ON,L,L,L,L,ON,ON,NSM,L,L,L,};
253 static const unsigned char UCD_BIDI_09c0_09cf[16]= {L,NSM,NSM,NSM,NSM,ON,ON,L,L,ON,ON,L,L,NSM,L,ON,};
254 static const unsigned char UCD_BIDI_09d0_09df[16]= {ON,ON,ON,ON,ON,ON,ON,L,ON,ON,ON,ON,L,L,ON,L,};
255 static const unsigned char UCD_BIDI_09e0_09ef[16]= {L,L,NSM,NSM,ON,ON,L,L,L,L,L,L,L,L,L,L,};
256 static const unsigned char UCD_BIDI_09f0_09ff[16]= {L,L,ET,ET,L,L,L,L,L,L,L,ET,ON,ON,ON,ON,};
257 static const unsigned char * const UCD_BIDI_0900_09ff[16]= {
258 UCD_BIDI_0900_090f,
259 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0910_091f */
260 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0920_092f */
261 UCD_BIDI_0930_093f,
262 UCD_BIDI_0940_094f,
263 UCD_BIDI_0950_095f,
264 UCD_BIDI_0960_096f,
265 UCD_BIDI_0970_097f,
266 UCD_BIDI_0980_098f,
267 UCD_BIDI_0990_099f,
268 UCD_BIDI_09a0_09af,
269 UCD_BIDI_09b0_09bf,
270 UCD_BIDI_09c0_09cf,
271 UCD_BIDI_09d0_09df,
272 UCD_BIDI_09e0_09ef,
273 UCD_BIDI_09f0_09ff,
274 };
275 static const unsigned char UCD_BIDI_0a00_0a0f[16]= {ON,NSM,NSM,L,ON,L,L,L,L,L,L,ON,ON,ON,ON,L,};
276 static const unsigned char UCD_BIDI_0a30_0a3f[16]= {L,ON,L,L,ON,L,L,ON,L,L,ON,ON,NSM,ON,L,L,};
277 static const unsigned char UCD_BIDI_0a40_0a4f[16]= {L,NSM,NSM,ON,ON,ON,ON,NSM,NSM,ON,ON,NSM,NSM,NSM,ON,ON,};
278 static const unsigned char UCD_BIDI_0a50_0a5f[16]= {ON,NSM,ON,ON,ON,ON,ON,ON,ON,L,L,L,L,ON,L,ON,};
279 static const unsigned char UCD_BIDI_0a60_0a6f[16]= {ON,ON,ON,ON,ON,ON,L,L,L,L,L,L,L,L,L,L,};
280 static const unsigned char UCD_BIDI_0a70_0a7f[16]= {NSM,NSM,L,L,L,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
281 static const unsigned char UCD_BIDI_0a80_0a8f[16]= {ON,NSM,NSM,L,ON,L,L,L,L,L,L,L,L,L,ON,L,};
282 static const unsigned char UCD_BIDI_0ab0_0abf[16]= {L,ON,L,L,ON,L,L,L,L,L,ON,ON,NSM,L,L,L,};
283 static const unsigned char UCD_BIDI_0ac0_0acf[16]= {L,NSM,NSM,NSM,NSM,NSM,ON,NSM,NSM,L,ON,L,L,NSM,ON,ON,};
284 static const unsigned char UCD_BIDI_0ad0_0adf[16]= {L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
285 static const unsigned char UCD_BIDI_0af0_0aff[16]= {L,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
286 static const unsigned char * const UCD_BIDI_0a00_0aff[16]= {
287 UCD_BIDI_0a00_0a0f,
288 UCD_BIDI_0990_099f, /* UCD_BIDI_0a10_0a1f */
289 UCD_BIDI_09a0_09af, /* UCD_BIDI_0a20_0a2f */
290 UCD_BIDI_0a30_0a3f,
291 UCD_BIDI_0a40_0a4f,
292 UCD_BIDI_0a50_0a5f,
293 UCD_BIDI_0a60_0a6f,
294 UCD_BIDI_0a70_0a7f,
295 UCD_BIDI_0a80_0a8f,
296 UCD_BIDI_03a0_03af, /* UCD_BIDI_0a90_0a9f */
297 UCD_BIDI_09a0_09af, /* UCD_BIDI_0aa0_0aaf */
298 UCD_BIDI_0ab0_0abf,
299 UCD_BIDI_0ac0_0acf,
300 UCD_BIDI_0ad0_0adf,
301 UCD_BIDI_09e0_09ef, /* UCD_BIDI_0ae0_0aef */
302 UCD_BIDI_0af0_0aff,
303 };
304 static const unsigned char UCD_BIDI_0b30_0b3f[16]= {L,ON,L,L,ON,L,L,L,L,L,ON,ON,NSM,L,L,NSM,};
305 static const unsigned char UCD_BIDI_0b40_0b4f[16]= {L,NSM,NSM,NSM,NSM,ON,ON,L,L,ON,ON,L,L,NSM,ON,ON,};
306 static const unsigned char UCD_BIDI_0b50_0b5f[16]= {ON,ON,ON,ON,ON,ON,NSM,L,ON,ON,ON,ON,L,L,ON,L,};
307 static const unsigned char UCD_BIDI_0b80_0b8f[16]= {ON,ON,NSM,L,ON,L,L,L,L,L,L,ON,ON,ON,L,L,};
308 static const unsigned char UCD_BIDI_0b90_0b9f[16]= {L,ON,L,L,L,L,ON,ON,ON,L,L,ON,L,ON,L,L,};
309 static const unsigned char UCD_BIDI_0ba0_0baf[16]= {ON,ON,ON,L,L,ON,ON,ON,L,L,L,ON,ON,ON,L,L,};
310 static const unsigned char UCD_BIDI_0bb0_0bbf[16]= {L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,L,L,};
311 static const unsigned char UCD_BIDI_0bc0_0bcf[16]= {NSM,L,L,ON,ON,ON,L,L,L,ON,L,L,L,NSM,ON,ON,};
312 static const unsigned char UCD_BIDI_0bd0_0bdf[16]= {L,ON,ON,ON,ON,ON,ON,L,ON,ON,ON,ON,ON,ON,ON,ON,};
313 static const unsigned char UCD_BIDI_0bf0_0bff[16]= {L,L,L,ON,ON,ON,ON,ON,ON,ET,ON,ON,ON,ON,ON,ON,};
314 static const unsigned char * const UCD_BIDI_0b00_0bff[16]= {
315 UCD_BIDI_0980_098f, /* UCD_BIDI_0b00_0b0f */
316 UCD_BIDI_0990_099f, /* UCD_BIDI_0b10_0b1f */
317 UCD_BIDI_09a0_09af, /* UCD_BIDI_0b20_0b2f */
318 UCD_BIDI_0b30_0b3f,
319 UCD_BIDI_0b40_0b4f,
320 UCD_BIDI_0b50_0b5f,
321 UCD_BIDI_09e0_09ef, /* UCD_BIDI_0b60_0b6f */
322 UCD_BIDI_0520_052f, /* UCD_BIDI_0b70_0b7f */
323 UCD_BIDI_0b80_0b8f,
324 UCD_BIDI_0b90_0b9f,
325 UCD_BIDI_0ba0_0baf,
326 UCD_BIDI_0bb0_0bbf,
327 UCD_BIDI_0bc0_0bcf,
328 UCD_BIDI_0bd0_0bdf,
329 UCD_BIDI_0a60_0a6f, /* UCD_BIDI_0be0_0bef */
330 UCD_BIDI_0bf0_0bff,
331 };
332 static const unsigned char UCD_BIDI_0c00_0c0f[16]= {ON,L,L,L,ON,L,L,L,L,L,L,L,L,ON,L,L,};
333 static const unsigned char UCD_BIDI_0c10_0c1f[16]= {L,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
334 static const unsigned char UCD_BIDI_0c30_0c3f[16]= {L,L,L,L,ON,L,L,L,L,L,ON,ON,ON,L,NSM,NSM,};
335 static const unsigned char UCD_BIDI_0c40_0c4f[16]= {NSM,L,L,L,L,ON,NSM,NSM,NSM,ON,NSM,NSM,NSM,NSM,ON,ON,};
336 static const unsigned char UCD_BIDI_0c50_0c5f[16]= {ON,ON,ON,ON,ON,NSM,NSM,ON,L,L,ON,ON,ON,ON,ON,ON,};
337 static const unsigned char UCD_BIDI_0c70_0c7f[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,};
338 static const unsigned char UCD_BIDI_0c80_0c8f[16]= {ON,ON,L,L,ON,L,L,L,L,L,L,L,L,ON,L,L,};
339 static const unsigned char UCD_BIDI_0cb0_0cbf[16]= {L,L,L,L,ON,L,L,L,L,L,ON,ON,NSM,L,L,L,};
340 static const unsigned char UCD_BIDI_0cc0_0ccf[16]= {L,L,L,L,L,ON,L,L,L,ON,L,L,NSM,NSM,ON,ON,};
341 static const unsigned char UCD_BIDI_0cd0_0cdf[16]= {ON,ON,ON,ON,ON,L,L,ON,ON,ON,ON,ON,ON,ON,L,ON,};
342 static const unsigned char UCD_BIDI_0cf0_0cff[16]= {ON,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
343 static const unsigned char * const UCD_BIDI_0c00_0cff[16]= {
344 UCD_BIDI_0c00_0c0f,
345 UCD_BIDI_0c10_0c1f,
346 UCD_BIDI_09a0_09af, /* UCD_BIDI_0c20_0c2f */
347 UCD_BIDI_0c30_0c3f,
348 UCD_BIDI_0c40_0c4f,
349 UCD_BIDI_0c50_0c5f,
350 UCD_BIDI_09e0_09ef, /* UCD_BIDI_0c60_0c6f */
351 UCD_BIDI_0c70_0c7f,
352 UCD_BIDI_0c80_0c8f,
353 UCD_BIDI_0c10_0c1f, /* UCD_BIDI_0c90_0c9f */
354 UCD_BIDI_09a0_09af, /* UCD_BIDI_0ca0_0caf */
355 UCD_BIDI_0cb0_0cbf,
356 UCD_BIDI_0cc0_0ccf,
357 UCD_BIDI_0cd0_0cdf,
358 UCD_BIDI_09e0_09ef, /* UCD_BIDI_0ce0_0cef */
359 UCD_BIDI_0cf0_0cff,
360 };
361 static const unsigned char UCD_BIDI_0d30_0d3f[16]= {L,L,L,L,L,L,L,L,L,L,L,ON,ON,L,L,L,};
362 static const unsigned char UCD_BIDI_0d40_0d4f[16]= {L,NSM,NSM,NSM,NSM,ON,L,L,L,ON,L,L,L,NSM,L,ON,};
363 static const unsigned char UCD_BIDI_0d50_0d5f[16]= {ON,ON,ON,ON,ON,ON,ON,L,ON,ON,ON,ON,ON,ON,ON,ON,};
364 static const unsigned char UCD_BIDI_0d70_0d7f[16]= {L,L,L,L,L,L,ON,ON,ON,L,L,L,L,L,L,L,};
365 static const unsigned char UCD_BIDI_0d80_0d8f[16]= {ON,ON,L,L,ON,L,L,L,L,L,L,L,L,L,L,L,};
366 static const unsigned char UCD_BIDI_0d90_0d9f[16]= {L,L,L,L,L,L,L,ON,ON,ON,L,L,L,L,L,L,};
367 static const unsigned char UCD_BIDI_0db0_0dbf[16]= {L,L,ON,L,L,L,L,L,L,L,L,L,ON,L,ON,ON,};
368 static const unsigned char UCD_BIDI_0dc0_0dcf[16]= {L,L,L,L,L,L,L,ON,ON,ON,NSM,ON,ON,ON,ON,L,};
369 static const unsigned char UCD_BIDI_0dd0_0ddf[16]= {L,L,NSM,NSM,NSM,ON,NSM,ON,L,L,L,L,L,L,L,L,};
370 static const unsigned char UCD_BIDI_0df0_0dff[16]= {ON,ON,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
371 static const unsigned char * const UCD_BIDI_0d00_0dff[16]= {
372 UCD_BIDI_0c80_0c8f, /* UCD_BIDI_0d00_0d0f */
373 UCD_BIDI_0c10_0c1f, /* UCD_BIDI_0d10_0d1f */
374 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0d20_0d2f */
375 UCD_BIDI_0d30_0d3f,
376 UCD_BIDI_0d40_0d4f,
377 UCD_BIDI_0d50_0d5f,
378 UCD_BIDI_09e0_09ef, /* UCD_BIDI_0d60_0d6f */
379 UCD_BIDI_0d70_0d7f,
380 UCD_BIDI_0d80_0d8f,
381 UCD_BIDI_0d90_0d9f,
382 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0da0_0daf */
383 UCD_BIDI_0db0_0dbf,
384 UCD_BIDI_0dc0_0dcf,
385 UCD_BIDI_0dd0_0ddf,
386 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0de0_0def */
387 UCD_BIDI_0df0_0dff,
388 };
389 static const unsigned char UCD_BIDI_0e30_0e3f[16]= {L,NSM,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,ON,ON,ET,};
390 static const unsigned char UCD_BIDI_0e40_0e4f[16]= {L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,};
391 static const unsigned char UCD_BIDI_0e50_0e5f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,};
392 static const unsigned char UCD_BIDI_0e80_0e8f[16]= {ON,L,L,ON,L,ON,ON,L,L,ON,L,ON,ON,L,ON,ON,};
393 static const unsigned char UCD_BIDI_0e90_0e9f[16]= {ON,ON,ON,ON,L,L,L,L,ON,L,L,L,L,L,L,L,};
394 static const unsigned char UCD_BIDI_0ea0_0eaf[16]= {ON,L,L,L,ON,L,ON,L,ON,ON,L,L,ON,L,L,L,};
395 static const unsigned char UCD_BIDI_0eb0_0ebf[16]= {L,NSM,L,L,NSM,NSM,NSM,NSM,NSM,NSM,ON,NSM,NSM,L,ON,ON,};
396 static const unsigned char UCD_BIDI_0ec0_0ecf[16]= {L,L,L,L,L,ON,L,ON,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,};
397 static const unsigned char UCD_BIDI_0ed0_0edf[16]= {L,L,L,L,L,L,L,L,L,L,ON,ON,L,L,L,L,};
398 static const unsigned char * const UCD_BIDI_0e00_0eff[16]= {
399 UCD_BIDI_0040_004f, /* UCD_BIDI_0e00_0e0f */
400 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0e10_0e1f */
401 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0e20_0e2f */
402 UCD_BIDI_0e30_0e3f,
403 UCD_BIDI_0e40_0e4f,
404 UCD_BIDI_0e50_0e5f,
405 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0e60_0e6f */
406 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0e70_0e7f */
407 UCD_BIDI_0e80_0e8f,
408 UCD_BIDI_0e90_0e9f,
409 UCD_BIDI_0ea0_0eaf,
410 UCD_BIDI_0eb0_0ebf,
411 UCD_BIDI_0ec0_0ecf,
412 UCD_BIDI_0ed0_0edf,
413 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0ee0_0eef */
414 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0ef0_0eff */
415 };
416 static const unsigned char UCD_BIDI_0f10_0f1f[16]= {L,L,L,L,L,L,L,L,NSM,NSM,L,L,L,L,L,L,};
417 static const unsigned char UCD_BIDI_0f30_0f3f[16]= {L,L,L,L,L,NSM,L,NSM,L,NSM,ON,ON,ON,ON,L,L,};
418 static const unsigned char UCD_BIDI_0f60_0f6f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,};
419 static const unsigned char UCD_BIDI_0f70_0f7f[16]= {ON,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,};
420 static const unsigned char UCD_BIDI_0f80_0f8f[16]= {NSM,NSM,NSM,NSM,NSM,L,NSM,NSM,L,L,L,L,L,NSM,NSM,NSM,};
421 static const unsigned char UCD_BIDI_0f90_0f9f[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
422 static const unsigned char UCD_BIDI_0fb0_0fbf[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,L,L,};
423 static const unsigned char UCD_BIDI_0fc0_0fcf[16]= {L,L,L,L,L,L,NSM,L,L,L,L,L,L,ON,L,L,};
424 static const unsigned char * const UCD_BIDI_0f00_0fff[16]= {
425 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0f00_0f0f */
426 UCD_BIDI_0f10_0f1f,
427 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0f20_0f2f */
428 UCD_BIDI_0f30_0f3f,
429 UCD_BIDI_0970_097f, /* UCD_BIDI_0f40_0f4f */
430 UCD_BIDI_00c0_00cf, /* UCD_BIDI_0f50_0f5f */
431 UCD_BIDI_0f60_0f6f,
432 UCD_BIDI_0f70_0f7f,
433 UCD_BIDI_0f80_0f8f,
434 UCD_BIDI_0f90_0f9f,
435 UCD_BIDI_0300_030f, /* UCD_BIDI_0fa0_0faf */
436 UCD_BIDI_0fb0_0fbf,
437 UCD_BIDI_0fc0_0fcf,
438 UCD_BIDI_0050_005f, /* UCD_BIDI_0fd0_0fdf */
439 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0fe0_0fef */
440 UCD_BIDI_02f0_02ff, /* UCD_BIDI_0ff0_0fff */
441 };
442 static const unsigned char * const * const UCD_BIDI_0000_0fff[16]= {
443 UCD_BIDI_0000_00ff,
444 UCD_BIDI_0100_01ff,
445 UCD_BIDI_0200_02ff,
446 UCD_BIDI_0300_03ff,
447 UCD_BIDI_0400_04ff,
448 UCD_BIDI_0500_05ff,
449 UCD_BIDI_0600_06ff,
450 UCD_BIDI_0700_07ff,
451 UCD_BIDI_0800_08ff,
452 UCD_BIDI_0900_09ff,
453 UCD_BIDI_0a00_0aff,
454 UCD_BIDI_0b00_0bff,
455 UCD_BIDI_0c00_0cff,
456 UCD_BIDI_0d00_0dff,
457 UCD_BIDI_0e00_0eff,
458 UCD_BIDI_0f00_0fff,
459 };
460 static const unsigned char UCD_BIDI_1020_102f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,NSM,NSM,NSM,};
461 static const unsigned char UCD_BIDI_1030_103f[16]= {NSM,L,NSM,NSM,NSM,NSM,NSM,NSM,L,NSM,NSM,L,L,NSM,NSM,L,};
462 static const unsigned char UCD_BIDI_1050_105f[16]= {L,L,L,L,L,L,L,L,NSM,NSM,L,L,L,L,NSM,NSM,};
463 static const unsigned char UCD_BIDI_1060_106f[16]= {NSM,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
464 static const unsigned char UCD_BIDI_1070_107f[16]= {L,NSM,NSM,NSM,NSM,L,L,L,L,L,L,L,L,L,L,L,};
465 static const unsigned char UCD_BIDI_1080_108f[16]= {L,L,NSM,L,L,NSM,NSM,L,L,L,L,L,L,NSM,L,L,};
466 static const unsigned char UCD_BIDI_1090_109f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,NSM,L,L,};
467 static const unsigned char UCD_BIDI_10c0_10cf[16]= {L,L,L,L,L,L,ON,L,ON,ON,ON,ON,ON,L,ON,ON,};
468 static const unsigned char * const UCD_BIDI_1000_10ff[16]= {
469 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1000_100f */
470 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1010_101f */
471 UCD_BIDI_1020_102f,
472 UCD_BIDI_1030_103f,
473 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1040_104f */
474 UCD_BIDI_1050_105f,
475 UCD_BIDI_1060_106f,
476 UCD_BIDI_1070_107f,
477 UCD_BIDI_1080_108f,
478 UCD_BIDI_1090_109f,
479 UCD_BIDI_00c0_00cf, /* UCD_BIDI_10a0_10af */
480 UCD_BIDI_00c0_00cf, /* UCD_BIDI_10b0_10bf */
481 UCD_BIDI_10c0_10cf,
482 UCD_BIDI_00c0_00cf, /* UCD_BIDI_10d0_10df */
483 UCD_BIDI_00c0_00cf, /* UCD_BIDI_10e0_10ef */
484 UCD_BIDI_00c0_00cf, /* UCD_BIDI_10f0_10ff */
485 };
486 static const unsigned char UCD_BIDI_1240_124f[16]= {L,L,L,L,L,L,L,L,L,ON,L,L,L,L,ON,ON,};
487 static const unsigned char UCD_BIDI_1250_125f[16]= {L,L,L,L,L,L,L,ON,L,ON,L,L,L,L,ON,ON,};
488 static const unsigned char UCD_BIDI_12b0_12bf[16]= {L,ON,L,L,L,L,ON,ON,L,L,L,L,L,L,L,ON,};
489 static const unsigned char UCD_BIDI_12c0_12cf[16]= {L,ON,L,L,L,L,ON,ON,L,L,L,L,L,L,L,L,};
490 static const unsigned char * const UCD_BIDI_1200_12ff[16]= {
491 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1200_120f */
492 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1210_121f */
493 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1220_122f */
494 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1230_123f */
495 UCD_BIDI_1240_124f,
496 UCD_BIDI_1250_125f,
497 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1260_126f */
498 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1270_127f */
499 UCD_BIDI_1240_124f, /* UCD_BIDI_1280_128f */
500 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1290_129f */
501 UCD_BIDI_00c0_00cf, /* UCD_BIDI_12a0_12af */
502 UCD_BIDI_12b0_12bf,
503 UCD_BIDI_12c0_12cf,
504 UCD_BIDI_00d0_00df, /* UCD_BIDI_12d0_12df */
505 UCD_BIDI_00c0_00cf, /* UCD_BIDI_12e0_12ef */
506 UCD_BIDI_00c0_00cf, /* UCD_BIDI_12f0_12ff */
507 };
508 static const unsigned char UCD_BIDI_1350_135f[16]= {L,L,L,L,L,L,L,L,L,L,L,ON,ON,NSM,NSM,NSM,};
509 static const unsigned char UCD_BIDI_13f0_13ff[16]= {L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
510 static const unsigned char * const UCD_BIDI_1300_13ff[16]= {
511 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1300_130f */
512 UCD_BIDI_12c0_12cf, /* UCD_BIDI_1310_131f */
513 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1320_132f */
514 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1330_133f */
515 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1340_134f */
516 UCD_BIDI_1350_135f,
517 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1360_136f */
518 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_1370_137f */
519 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1380_138f */
520 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1390_139f */
521 UCD_BIDI_00c0_00cf, /* UCD_BIDI_13a0_13af */
522 UCD_BIDI_00c0_00cf, /* UCD_BIDI_13b0_13bf */
523 UCD_BIDI_00c0_00cf, /* UCD_BIDI_13c0_13cf */
524 UCD_BIDI_00c0_00cf, /* UCD_BIDI_13d0_13df */
525 UCD_BIDI_00c0_00cf, /* UCD_BIDI_13e0_13ef */
526 UCD_BIDI_13f0_13ff,
527 };
528 static const unsigned char * const UCD_BIDI_1400_14ff[16]= {
529 UCD_BIDI_0040_004f, /* UCD_BIDI_1400_140f */
530 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1410_141f */
531 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1420_142f */
532 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1430_143f */
533 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1440_144f */
534 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1450_145f */
535 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1460_146f */
536 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1470_147f */
537 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1480_148f */
538 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1490_149f */
539 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14a0_14af */
540 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14b0_14bf */
541 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14c0_14cf */
542 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14d0_14df */
543 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14e0_14ef */
544 UCD_BIDI_00c0_00cf, /* UCD_BIDI_14f0_14ff */
545 };
546 static const unsigned char UCD_BIDI_1680_168f[16]= {WS,L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
547 static const unsigned char * const UCD_BIDI_1600_16ff[16]= {
548 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1600_160f */
549 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1610_161f */
550 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1620_162f */
551 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1630_163f */
552 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1640_164f */
553 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1650_165f */
554 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1660_166f */
555 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1670_167f */
556 UCD_BIDI_1680_168f,
557 UCD_BIDI_0050_005f, /* UCD_BIDI_1690_169f */
558 UCD_BIDI_00c0_00cf, /* UCD_BIDI_16a0_16af */
559 UCD_BIDI_00c0_00cf, /* UCD_BIDI_16b0_16bf */
560 UCD_BIDI_00c0_00cf, /* UCD_BIDI_16c0_16cf */
561 UCD_BIDI_00c0_00cf, /* UCD_BIDI_16d0_16df */
562 UCD_BIDI_00c0_00cf, /* UCD_BIDI_16e0_16ef */
563 UCD_BIDI_0ad0_0adf, /* UCD_BIDI_16f0_16ff */
564 };
565 static const unsigned char UCD_BIDI_1700_170f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,ON,L,L,};
566 static const unsigned char UCD_BIDI_1710_171f[16]= {L,L,NSM,NSM,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
567 static const unsigned char UCD_BIDI_1730_173f[16]= {L,L,NSM,NSM,NSM,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
568 static const unsigned char UCD_BIDI_1750_175f[16]= {L,L,NSM,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
569 static const unsigned char UCD_BIDI_1770_177f[16]= {L,ON,NSM,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
570 static const unsigned char UCD_BIDI_17b0_17bf[16]= {L,L,L,L,NSM,NSM,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,};
571 static const unsigned char UCD_BIDI_17c0_17cf[16]= {L,L,L,L,L,L,NSM,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
572 static const unsigned char UCD_BIDI_17d0_17df[16]= {NSM,NSM,NSM,NSM,L,L,L,L,L,L,L,ET,L,NSM,ON,ON,};
573 static const unsigned char UCD_BIDI_17e0_17ef[16]= {L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,};
574 static const unsigned char * const UCD_BIDI_1700_17ff[16]= {
575 UCD_BIDI_1700_170f,
576 UCD_BIDI_1710_171f,
577 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1720_172f */
578 UCD_BIDI_1730_173f,
579 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1740_174f */
580 UCD_BIDI_1750_175f,
581 UCD_BIDI_1700_170f, /* UCD_BIDI_1760_176f */
582 UCD_BIDI_1770_177f,
583 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1780_178f */
584 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1790_179f */
585 UCD_BIDI_00c0_00cf, /* UCD_BIDI_17a0_17af */
586 UCD_BIDI_17b0_17bf,
587 UCD_BIDI_17c0_17cf,
588 UCD_BIDI_17d0_17df,
589 UCD_BIDI_17e0_17ef,
590 UCD_BIDI_02f0_02ff, /* UCD_BIDI_17f0_17ff */
591 };
592 static const unsigned char UCD_BIDI_1800_180f[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,NSM,NSM,NSM,WS,ON,};
593 static const unsigned char UCD_BIDI_18a0_18af[16]= {L,L,L,L,L,L,L,L,L,NSM,L,ON,ON,ON,ON,ON,};
594 static const unsigned char UCD_BIDI_18f0_18ff[16]= {L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
595 static const unsigned char * const UCD_BIDI_1800_18ff[16]= {
596 UCD_BIDI_1800_180f,
597 UCD_BIDI_17e0_17ef, /* UCD_BIDI_1810_181f */
598 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1820_182f */
599 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1830_183f */
600 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1840_184f */
601 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1850_185f */
602 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1860_186f */
603 UCD_BIDI_0520_052f, /* UCD_BIDI_1870_187f */
604 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1880_188f */
605 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1890_189f */
606 UCD_BIDI_18a0_18af,
607 UCD_BIDI_00c0_00cf, /* UCD_BIDI_18b0_18bf */
608 UCD_BIDI_00c0_00cf, /* UCD_BIDI_18c0_18cf */
609 UCD_BIDI_00c0_00cf, /* UCD_BIDI_18d0_18df */
610 UCD_BIDI_00c0_00cf, /* UCD_BIDI_18e0_18ef */
611 UCD_BIDI_18f0_18ff,
612 };
613 static const unsigned char UCD_BIDI_1920_192f[16]= {NSM,NSM,NSM,L,L,L,L,NSM,NSM,L,L,L,ON,ON,ON,ON,};
614 static const unsigned char UCD_BIDI_1930_193f[16]= {L,L,NSM,L,L,L,L,L,L,NSM,NSM,NSM,ON,ON,ON,ON,};
615 static const unsigned char UCD_BIDI_1960_196f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,};
616 static const unsigned char * const UCD_BIDI_1900_19ff[16]= {
617 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1900_190f */
618 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_1910_191f */
619 UCD_BIDI_1920_192f,
620 UCD_BIDI_1930_193f,
621 UCD_BIDI_0a60_0a6f, /* UCD_BIDI_1940_194f */
622 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1950_195f */
623 UCD_BIDI_1960_196f,
624 UCD_BIDI_13f0_13ff, /* UCD_BIDI_1970_197f */
625 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1980_198f */
626 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1990_199f */
627 UCD_BIDI_0e50_0e5f, /* UCD_BIDI_19a0_19af */
628 UCD_BIDI_00c0_00cf, /* UCD_BIDI_19b0_19bf */
629 UCD_BIDI_17e0_17ef, /* UCD_BIDI_19c0_19cf */
630 UCD_BIDI_0050_005f, /* UCD_BIDI_19d0_19df */
631 UCD_BIDI_02f0_02ff, /* UCD_BIDI_19e0_19ef */
632 UCD_BIDI_02f0_02ff, /* UCD_BIDI_19f0_19ff */
633 };
634 static const unsigned char UCD_BIDI_1a10_1a1f[16]= {L,L,L,L,L,L,L,NSM,NSM,L,L,L,ON,ON,L,L,};
635 static const unsigned char UCD_BIDI_1a50_1a5f[16]= {L,L,L,L,L,L,NSM,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,};
636 static const unsigned char UCD_BIDI_1a60_1a6f[16]= {NSM,L,NSM,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,L,};
637 static const unsigned char UCD_BIDI_1a70_1a7f[16]= {L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,NSM,};
638 static const unsigned char * const UCD_BIDI_1a00_1aff[16]= {
639 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1a00_1a0f */
640 UCD_BIDI_1a10_1a1f,
641 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1a20_1a2f */
642 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1a30_1a3f */
643 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1a40_1a4f */
644 UCD_BIDI_1a50_1a5f,
645 UCD_BIDI_1a60_1a6f,
646 UCD_BIDI_1a70_1a7f,
647 UCD_BIDI_17e0_17ef, /* UCD_BIDI_1a80_1a8f */
648 UCD_BIDI_17e0_17ef, /* UCD_BIDI_1a90_1a9f */
649 UCD_BIDI_1960_196f, /* UCD_BIDI_1aa0_1aaf */
650 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1ab0_1abf */
651 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1ac0_1acf */
652 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1ad0_1adf */
653 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1ae0_1aef */
654 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1af0_1aff */
655 };
656 static const unsigned char UCD_BIDI_1b00_1b0f[16]= {NSM,NSM,NSM,NSM,L,L,L,L,L,L,L,L,L,L,L,L,};
657 static const unsigned char UCD_BIDI_1b30_1b3f[16]= {L,L,L,L,NSM,L,NSM,NSM,NSM,NSM,NSM,L,NSM,L,L,L,};
658 static const unsigned char UCD_BIDI_1b40_1b4f[16]= {L,L,NSM,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,};
659 static const unsigned char UCD_BIDI_1b60_1b6f[16]= {L,L,L,L,L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,NSM,};
660 static const unsigned char UCD_BIDI_1b70_1b7f[16]= {NSM,NSM,NSM,NSM,L,L,L,L,L,L,L,L,L,ON,ON,ON,};
661 static const unsigned char UCD_BIDI_1b80_1b8f[16]= {NSM,NSM,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
662 static const unsigned char UCD_BIDI_1ba0_1baf[16]= {L,L,NSM,NSM,NSM,NSM,L,L,NSM,NSM,L,NSM,L,L,L,L,};
663 static const unsigned char UCD_BIDI_1be0_1bef[16]= {L,L,L,L,L,L,NSM,L,NSM,NSM,L,L,L,NSM,L,NSM,};
664 static const unsigned char UCD_BIDI_1bf0_1bff[16]= {NSM,NSM,L,L,ON,ON,ON,ON,ON,ON,ON,ON,L,L,L,L,};
665 static const unsigned char * const UCD_BIDI_1b00_1bff[16]= {
666 UCD_BIDI_1b00_1b0f,
667 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1b10_1b1f */
668 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1b20_1b2f */
669 UCD_BIDI_1b30_1b3f,
670 UCD_BIDI_1b40_1b4f,
671 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1b50_1b5f */
672 UCD_BIDI_1b60_1b6f,
673 UCD_BIDI_1b70_1b7f,
674 UCD_BIDI_1b80_1b8f,
675 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1b90_1b9f */
676 UCD_BIDI_1ba0_1baf,
677 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1bb0_1bbf */
678 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1bc0_1bcf */
679 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1bd0_1bdf */
680 UCD_BIDI_1be0_1bef,
681 UCD_BIDI_1bf0_1bff,
682 };
683 static const unsigned char UCD_BIDI_1c20_1c2f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,};
684 static const unsigned char UCD_BIDI_1c30_1c3f[16]= {NSM,NSM,NSM,NSM,L,L,NSM,NSM,ON,ON,ON,L,L,L,L,L,};
685 static const unsigned char UCD_BIDI_1c40_1c4f[16]= {L,L,L,L,L,L,L,L,L,L,ON,ON,ON,L,L,L,};
686 static const unsigned char UCD_BIDI_1cd0_1cdf[16]= {NSM,NSM,NSM,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
687 static const unsigned char UCD_BIDI_1ce0_1cef[16]= {NSM,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,L,L,NSM,L,L,};
688 static const unsigned char UCD_BIDI_1cf0_1cff[16]= {L,L,L,L,NSM,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
689 static const unsigned char * const UCD_BIDI_1c00_1cff[16]= {
690 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1c00_1c0f */
691 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1c10_1c1f */
692 UCD_BIDI_1c20_1c2f,
693 UCD_BIDI_1c30_1c3f,
694 UCD_BIDI_1c40_1c4f,
695 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1c50_1c5f */
696 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1c60_1c6f */
697 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1c70_1c7f */
698 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1c80_1c8f */
699 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1c90_1c9f */
700 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1ca0_1caf */
701 UCD_BIDI_02f0_02ff, /* UCD_BIDI_1cb0_1cbf */
702 UCD_BIDI_0520_052f, /* UCD_BIDI_1cc0_1ccf */
703 UCD_BIDI_1cd0_1cdf,
704 UCD_BIDI_1ce0_1cef,
705 UCD_BIDI_1cf0_1cff,
706 };
707 static const unsigned char UCD_BIDI_1de0_1def[16]= {NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
708 static const unsigned char UCD_BIDI_1df0_1dff[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,NSM,NSM,NSM,NSM,};
709 static const unsigned char * const UCD_BIDI_1d00_1dff[16]= {
710 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d00_1d0f */
711 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d10_1d1f */
712 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d20_1d2f */
713 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d30_1d3f */
714 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d40_1d4f */
715 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d50_1d5f */
716 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d60_1d6f */
717 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d70_1d7f */
718 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d80_1d8f */
719 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1d90_1d9f */
720 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1da0_1daf */
721 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1db0_1dbf */
722 UCD_BIDI_0300_030f, /* UCD_BIDI_1dc0_1dcf */
723 UCD_BIDI_0300_030f, /* UCD_BIDI_1dd0_1ddf */
724 UCD_BIDI_1de0_1def,
725 UCD_BIDI_1df0_1dff,
726 };
727 static const unsigned char UCD_BIDI_1f10_1f1f[16]= {L,L,L,L,L,L,ON,ON,L,L,L,L,L,L,ON,ON,};
728 static const unsigned char UCD_BIDI_1f50_1f5f[16]= {L,L,L,L,L,L,L,L,ON,L,ON,L,ON,L,ON,L,};
729 static const unsigned char UCD_BIDI_1fb0_1fbf[16]= {L,L,L,L,L,ON,L,L,L,L,L,L,L,ON,L,ON,};
730 static const unsigned char UCD_BIDI_1fc0_1fcf[16]= {ON,ON,L,L,L,ON,L,L,L,L,L,L,L,ON,ON,ON,};
731 static const unsigned char UCD_BIDI_1fd0_1fdf[16]= {L,L,L,L,ON,ON,L,L,L,L,L,L,ON,ON,ON,ON,};
732 static const unsigned char * const UCD_BIDI_1f00_1fff[16]= {
733 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f00_1f0f */
734 UCD_BIDI_1f10_1f1f,
735 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f20_1f2f */
736 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f30_1f3f */
737 UCD_BIDI_1f10_1f1f, /* UCD_BIDI_1f40_1f4f */
738 UCD_BIDI_1f50_1f5f,
739 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f60_1f6f */
740 UCD_BIDI_1960_196f, /* UCD_BIDI_1f70_1f7f */
741 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f80_1f8f */
742 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1f90_1f9f */
743 UCD_BIDI_00c0_00cf, /* UCD_BIDI_1fa0_1faf */
744 UCD_BIDI_1fb0_1fbf,
745 UCD_BIDI_1fc0_1fcf,
746 UCD_BIDI_1fd0_1fdf,
747 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_1fe0_1fef */
748 UCD_BIDI_1fc0_1fcf, /* UCD_BIDI_1ff0_1fff */
749 };
750 static const unsigned char * const * const UCD_BIDI_1000_1fff[16]= {
751 UCD_BIDI_1000_10ff,
752 UCD_BIDI_0100_01ff, /* UCD_BIDI_1100_11ff */
753 UCD_BIDI_1200_12ff,
754 UCD_BIDI_1300_13ff,
755 UCD_BIDI_1400_14ff,
756 UCD_BIDI_0100_01ff, /* UCD_BIDI_1500_15ff */
757 UCD_BIDI_1600_16ff,
758 UCD_BIDI_1700_17ff,
759 UCD_BIDI_1800_18ff,
760 UCD_BIDI_1900_19ff,
761 UCD_BIDI_1a00_1aff,
762 UCD_BIDI_1b00_1bff,
763 UCD_BIDI_1c00_1cff,
764 UCD_BIDI_1d00_1dff,
765 UCD_BIDI_0100_01ff, /* UCD_BIDI_1e00_1eff */
766 UCD_BIDI_1f00_1fff,
767 };
768 static const unsigned char UCD_BIDI_2000_200f[16]= {WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,WS,BN,BN,BN,L,R,};
769 static const unsigned char UCD_BIDI_2020_202f[16]= {ON,ON,ON,ON,ON,ON,ON,ON,WS,B,LRE,RLE,PDF,LRO,RLO,CS,};
770 static const unsigned char UCD_BIDI_2030_203f[16]= {ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
771 static const unsigned char UCD_BIDI_2040_204f[16]= {ON,ON,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
772 static const unsigned char UCD_BIDI_2050_205f[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,WS,};
773 static const unsigned char UCD_BIDI_2060_206f[16]= {BN,BN,BN,BN,BN,ON,ON,ON,ON,ON,BN,BN,BN,BN,BN,BN,};
774 static const unsigned char UCD_BIDI_2070_207f[16]= {EN,L,ON,ON,EN,EN,EN,EN,EN,EN,ES,ES,ON,ON,ON,L,};
775 static const unsigned char UCD_BIDI_2080_208f[16]= {EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,ES,ES,ON,ON,ON,ON,};
776 static const unsigned char UCD_BIDI_20a0_20af[16]= {ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,};
777 static const unsigned char UCD_BIDI_20b0_20bf[16]= {ET,ET,ET,ET,ET,ET,ET,ET,ET,ET,ON,ON,ON,ON,ON,ON,};
778 static const unsigned char UCD_BIDI_20f0_20ff[16]= {NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
779 static const unsigned char * const UCD_BIDI_2000_20ff[16]= {
780 UCD_BIDI_2000_200f,
781 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2010_201f */
782 UCD_BIDI_2020_202f,
783 UCD_BIDI_2030_203f,
784 UCD_BIDI_2040_204f,
785 UCD_BIDI_2050_205f,
786 UCD_BIDI_2060_206f,
787 UCD_BIDI_2070_207f,
788 UCD_BIDI_2080_208f,
789 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_2090_209f */
790 UCD_BIDI_20a0_20af,
791 UCD_BIDI_20b0_20bf,
792 UCD_BIDI_02f0_02ff, /* UCD_BIDI_20c0_20cf */
793 UCD_BIDI_0300_030f, /* UCD_BIDI_20d0_20df */
794 UCD_BIDI_0300_030f, /* UCD_BIDI_20e0_20ef */
795 UCD_BIDI_20f0_20ff,
796 };
797 static const unsigned char UCD_BIDI_2100_210f[16]= {ON,ON,L,ON,ON,ON,ON,L,ON,ON,L,L,L,L,L,L,};
798 static const unsigned char UCD_BIDI_2110_211f[16]= {L,L,L,L,ON,L,ON,ON,ON,L,L,L,L,L,ON,ON,};
799 static const unsigned char UCD_BIDI_2120_212f[16]= {ON,ON,ON,ON,L,ON,L,ON,L,ON,L,L,L,L,ET,L,};
800 static const unsigned char UCD_BIDI_2140_214f[16]= {ON,ON,ON,ON,ON,L,L,L,L,L,ON,ON,ON,ON,L,L,};
801 static const unsigned char UCD_BIDI_2180_218f[16]= {L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,};
802 static const unsigned char * const UCD_BIDI_2100_21ff[16]= {
803 UCD_BIDI_2100_210f,
804 UCD_BIDI_2110_211f,
805 UCD_BIDI_2120_212f,
806 UCD_BIDI_0ed0_0edf, /* UCD_BIDI_2130_213f */
807 UCD_BIDI_2140_214f,
808 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2150_215f */
809 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2160_216f */
810 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2170_217f */
811 UCD_BIDI_2180_218f,
812 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2190_219f */
813 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21a0_21af */
814 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21b0_21bf */
815 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21c0_21cf */
816 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21d0_21df */
817 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21e0_21ef */
818 UCD_BIDI_02f0_02ff, /* UCD_BIDI_21f0_21ff */
819 };
820 static const unsigned char UCD_BIDI_2210_221f[16]= {ON,ON,ES,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
821 static const unsigned char * const UCD_BIDI_2200_22ff[16]= {
822 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2200_220f */
823 UCD_BIDI_2210_221f,
824 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2220_222f */
825 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2230_223f */
826 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2240_224f */
827 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2250_225f */
828 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2260_226f */
829 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2270_227f */
830 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2280_228f */
831 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2290_229f */
832 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22a0_22af */
833 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22b0_22bf */
834 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22c0_22cf */
835 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22d0_22df */
836 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22e0_22ef */
837 UCD_BIDI_02f0_02ff, /* UCD_BIDI_22f0_22ff */
838 };
839 static const unsigned char UCD_BIDI_2390_239f[16]= {ON,ON,ON,ON,ON,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
840 static const unsigned char * const UCD_BIDI_2300_23ff[16]= {
841 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2300_230f */
842 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2310_231f */
843 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2320_232f */
844 UCD_BIDI_0a60_0a6f, /* UCD_BIDI_2330_233f */
845 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2340_234f */
846 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2350_235f */
847 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2360_236f */
848 UCD_BIDI_0050_005f, /* UCD_BIDI_2370_237f */
849 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2380_238f */
850 UCD_BIDI_2390_239f,
851 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23a0_23af */
852 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23b0_23bf */
853 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23c0_23cf */
854 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23d0_23df */
855 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23e0_23ef */
856 UCD_BIDI_02f0_02ff, /* UCD_BIDI_23f0_23ff */
857 };
858 static const unsigned char UCD_BIDI_2480_248f[16]= {ON,ON,ON,ON,ON,ON,ON,ON,EN,EN,EN,EN,EN,EN,EN,EN,};
859 static const unsigned char UCD_BIDI_2490_249f[16]= {EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,EN,L,L,L,L,};
860 static const unsigned char * const UCD_BIDI_2400_24ff[16]= {
861 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2400_240f */
862 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2410_241f */
863 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2420_242f */
864 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2430_243f */
865 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2440_244f */
866 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2450_245f */
867 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2460_246f */
868 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2470_247f */
869 UCD_BIDI_2480_248f,
870 UCD_BIDI_2490_249f,
871 UCD_BIDI_00c0_00cf, /* UCD_BIDI_24a0_24af */
872 UCD_BIDI_00c0_00cf, /* UCD_BIDI_24b0_24bf */
873 UCD_BIDI_00c0_00cf, /* UCD_BIDI_24c0_24cf */
874 UCD_BIDI_00c0_00cf, /* UCD_BIDI_24d0_24df */
875 UCD_BIDI_17e0_17ef, /* UCD_BIDI_24e0_24ef */
876 UCD_BIDI_02f0_02ff, /* UCD_BIDI_24f0_24ff */
877 };
878 static const unsigned char * const UCD_BIDI_2500_25ff[16]= {
879 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2500_250f */
880 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2510_251f */
881 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2520_252f */
882 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2530_253f */
883 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2540_254f */
884 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2550_255f */
885 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2560_256f */
886 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2570_257f */
887 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2580_258f */
888 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2590_259f */
889 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25a0_25af */
890 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25b0_25bf */
891 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25c0_25cf */
892 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25d0_25df */
893 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25e0_25ef */
894 UCD_BIDI_02f0_02ff, /* UCD_BIDI_25f0_25ff */
895 };
896 static const unsigned char UCD_BIDI_26a0_26af[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,ON,ON,ON,};
897 static const unsigned char * const UCD_BIDI_2600_26ff[16]= {
898 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2600_260f */
899 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2610_261f */
900 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2620_262f */
901 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2630_263f */
902 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2640_264f */
903 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2650_265f */
904 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2660_266f */
905 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2670_267f */
906 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2680_268f */
907 UCD_BIDI_02f0_02ff, /* UCD_BIDI_2690_269f */
908 UCD_BIDI_26a0_26af,
909 UCD_BIDI_02f0_02ff, /* UCD_BIDI_26b0_26bf */
910 UCD_BIDI_02f0_02ff, /* UCD_BIDI_26c0_26cf */
911 UCD_BIDI_02f0_02ff, /* UCD_BIDI_26d0_26df */
912 UCD_BIDI_02f0_02ff, /* UCD_BIDI_26e0_26ef */
913 UCD_BIDI_02f0_02ff, /* UCD_BIDI_26f0_26ff */
914 };
915 static const unsigned char UCD_BIDI_2c20_2c2f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,ON,};
916 static const unsigned char UCD_BIDI_2ce0_2cef[16]= {L,L,L,L,L,ON,ON,ON,ON,ON,ON,L,L,L,L,NSM,};
917 static const unsigned char UCD_BIDI_2cf0_2cff[16]= {NSM,NSM,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
918 static const unsigned char * const UCD_BIDI_2c00_2cff[16]= {
919 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c00_2c0f */
920 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c10_2c1f */
921 UCD_BIDI_2c20_2c2f,
922 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c30_2c3f */
923 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c40_2c4f */
924 UCD_BIDI_2c20_2c2f, /* UCD_BIDI_2c50_2c5f */
925 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c60_2c6f */
926 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c70_2c7f */
927 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c80_2c8f */
928 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2c90_2c9f */
929 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2ca0_2caf */
930 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2cb0_2cbf */
931 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2cc0_2ccf */
932 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2cd0_2cdf */
933 UCD_BIDI_2ce0_2cef,
934 UCD_BIDI_2cf0_2cff,
935 };
936 static const unsigned char UCD_BIDI_2d60_2d6f[16]= {L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,L,};
937 static const unsigned char UCD_BIDI_2d70_2d7f[16]= {L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,NSM,};
938 static const unsigned char UCD_BIDI_2d90_2d9f[16]= {L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
939 static const unsigned char UCD_BIDI_2da0_2daf[16]= {L,L,L,L,L,L,L,ON,L,L,L,L,L,L,L,ON,};
940 static const unsigned char * const UCD_BIDI_2d00_2dff[16]= {
941 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d00_2d0f */
942 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d10_2d1f */
943 UCD_BIDI_10c0_10cf, /* UCD_BIDI_2d20_2d2f */
944 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d30_2d3f */
945 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d40_2d4f */
946 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d50_2d5f */
947 UCD_BIDI_2d60_2d6f,
948 UCD_BIDI_2d70_2d7f,
949 UCD_BIDI_00c0_00cf, /* UCD_BIDI_2d80_2d8f */
950 UCD_BIDI_2d90_2d9f,
951 UCD_BIDI_2da0_2daf,
952 UCD_BIDI_2da0_2daf, /* UCD_BIDI_2db0_2dbf */
953 UCD_BIDI_2da0_2daf, /* UCD_BIDI_2dc0_2dcf */
954 UCD_BIDI_2da0_2daf, /* UCD_BIDI_2dd0_2ddf */
955 UCD_BIDI_0300_030f, /* UCD_BIDI_2de0_2def */
956 UCD_BIDI_0300_030f, /* UCD_BIDI_2df0_2dff */
957 };
958 static const unsigned char * const * const UCD_BIDI_2000_2fff[16]= {
959 UCD_BIDI_2000_20ff,
960 UCD_BIDI_2100_21ff,
961 UCD_BIDI_2200_22ff,
962 UCD_BIDI_2300_23ff,
963 UCD_BIDI_2400_24ff,
964 UCD_BIDI_2500_25ff,
965 UCD_BIDI_2600_26ff,
966 UCD_BIDI_2500_25ff, /* UCD_BIDI_2700_27ff */
967 UCD_BIDI_0100_01ff, /* UCD_BIDI_2800_28ff */
968 UCD_BIDI_2500_25ff, /* UCD_BIDI_2900_29ff */
969 UCD_BIDI_2500_25ff, /* UCD_BIDI_2a00_2aff */
970 UCD_BIDI_2500_25ff, /* UCD_BIDI_2b00_2bff */
971 UCD_BIDI_2c00_2cff,
972 UCD_BIDI_2d00_2dff,
973 UCD_BIDI_2500_25ff, /* UCD_BIDI_2e00_2eff */
974 UCD_BIDI_2500_25ff, /* UCD_BIDI_2f00_2fff */
975 };
976 static const unsigned char UCD_BIDI_3000_300f[16]= {WS,ON,ON,ON,ON,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,};
977 static const unsigned char UCD_BIDI_3020_302f[16]= {ON,L,L,L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,L,L,};
978 static const unsigned char UCD_BIDI_3030_303f[16]= {ON,L,L,L,L,L,ON,ON,L,L,L,L,L,ON,ON,ON,};
979 static const unsigned char UCD_BIDI_3090_309f[16]= {L,L,L,L,L,L,L,ON,ON,NSM,NSM,ON,ON,L,L,L,};
980 static const unsigned char UCD_BIDI_30f0_30ff[16]= {L,L,L,L,L,L,L,L,L,L,L,ON,L,L,L,L,};
981 static const unsigned char * const UCD_BIDI_3000_30ff[16]= {
982 UCD_BIDI_3000_300f,
983 UCD_BIDI_02f0_02ff, /* UCD_BIDI_3010_301f */
984 UCD_BIDI_3020_302f,
985 UCD_BIDI_3030_303f,
986 UCD_BIDI_0040_004f, /* UCD_BIDI_3040_304f */
987 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3050_305f */
988 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3060_306f */
989 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3070_307f */
990 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3080_308f */
991 UCD_BIDI_3090_309f,
992 UCD_BIDI_0040_004f, /* UCD_BIDI_30a0_30af */
993 UCD_BIDI_00c0_00cf, /* UCD_BIDI_30b0_30bf */
994 UCD_BIDI_00c0_00cf, /* UCD_BIDI_30c0_30cf */
995 UCD_BIDI_00c0_00cf, /* UCD_BIDI_30d0_30df */
996 UCD_BIDI_00c0_00cf, /* UCD_BIDI_30e0_30ef */
997 UCD_BIDI_30f0_30ff,
998 };
999 static const unsigned char UCD_BIDI_3100_310f[16]= {ON,ON,ON,ON,ON,L,L,L,L,L,L,L,L,L,L,L,};
1000 static const unsigned char * const UCD_BIDI_3100_31ff[16]= {
1001 UCD_BIDI_3100_310f,
1002 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3110_311f */
1003 UCD_BIDI_1960_196f, /* UCD_BIDI_3120_312f */
1004 UCD_BIDI_0040_004f, /* UCD_BIDI_3130_313f */
1005 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3140_314f */
1006 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3150_315f */
1007 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3160_316f */
1008 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3170_317f */
1009 UCD_BIDI_2c20_2c2f, /* UCD_BIDI_3180_318f */
1010 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3190_319f */
1011 UCD_BIDI_00c0_00cf, /* UCD_BIDI_31a0_31af */
1012 UCD_BIDI_0050_005f, /* UCD_BIDI_31b0_31bf */
1013 UCD_BIDI_02f0_02ff, /* UCD_BIDI_31c0_31cf */
1014 UCD_BIDI_02f0_02ff, /* UCD_BIDI_31d0_31df */
1015 UCD_BIDI_02f0_02ff, /* UCD_BIDI_31e0_31ef */
1016 UCD_BIDI_00c0_00cf, /* UCD_BIDI_31f0_31ff */
1017 };
1018 static const unsigned char UCD_BIDI_3270_327f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,L,};
1019 static const unsigned char * const UCD_BIDI_3200_32ff[16]= {
1020 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3200_320f */
1021 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_3210_321f */
1022 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3220_322f */
1023 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3230_323f */
1024 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3240_324f */
1025 UCD_BIDI_02f0_02ff, /* UCD_BIDI_3250_325f */
1026 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3260_326f */
1027 UCD_BIDI_3270_327f,
1028 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3280_328f */
1029 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3290_329f */
1030 UCD_BIDI_00c0_00cf, /* UCD_BIDI_32a0_32af */
1031 UCD_BIDI_0ad0_0adf, /* UCD_BIDI_32b0_32bf */
1032 UCD_BIDI_0e50_0e5f, /* UCD_BIDI_32c0_32cf */
1033 UCD_BIDI_00c0_00cf, /* UCD_BIDI_32d0_32df */
1034 UCD_BIDI_00c0_00cf, /* UCD_BIDI_32e0_32ef */
1035 UCD_BIDI_2c20_2c2f, /* UCD_BIDI_32f0_32ff */
1036 };
1037 static const unsigned char UCD_BIDI_3370_337f[16]= {L,L,L,L,L,L,L,ON,ON,ON,ON,L,L,L,L,L,};
1038 static const unsigned char * const UCD_BIDI_3300_33ff[16]= {
1039 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3300_330f */
1040 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3310_331f */
1041 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3320_332f */
1042 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3330_333f */
1043 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3340_334f */
1044 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3350_335f */
1045 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3360_336f */
1046 UCD_BIDI_3370_337f,
1047 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3380_338f */
1048 UCD_BIDI_00c0_00cf, /* UCD_BIDI_3390_339f */
1049 UCD_BIDI_00c0_00cf, /* UCD_BIDI_33a0_33af */
1050 UCD_BIDI_00c0_00cf, /* UCD_BIDI_33b0_33bf */
1051 UCD_BIDI_00c0_00cf, /* UCD_BIDI_33c0_33cf */
1052 UCD_BIDI_1960_196f, /* UCD_BIDI_33d0_33df */
1053 UCD_BIDI_00c0_00cf, /* UCD_BIDI_33e0_33ef */
1054 UCD_BIDI_2c20_2c2f, /* UCD_BIDI_33f0_33ff */
1055 };
1056 static const unsigned char * const * const UCD_BIDI_3000_3fff[16]= {
1057 UCD_BIDI_3000_30ff,
1058 UCD_BIDI_3100_31ff,
1059 UCD_BIDI_3200_32ff,
1060 UCD_BIDI_3300_33ff,
1061 UCD_BIDI_0100_01ff, /* UCD_BIDI_3400_34ff */
1062 UCD_BIDI_0100_01ff, /* UCD_BIDI_3500_35ff */
1063 UCD_BIDI_0100_01ff, /* UCD_BIDI_3600_36ff */
1064 UCD_BIDI_0100_01ff, /* UCD_BIDI_3700_37ff */
1065 UCD_BIDI_0100_01ff, /* UCD_BIDI_3800_38ff */
1066 UCD_BIDI_0100_01ff, /* UCD_BIDI_3900_39ff */
1067 UCD_BIDI_0100_01ff, /* UCD_BIDI_3a00_3aff */
1068 UCD_BIDI_0100_01ff, /* UCD_BIDI_3b00_3bff */
1069 UCD_BIDI_0100_01ff, /* UCD_BIDI_3c00_3cff */
1070 UCD_BIDI_0100_01ff, /* UCD_BIDI_3d00_3dff */
1071 UCD_BIDI_0100_01ff, /* UCD_BIDI_3e00_3eff */
1072 UCD_BIDI_0100_01ff, /* UCD_BIDI_3f00_3fff */
1073 };
1074 static const unsigned char * const UCD_BIDI_4d00_4dff[16]= {
1075 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d00_4d0f */
1076 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d10_4d1f */
1077 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d20_4d2f */
1078 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d30_4d3f */
1079 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d40_4d4f */
1080 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d50_4d5f */
1081 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d60_4d6f */
1082 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d70_4d7f */
1083 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d80_4d8f */
1084 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4d90_4d9f */
1085 UCD_BIDI_00c0_00cf, /* UCD_BIDI_4da0_4daf */
1086 UCD_BIDI_18f0_18ff, /* UCD_BIDI_4db0_4dbf */
1087 UCD_BIDI_02f0_02ff, /* UCD_BIDI_4dc0_4dcf */
1088 UCD_BIDI_02f0_02ff, /* UCD_BIDI_4dd0_4ddf */
1089 UCD_BIDI_02f0_02ff, /* UCD_BIDI_4de0_4def */
1090 UCD_BIDI_02f0_02ff, /* UCD_BIDI_4df0_4dff */
1091 };
1092 static const unsigned char * const * const UCD_BIDI_4000_4fff[16]= {
1093 UCD_BIDI_0100_01ff, /* UCD_BIDI_4000_40ff */
1094 UCD_BIDI_0100_01ff, /* UCD_BIDI_4100_41ff */
1095 UCD_BIDI_0100_01ff, /* UCD_BIDI_4200_42ff */
1096 UCD_BIDI_0100_01ff, /* UCD_BIDI_4300_43ff */
1097 UCD_BIDI_0100_01ff, /* UCD_BIDI_4400_44ff */
1098 UCD_BIDI_0100_01ff, /* UCD_BIDI_4500_45ff */
1099 UCD_BIDI_0100_01ff, /* UCD_BIDI_4600_46ff */
1100 UCD_BIDI_0100_01ff, /* UCD_BIDI_4700_47ff */
1101 UCD_BIDI_0100_01ff, /* UCD_BIDI_4800_48ff */
1102 UCD_BIDI_0100_01ff, /* UCD_BIDI_4900_49ff */
1103 UCD_BIDI_0100_01ff, /* UCD_BIDI_4a00_4aff */
1104 UCD_BIDI_0100_01ff, /* UCD_BIDI_4b00_4bff */
1105 UCD_BIDI_0100_01ff, /* UCD_BIDI_4c00_4cff */
1106 UCD_BIDI_4d00_4dff,
1107 UCD_BIDI_0100_01ff, /* UCD_BIDI_4e00_4eff */
1108 UCD_BIDI_0100_01ff, /* UCD_BIDI_4f00_4fff */
1109 };
1110 static const unsigned char * const * const UCD_BIDI_5000_5fff[16]= {
1111 UCD_BIDI_0100_01ff, /* UCD_BIDI_5000_50ff */
1112 UCD_BIDI_0100_01ff, /* UCD_BIDI_5100_51ff */
1113 UCD_BIDI_0100_01ff, /* UCD_BIDI_5200_52ff */
1114 UCD_BIDI_0100_01ff, /* UCD_BIDI_5300_53ff */
1115 UCD_BIDI_0100_01ff, /* UCD_BIDI_5400_54ff */
1116 UCD_BIDI_0100_01ff, /* UCD_BIDI_5500_55ff */
1117 UCD_BIDI_0100_01ff, /* UCD_BIDI_5600_56ff */
1118 UCD_BIDI_0100_01ff, /* UCD_BIDI_5700_57ff */
1119 UCD_BIDI_0100_01ff, /* UCD_BIDI_5800_58ff */
1120 UCD_BIDI_0100_01ff, /* UCD_BIDI_5900_59ff */
1121 UCD_BIDI_0100_01ff, /* UCD_BIDI_5a00_5aff */
1122 UCD_BIDI_0100_01ff, /* UCD_BIDI_5b00_5bff */
1123 UCD_BIDI_0100_01ff, /* UCD_BIDI_5c00_5cff */
1124 UCD_BIDI_0100_01ff, /* UCD_BIDI_5d00_5dff */
1125 UCD_BIDI_0100_01ff, /* UCD_BIDI_5e00_5eff */
1126 UCD_BIDI_0100_01ff, /* UCD_BIDI_5f00_5fff */
1127 };
1128 static const unsigned char * const UCD_BIDI_9f00_9fff[16]= {
1129 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f00_9f0f */
1130 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f10_9f1f */
1131 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f20_9f2f */
1132 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f30_9f3f */
1133 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f40_9f4f */
1134 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f50_9f5f */
1135 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f60_9f6f */
1136 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f70_9f7f */
1137 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f80_9f8f */
1138 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9f90_9f9f */
1139 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9fa0_9faf */
1140 UCD_BIDI_00c0_00cf, /* UCD_BIDI_9fb0_9fbf */
1141 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_9fc0_9fcf */
1142 UCD_BIDI_02f0_02ff, /* UCD_BIDI_9fd0_9fdf */
1143 UCD_BIDI_02f0_02ff, /* UCD_BIDI_9fe0_9fef */
1144 UCD_BIDI_02f0_02ff, /* UCD_BIDI_9ff0_9fff */
1145 };
1146 static const unsigned char * const * const UCD_BIDI_9000_9fff[16]= {
1147 UCD_BIDI_0100_01ff, /* UCD_BIDI_9000_90ff */
1148 UCD_BIDI_0100_01ff, /* UCD_BIDI_9100_91ff */
1149 UCD_BIDI_0100_01ff, /* UCD_BIDI_9200_92ff */
1150 UCD_BIDI_0100_01ff, /* UCD_BIDI_9300_93ff */
1151 UCD_BIDI_0100_01ff, /* UCD_BIDI_9400_94ff */
1152 UCD_BIDI_0100_01ff, /* UCD_BIDI_9500_95ff */
1153 UCD_BIDI_0100_01ff, /* UCD_BIDI_9600_96ff */
1154 UCD_BIDI_0100_01ff, /* UCD_BIDI_9700_97ff */
1155 UCD_BIDI_0100_01ff, /* UCD_BIDI_9800_98ff */
1156 UCD_BIDI_0100_01ff, /* UCD_BIDI_9900_99ff */
1157 UCD_BIDI_0100_01ff, /* UCD_BIDI_9a00_9aff */
1158 UCD_BIDI_0100_01ff, /* UCD_BIDI_9b00_9bff */
1159 UCD_BIDI_0100_01ff, /* UCD_BIDI_9c00_9cff */
1160 UCD_BIDI_0100_01ff, /* UCD_BIDI_9d00_9dff */
1161 UCD_BIDI_0100_01ff, /* UCD_BIDI_9e00_9eff */
1162 UCD_BIDI_9f00_9fff,
1163 };
1164 static const unsigned char * const UCD_BIDI_a400_a4ff[16]= {
1165 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a400_a40f */
1166 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a410_a41f */
1167 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a420_a42f */
1168 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a430_a43f */
1169 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a440_a44f */
1170 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a450_a45f */
1171 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a460_a46f */
1172 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a470_a47f */
1173 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_a480_a48f */
1174 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a490_a49f */
1175 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a4a0_a4af */
1176 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a4b0_a4bf */
1177 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a4c0_a4cf */
1178 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a4d0_a4df */
1179 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a4e0_a4ef */
1180 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a4f0_a4ff */
1181 };
1182 static const unsigned char UCD_BIDI_a660_a66f[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,L,L,NSM,};
1183 static const unsigned char UCD_BIDI_a670_a67f[16]= {NSM,NSM,NSM,ON,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,ON,ON,};
1184 static const unsigned char UCD_BIDI_a690_a69f[16]= {L,L,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,NSM,};
1185 static const unsigned char UCD_BIDI_a6f0_a6ff[16]= {NSM,NSM,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,};
1186 static const unsigned char * const UCD_BIDI_a600_a6ff[16]= {
1187 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_a600_a60f */
1188 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a610_a61f */
1189 UCD_BIDI_0e50_0e5f, /* UCD_BIDI_a620_a62f */
1190 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a630_a63f */
1191 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a640_a64f */
1192 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a650_a65f */
1193 UCD_BIDI_a660_a66f,
1194 UCD_BIDI_a670_a67f,
1195 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a680_a68f */
1196 UCD_BIDI_a690_a69f,
1197 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a6a0_a6af */
1198 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a6b0_a6bf */
1199 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a6c0_a6cf */
1200 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a6d0_a6df */
1201 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a6e0_a6ef */
1202 UCD_BIDI_a6f0_a6ff,
1203 };
1204 static const unsigned char UCD_BIDI_a720_a72f[16]= {ON,ON,L,L,L,L,L,L,L,L,L,L,L,L,L,L,};
1205 static const unsigned char UCD_BIDI_a780_a78f[16]= {L,L,L,L,L,L,L,L,ON,L,L,L,L,L,L,ON,};
1206 static const unsigned char UCD_BIDI_a790_a79f[16]= {L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1207 static const unsigned char UCD_BIDI_a7f0_a7ff[16]= {ON,ON,ON,ON,ON,ON,ON,ON,L,L,L,L,L,L,L,L,};
1208 static const unsigned char * const UCD_BIDI_a700_a7ff[16]= {
1209 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a700_a70f */
1210 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a710_a71f */
1211 UCD_BIDI_a720_a72f,
1212 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a730_a73f */
1213 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a740_a74f */
1214 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a750_a75f */
1215 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a760_a76f */
1216 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a770_a77f */
1217 UCD_BIDI_a780_a78f,
1218 UCD_BIDI_a790_a79f,
1219 UCD_BIDI_0050_005f, /* UCD_BIDI_a7a0_a7af */
1220 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a7b0_a7bf */
1221 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a7c0_a7cf */
1222 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a7d0_a7df */
1223 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a7e0_a7ef */
1224 UCD_BIDI_a7f0_a7ff,
1225 };
1226 static const unsigned char UCD_BIDI_a800_a80f[16]= {L,L,NSM,L,L,L,NSM,L,L,L,L,NSM,L,L,L,L,};
1227 static const unsigned char UCD_BIDI_a820_a82f[16]= {L,L,L,L,L,NSM,NSM,L,ON,ON,ON,ON,ON,ON,ON,ON,};
1228 static const unsigned char UCD_BIDI_a830_a83f[16]= {L,L,L,L,L,L,L,L,ET,ET,ON,ON,ON,ON,ON,ON,};
1229 static const unsigned char UCD_BIDI_a8c0_a8cf[16]= {L,L,L,L,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,L,};
1230 static const unsigned char UCD_BIDI_a8f0_a8ff[16]= {NSM,NSM,L,L,L,L,L,L,L,L,L,L,ON,ON,ON,ON,};
1231 static const unsigned char * const UCD_BIDI_a800_a8ff[16]= {
1232 UCD_BIDI_a800_a80f,
1233 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a810_a81f */
1234 UCD_BIDI_a820_a82f,
1235 UCD_BIDI_a830_a83f,
1236 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a840_a84f */
1237 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a850_a85f */
1238 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a860_a86f */
1239 UCD_BIDI_a790_a79f, /* UCD_BIDI_a870_a87f */
1240 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a880_a88f */
1241 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a890_a89f */
1242 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a8a0_a8af */
1243 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a8b0_a8bf */
1244 UCD_BIDI_a8c0_a8cf,
1245 UCD_BIDI_17e0_17ef, /* UCD_BIDI_a8d0_a8df */
1246 UCD_BIDI_0300_030f, /* UCD_BIDI_a8e0_a8ef */
1247 UCD_BIDI_a8f0_a8ff,
1248 };
1249 static const unsigned char UCD_BIDI_a920_a92f[16]= {L,L,L,L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,L,L,};
1250 static const unsigned char UCD_BIDI_a940_a94f[16]= {L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,NSM,};
1251 static const unsigned char UCD_BIDI_a950_a95f[16]= {NSM,NSM,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,};
1252 static const unsigned char UCD_BIDI_a9b0_a9bf[16]= {L,L,L,NSM,L,L,NSM,NSM,NSM,NSM,L,L,NSM,L,L,L,};
1253 static const unsigned char UCD_BIDI_a9c0_a9cf[16]= {L,L,L,L,L,L,L,L,L,L,L,L,L,L,ON,L,};
1254 static const unsigned char * const UCD_BIDI_a900_a9ff[16]= {
1255 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a900_a90f */
1256 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a910_a91f */
1257 UCD_BIDI_a920_a92f,
1258 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a930_a93f */
1259 UCD_BIDI_a940_a94f,
1260 UCD_BIDI_a950_a95f,
1261 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a960_a96f */
1262 UCD_BIDI_0f60_0f6f, /* UCD_BIDI_a970_a97f */
1263 UCD_BIDI_0900_090f, /* UCD_BIDI_a980_a98f */
1264 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a990_a99f */
1265 UCD_BIDI_00c0_00cf, /* UCD_BIDI_a9a0_a9af */
1266 UCD_BIDI_a9b0_a9bf,
1267 UCD_BIDI_a9c0_a9cf,
1268 UCD_BIDI_0bb0_0bbf, /* UCD_BIDI_a9d0_a9df */
1269 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a9e0_a9ef */
1270 UCD_BIDI_02f0_02ff, /* UCD_BIDI_a9f0_a9ff */
1271 };
1272 static const unsigned char UCD_BIDI_aa20_aa2f[16]= {L,L,L,L,L,L,L,L,L,NSM,NSM,NSM,NSM,NSM,NSM,L,};
1273 static const unsigned char UCD_BIDI_aa30_aa3f[16]= {L,NSM,NSM,L,L,NSM,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1274 static const unsigned char UCD_BIDI_aa40_aa4f[16]= {L,L,L,NSM,L,L,L,L,L,L,L,L,NSM,L,ON,ON,};
1275 static const unsigned char UCD_BIDI_aab0_aabf[16]= {NSM,L,NSM,NSM,NSM,L,L,NSM,NSM,L,L,L,L,L,NSM,NSM,};
1276 static const unsigned char UCD_BIDI_aac0_aacf[16]= {L,NSM,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1277 static const unsigned char UCD_BIDI_aad0_aadf[16]= {ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,L,L,L,L,L,};
1278 static const unsigned char UCD_BIDI_aae0_aaef[16]= {L,L,L,L,L,L,L,L,L,L,L,L,NSM,NSM,L,L,};
1279 static const unsigned char UCD_BIDI_aaf0_aaff[16]= {L,L,L,L,L,L,NSM,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1280 static const unsigned char * const UCD_BIDI_aa00_aaff[16]= {
1281 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aa00_aa0f */
1282 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aa10_aa1f */
1283 UCD_BIDI_aa20_aa2f,
1284 UCD_BIDI_aa30_aa3f,
1285 UCD_BIDI_aa40_aa4f,
1286 UCD_BIDI_0ed0_0edf, /* UCD_BIDI_aa50_aa5f */
1287 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aa60_aa6f */
1288 UCD_BIDI_0e50_0e5f, /* UCD_BIDI_aa70_aa7f */
1289 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aa80_aa8f */
1290 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aa90_aa9f */
1291 UCD_BIDI_00c0_00cf, /* UCD_BIDI_aaa0_aaaf */
1292 UCD_BIDI_aab0_aabf,
1293 UCD_BIDI_aac0_aacf,
1294 UCD_BIDI_aad0_aadf,
1295 UCD_BIDI_aae0_aaef,
1296 UCD_BIDI_aaf0_aaff,
1297 };
1298 static const unsigned char UCD_BIDI_ab00_ab0f[16]= {ON,L,L,L,L,L,L,ON,ON,L,L,L,L,L,L,ON,};
1299 static const unsigned char UCD_BIDI_ab10_ab1f[16]= {ON,L,L,L,L,L,L,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1300 static const unsigned char UCD_BIDI_abe0_abef[16]= {L,L,L,L,L,NSM,L,L,NSM,L,L,L,L,NSM,ON,ON,};
1301 static const unsigned char * const UCD_BIDI_ab00_abff[16]= {
1302 UCD_BIDI_ab00_ab0f,
1303 UCD_BIDI_ab10_ab1f,
1304 UCD_BIDI_2da0_2daf, /* UCD_BIDI_ab20_ab2f */
1305 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab30_ab3f */
1306 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab40_ab4f */
1307 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab50_ab5f */
1308 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab60_ab6f */
1309 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab70_ab7f */
1310 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab80_ab8f */
1311 UCD_BIDI_02f0_02ff, /* UCD_BIDI_ab90_ab9f */
1312 UCD_BIDI_02f0_02ff, /* UCD_BIDI_aba0_abaf */
1313 UCD_BIDI_02f0_02ff, /* UCD_BIDI_abb0_abbf */
1314 UCD_BIDI_00c0_00cf, /* UCD_BIDI_abc0_abcf */
1315 UCD_BIDI_00c0_00cf, /* UCD_BIDI_abd0_abdf */
1316 UCD_BIDI_abe0_abef,
1317 UCD_BIDI_17e0_17ef, /* UCD_BIDI_abf0_abff */
1318 };
1319 static const unsigned char * const * const UCD_BIDI_a000_afff[16]= {
1320 UCD_BIDI_0100_01ff, /* UCD_BIDI_a000_a0ff */
1321 UCD_BIDI_0100_01ff, /* UCD_BIDI_a100_a1ff */
1322 UCD_BIDI_0100_01ff, /* UCD_BIDI_a200_a2ff */
1323 UCD_BIDI_0100_01ff, /* UCD_BIDI_a300_a3ff */
1324 UCD_BIDI_a400_a4ff,
1325 UCD_BIDI_0100_01ff, /* UCD_BIDI_a500_a5ff */
1326 UCD_BIDI_a600_a6ff,
1327 UCD_BIDI_a700_a7ff,
1328 UCD_BIDI_a800_a8ff,
1329 UCD_BIDI_a900_a9ff,
1330 UCD_BIDI_aa00_aaff,
1331 UCD_BIDI_ab00_abff,
1332 UCD_BIDI_0100_01ff, /* UCD_BIDI_ac00_acff */
1333 UCD_BIDI_0100_01ff, /* UCD_BIDI_ad00_adff */
1334 UCD_BIDI_0100_01ff, /* UCD_BIDI_ae00_aeff */
1335 UCD_BIDI_0100_01ff, /* UCD_BIDI_af00_afff */
1336 };
1337 static const unsigned char * const UCD_BIDI_d700_d7ff[16]= {
1338 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d700_d70f */
1339 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d710_d71f */
1340 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d720_d72f */
1341 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d730_d73f */
1342 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d740_d74f */
1343 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d750_d75f */
1344 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d760_d76f */
1345 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d770_d77f */
1346 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d780_d78f */
1347 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d790_d79f */
1348 UCD_BIDI_a790_a79f, /* UCD_BIDI_d7a0_d7af */
1349 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d7b0_d7bf */
1350 UCD_BIDI_3370_337f, /* UCD_BIDI_d7c0_d7cf */
1351 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d7d0_d7df */
1352 UCD_BIDI_00c0_00cf, /* UCD_BIDI_d7e0_d7ef */
1353 UCD_BIDI_0e50_0e5f, /* UCD_BIDI_d7f0_d7ff */
1354 };
1355 static const unsigned char * const * const UCD_BIDI_d000_dfff[16]= {
1356 UCD_BIDI_0100_01ff, /* UCD_BIDI_d000_d0ff */
1357 UCD_BIDI_0100_01ff, /* UCD_BIDI_d100_d1ff */
1358 UCD_BIDI_0100_01ff, /* UCD_BIDI_d200_d2ff */
1359 UCD_BIDI_0100_01ff, /* UCD_BIDI_d300_d3ff */
1360 UCD_BIDI_0100_01ff, /* UCD_BIDI_d400_d4ff */
1361 UCD_BIDI_0100_01ff, /* UCD_BIDI_d500_d5ff */
1362 UCD_BIDI_0100_01ff, /* UCD_BIDI_d600_d6ff */
1363 UCD_BIDI_d700_d7ff,
1364 UCD_BIDI_0100_01ff, /* UCD_BIDI_d800_d8ff */
1365 UCD_BIDI_0100_01ff, /* UCD_BIDI_d900_d9ff */
1366 UCD_BIDI_0100_01ff, /* UCD_BIDI_da00_daff */
1367 UCD_BIDI_0100_01ff, /* UCD_BIDI_db00_dbff */
1368 UCD_BIDI_0100_01ff, /* UCD_BIDI_dc00_dcff */
1369 UCD_BIDI_0100_01ff, /* UCD_BIDI_dd00_ddff */
1370 UCD_BIDI_0100_01ff, /* UCD_BIDI_de00_deff */
1371 UCD_BIDI_0100_01ff, /* UCD_BIDI_df00_dfff */
1372 };
1373 static const unsigned char * const UCD_BIDI_fa00_faff[16]= {
1374 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa00_fa0f */
1375 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa10_fa1f */
1376 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa20_fa2f */
1377 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa30_fa3f */
1378 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa40_fa4f */
1379 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa50_fa5f */
1380 UCD_BIDI_1960_196f, /* UCD_BIDI_fa60_fa6f */
1381 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa70_fa7f */
1382 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa80_fa8f */
1383 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fa90_fa9f */
1384 UCD_BIDI_00c0_00cf, /* UCD_BIDI_faa0_faaf */
1385 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fab0_fabf */
1386 UCD_BIDI_00c0_00cf, /* UCD_BIDI_fac0_facf */
1387 UCD_BIDI_17e0_17ef, /* UCD_BIDI_fad0_fadf */
1388 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fae0_faef */
1389 UCD_BIDI_02f0_02ff, /* UCD_BIDI_faf0_faff */
1390 };
1391 static const unsigned char UCD_BIDI_fb10_fb1f[16]= {ON,ON,ON,L,L,L,L,L,ON,ON,ON,ON,ON,R,NSM,R,};
1392 static const unsigned char UCD_BIDI_fb20_fb2f[16]= {R,R,R,R,R,R,R,R,R,ES,R,R,R,R,R,R,};
1393 static const unsigned char UCD_BIDI_fb30_fb3f[16]= {R,R,R,R,R,R,R,ON,R,R,R,R,R,ON,R,ON,};
1394 static const unsigned char UCD_BIDI_fb40_fb4f[16]= {R,R,ON,R,R,ON,R,R,R,R,R,R,R,R,R,R,};
1395 static const unsigned char UCD_BIDI_fbc0_fbcf[16]= {AL,AL,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1396 static const unsigned char UCD_BIDI_fbd0_fbdf[16]= {ON,ON,ON,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
1397 static const unsigned char * const UCD_BIDI_fb00_fbff[16]= {
1398 UCD_BIDI_2d90_2d9f, /* UCD_BIDI_fb00_fb0f */
1399 UCD_BIDI_fb10_fb1f,
1400 UCD_BIDI_fb20_fb2f,
1401 UCD_BIDI_fb30_fb3f,
1402 UCD_BIDI_fb40_fb4f,
1403 UCD_BIDI_0620_062f, /* UCD_BIDI_fb50_fb5f */
1404 UCD_BIDI_0620_062f, /* UCD_BIDI_fb60_fb6f */
1405 UCD_BIDI_0620_062f, /* UCD_BIDI_fb70_fb7f */
1406 UCD_BIDI_0620_062f, /* UCD_BIDI_fb80_fb8f */
1407 UCD_BIDI_0620_062f, /* UCD_BIDI_fb90_fb9f */
1408 UCD_BIDI_0620_062f, /* UCD_BIDI_fba0_fbaf */
1409 UCD_BIDI_0620_062f, /* UCD_BIDI_fbb0_fbbf */
1410 UCD_BIDI_fbc0_fbcf,
1411 UCD_BIDI_fbd0_fbdf,
1412 UCD_BIDI_0620_062f, /* UCD_BIDI_fbe0_fbef */
1413 UCD_BIDI_0620_062f, /* UCD_BIDI_fbf0_fbff */
1414 };
1415 static const unsigned char * const UCD_BIDI_fc00_fcff[16]= {
1416 UCD_BIDI_0620_062f, /* UCD_BIDI_fc00_fc0f */
1417 UCD_BIDI_0620_062f, /* UCD_BIDI_fc10_fc1f */
1418 UCD_BIDI_0620_062f, /* UCD_BIDI_fc20_fc2f */
1419 UCD_BIDI_0620_062f, /* UCD_BIDI_fc30_fc3f */
1420 UCD_BIDI_0620_062f, /* UCD_BIDI_fc40_fc4f */
1421 UCD_BIDI_0620_062f, /* UCD_BIDI_fc50_fc5f */
1422 UCD_BIDI_0620_062f, /* UCD_BIDI_fc60_fc6f */
1423 UCD_BIDI_0620_062f, /* UCD_BIDI_fc70_fc7f */
1424 UCD_BIDI_0620_062f, /* UCD_BIDI_fc80_fc8f */
1425 UCD_BIDI_0620_062f, /* UCD_BIDI_fc90_fc9f */
1426 UCD_BIDI_0620_062f, /* UCD_BIDI_fca0_fcaf */
1427 UCD_BIDI_0620_062f, /* UCD_BIDI_fcb0_fcbf */
1428 UCD_BIDI_0620_062f, /* UCD_BIDI_fcc0_fccf */
1429 UCD_BIDI_0620_062f, /* UCD_BIDI_fcd0_fcdf */
1430 UCD_BIDI_0620_062f, /* UCD_BIDI_fce0_fcef */
1431 UCD_BIDI_0620_062f, /* UCD_BIDI_fcf0_fcff */
1432 };
1433 static const unsigned char UCD_BIDI_fd30_fd3f[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,ON,ON,};
1434 static const unsigned char UCD_BIDI_fd90_fd9f[16]= {ON,ON,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
1435 static const unsigned char UCD_BIDI_fdc0_fdcf[16]= {AL,AL,AL,AL,AL,AL,AL,AL,ON,ON,ON,ON,ON,ON,ON,ON,};
1436 static const unsigned char UCD_BIDI_fdf0_fdff[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,ON,ON,ON,};
1437 static const unsigned char * const UCD_BIDI_fd00_fdff[16]= {
1438 UCD_BIDI_0620_062f, /* UCD_BIDI_fd00_fd0f */
1439 UCD_BIDI_0620_062f, /* UCD_BIDI_fd10_fd1f */
1440 UCD_BIDI_0620_062f, /* UCD_BIDI_fd20_fd2f */
1441 UCD_BIDI_fd30_fd3f,
1442 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fd40_fd4f */
1443 UCD_BIDI_0620_062f, /* UCD_BIDI_fd50_fd5f */
1444 UCD_BIDI_0620_062f, /* UCD_BIDI_fd60_fd6f */
1445 UCD_BIDI_0620_062f, /* UCD_BIDI_fd70_fd7f */
1446 UCD_BIDI_0620_062f, /* UCD_BIDI_fd80_fd8f */
1447 UCD_BIDI_fd90_fd9f,
1448 UCD_BIDI_0620_062f, /* UCD_BIDI_fda0_fdaf */
1449 UCD_BIDI_0620_062f, /* UCD_BIDI_fdb0_fdbf */
1450 UCD_BIDI_fdc0_fdcf,
1451 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fdd0_fddf */
1452 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fde0_fdef */
1453 UCD_BIDI_fdf0_fdff,
1454 };
1455 static const unsigned char UCD_BIDI_fe50_fe5f[16]= {CS,ON,CS,ON,ON,CS,ON,ON,ON,ON,ON,ON,ON,ON,ON,ET,};
1456 static const unsigned char UCD_BIDI_fe60_fe6f[16]= {ON,ON,ES,ES,ON,ON,ON,ON,ON,ET,ET,ON,ON,ON,ON,ON,};
1457 static const unsigned char UCD_BIDI_fe70_fe7f[16]= {AL,AL,AL,AL,AL,ON,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,};
1458 static const unsigned char UCD_BIDI_fef0_feff[16]= {AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,AL,ON,ON,BN,};
1459 static const unsigned char * const UCD_BIDI_fe00_feff[16]= {
1460 UCD_BIDI_0300_030f, /* UCD_BIDI_fe00_fe0f */
1461 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fe10_fe1f */
1462 UCD_BIDI_1de0_1def, /* UCD_BIDI_fe20_fe2f */
1463 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fe30_fe3f */
1464 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fe40_fe4f */
1465 UCD_BIDI_fe50_fe5f,
1466 UCD_BIDI_fe60_fe6f,
1467 UCD_BIDI_fe70_fe7f,
1468 UCD_BIDI_0620_062f, /* UCD_BIDI_fe80_fe8f */
1469 UCD_BIDI_0620_062f, /* UCD_BIDI_fe90_fe9f */
1470 UCD_BIDI_0620_062f, /* UCD_BIDI_fea0_feaf */
1471 UCD_BIDI_0620_062f, /* UCD_BIDI_feb0_febf */
1472 UCD_BIDI_0620_062f, /* UCD_BIDI_fec0_fecf */
1473 UCD_BIDI_0620_062f, /* UCD_BIDI_fed0_fedf */
1474 UCD_BIDI_0620_062f, /* UCD_BIDI_fee0_feef */
1475 UCD_BIDI_fef0_feff,
1476 };
1477 static const unsigned char UCD_BIDI_ff00_ff0f[16]= {ON,ON,ON,ET,ET,ET,ON,ON,ON,ON,ON,ES,CS,ES,CS,CS,};
1478 static const unsigned char UCD_BIDI_ffc0_ffcf[16]= {ON,ON,L,L,L,L,L,L,ON,ON,L,L,L,L,L,L,};
1479 static const unsigned char UCD_BIDI_ffd0_ffdf[16]= {ON,ON,L,L,L,L,L,L,ON,ON,L,L,L,ON,ON,ON,};
1480 static const unsigned char UCD_BIDI_ffe0_ffef[16]= {ET,ET,ON,ON,ON,ET,ET,ON,ON,ON,ON,ON,ON,ON,ON,ON,};
1481 static const unsigned char * const UCD_BIDI_ff00_ffff[16]= {
1482 UCD_BIDI_ff00_ff0f,
1483 UCD_BIDI_0030_003f, /* UCD_BIDI_ff10_ff1f */
1484 UCD_BIDI_0040_004f, /* UCD_BIDI_ff20_ff2f */
1485 UCD_BIDI_0050_005f, /* UCD_BIDI_ff30_ff3f */
1486 UCD_BIDI_0040_004f, /* UCD_BIDI_ff40_ff4f */
1487 UCD_BIDI_0050_005f, /* UCD_BIDI_ff50_ff5f */
1488 UCD_BIDI_0a60_0a6f, /* UCD_BIDI_ff60_ff6f */
1489 UCD_BIDI_00c0_00cf, /* UCD_BIDI_ff70_ff7f */
1490 UCD_BIDI_00c0_00cf, /* UCD_BIDI_ff80_ff8f */
1491 UCD_BIDI_00c0_00cf, /* UCD_BIDI_ff90_ff9f */
1492 UCD_BIDI_00c0_00cf, /* UCD_BIDI_ffa0_ffaf */
1493 UCD_BIDI_2c20_2c2f, /* UCD_BIDI_ffb0_ffbf */
1494 UCD_BIDI_ffc0_ffcf,
1495 UCD_BIDI_ffd0_ffdf,
1496 UCD_BIDI_ffe0_ffef,
1497 UCD_BIDI_02f0_02ff, /* UCD_BIDI_fff0_ffff */
1498 };
1499 static const unsigned char * const * const UCD_BIDI_f000_ffff[16]= {
1500 UCD_BIDI_0100_01ff, /* UCD_BIDI_f000_f0ff */
1501 UCD_BIDI_0100_01ff, /* UCD_BIDI_f100_f1ff */
1502 UCD_BIDI_0100_01ff, /* UCD_BIDI_f200_f2ff */
1503 UCD_BIDI_0100_01ff, /* UCD_BIDI_f300_f3ff */
1504 UCD_BIDI_0100_01ff, /* UCD_BIDI_f400_f4ff */
1505 UCD_BIDI_0100_01ff, /* UCD_BIDI_f500_f5ff */
1506 UCD_BIDI_0100_01ff, /* UCD_BIDI_f600_f6ff */
1507 UCD_BIDI_0100_01ff, /* UCD_BIDI_f700_f7ff */
1508 UCD_BIDI_0100_01ff, /* UCD_BIDI_f800_f8ff */
1509 UCD_BIDI_0100_01ff, /* UCD_BIDI_f900_f9ff */
1510 UCD_BIDI_fa00_faff,
1511 UCD_BIDI_fb00_fbff,
1512 UCD_BIDI_fc00_fcff,
1513 UCD_BIDI_fd00_fdff,
1514 UCD_BIDI_fe00_feff,
1515 UCD_BIDI_ff00_ffff,
1516 };
1517 static const unsigned char * const * const * const UCD_BIDI[16]={
1518 UCD_BIDI_0000_0fff,
1519 UCD_BIDI_1000_1fff,
1520 UCD_BIDI_2000_2fff,
1521 UCD_BIDI_3000_3fff,
1522 UCD_BIDI_4000_4fff,
1523 UCD_BIDI_5000_5fff,
1524 UCD_BIDI_5000_5fff, /* UCD_BIDI_6000_6fff */
1525 UCD_BIDI_5000_5fff, /* UCD_BIDI_7000_7fff */
1526 UCD_BIDI_5000_5fff, /* UCD_BIDI_8000_8fff */
1527 UCD_BIDI_9000_9fff,
1528 UCD_BIDI_a000_afff,
1529 UCD_BIDI_5000_5fff, /* UCD_BIDI_b000_bfff */
1530 UCD_BIDI_5000_5fff, /* UCD_BIDI_c000_cfff */
1531 UCD_BIDI_d000_dfff,
1532 UCD_BIDI_5000_5fff, /* UCD_BIDI_e000_efff */
1533 UCD_BIDI_f000_ffff,
1534 };
1535
ucdBidiClass(int sym)1536 int ucdBidiClass( int sym ) {
1537 return ucdSymbolClass( sym, UCD_BIDI, ON );
1538 }
ucdBidiClassStr(int sym)1539 const char * ucdBidiClassStr( int sym ) {
1540 static char scratch[20];
1541 switch( sym )
1542 {
1543 case ET: return "ET";
1544 case S: return "S";
1545 case LRO: return "LRO";
1546 case AL: return "AL";
1547 case RLO: return "RLO";
1548 case BN: return "BN";
1549 case RLE: return "RLE";
1550 case L: return "L";
1551 case LRE: return "LRE";
1552 case NSM: return "NSM";
1553 case ON: return "ON";
1554 case B: return "B";
1555 case PDF: return "PDF";
1556 case CS: return "CS";
1557 case AN: return "AN";
1558 case WS: return "WS";
1559 case R: return "R";
1560 case ES: return "ES";
1561 case EN: return "EN";
1562 default:
1563 sprintf( scratch, "%d", sym );
1564 return scratch;
1565 }
1566 }
1567