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