1 /***************************************************************************
2  * Copyright (c) 2024 Microsoft Corporation
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the MIT License which is available at
6  * https://opensource.org/licenses/MIT.
7  *
8  * SPDX-License-Identifier: MIT
9  **************************************************************************/
10 
11 
12 /**************************************************************************/
13 /**************************************************************************/
14 /**                                                                       */
15 /** GUIX Component                                                        */
16 /**                                                                       */
17 /**   Utility (Utility)                                                   */
18 /**                                                                       */
19 /**************************************************************************/
20 #define GX_SOURCE_CODE
21 
22 
23 /* Include necessary system files.  */
24 
25 #include "gx_api.h"
26 #include "gx_utility.h"
27 
28 #if defined(GX_DYNAMIC_BIDI_TEXT_SUPPORT)
29 static GX_CONST GX_BIDI_CHARACTER_INFO _gx_bidi_character_types[] =
30 {
31     {0x0041, 0x005A, GX_BIDI_CHARACTER_TYPE_L},
32     {0x0061, 0x007A, GX_BIDI_CHARACTER_TYPE_L},
33     {0x00AA, 0x00AA, GX_BIDI_CHARACTER_TYPE_L},
34     {0x00B5, 0x00B5, GX_BIDI_CHARACTER_TYPE_L},
35     {0x00BA, 0x00BA, GX_BIDI_CHARACTER_TYPE_L},
36     {0x00C0, 0x00D6, GX_BIDI_CHARACTER_TYPE_L},
37     {0x00D8, 0x00F6, GX_BIDI_CHARACTER_TYPE_L},
38     {0x00F8, 0x01BA, GX_BIDI_CHARACTER_TYPE_L},
39     {0x01BB, 0x01BB, GX_BIDI_CHARACTER_TYPE_L},
40     {0x01BC, 0x01BF, GX_BIDI_CHARACTER_TYPE_L},
41     {0x01C0, 0x01C3, GX_BIDI_CHARACTER_TYPE_L},
42     {0x01C4, 0x0293, GX_BIDI_CHARACTER_TYPE_L},
43     {0x0294, 0x0294, GX_BIDI_CHARACTER_TYPE_L},
44     {0x0295, 0x02AF, GX_BIDI_CHARACTER_TYPE_L},
45     {0x02B0, 0x02B8, GX_BIDI_CHARACTER_TYPE_L},
46     {0x02BB, 0x02C1, GX_BIDI_CHARACTER_TYPE_L},
47     {0x02D0, 0x02D1, GX_BIDI_CHARACTER_TYPE_L},
48     {0x02E0, 0x02E4, GX_BIDI_CHARACTER_TYPE_L},
49     {0x02EE, 0x02EE, GX_BIDI_CHARACTER_TYPE_L},
50     {0x0370, 0x0373, GX_BIDI_CHARACTER_TYPE_L},
51     {0x0376, 0x0377, GX_BIDI_CHARACTER_TYPE_L},
52     {0x037A, 0x037A, GX_BIDI_CHARACTER_TYPE_L},
53     {0x037B, 0x037D, GX_BIDI_CHARACTER_TYPE_L},
54     {0x0386, 0x0386, GX_BIDI_CHARACTER_TYPE_L},
55     {0x0388, 0x038A, GX_BIDI_CHARACTER_TYPE_L},
56     {0x038C, 0x038C, GX_BIDI_CHARACTER_TYPE_L},
57     {0x038E, 0x03A1, GX_BIDI_CHARACTER_TYPE_L},
58     {0x03A3, 0x03F5, GX_BIDI_CHARACTER_TYPE_L},
59     {0x03F7, 0x0481, GX_BIDI_CHARACTER_TYPE_L},
60     {0x0482, 0x0482, GX_BIDI_CHARACTER_TYPE_L},
61     {0x048A, 0x0523, GX_BIDI_CHARACTER_TYPE_L},
62     {0x0531, 0x0556, GX_BIDI_CHARACTER_TYPE_L},
63     {0x0559, 0x0559, GX_BIDI_CHARACTER_TYPE_L},
64     {0x055A, 0x055F, GX_BIDI_CHARACTER_TYPE_L},
65     {0x0561, 0x0587, GX_BIDI_CHARACTER_TYPE_L},
66     {0x0589, 0x0589, GX_BIDI_CHARACTER_TYPE_L},
67     {0x0903, 0x0903, GX_BIDI_CHARACTER_TYPE_L},
68     {0x0904, 0x0939, GX_BIDI_CHARACTER_TYPE_L},
69     {0x093D, 0x093D, GX_BIDI_CHARACTER_TYPE_L},
70     {0x093E, 0x0940, GX_BIDI_CHARACTER_TYPE_L},
71     {0x0949, 0x094C, GX_BIDI_CHARACTER_TYPE_L},
72     {0x0950, 0x0950, GX_BIDI_CHARACTER_TYPE_L},
73     {0x0958, 0x0961, GX_BIDI_CHARACTER_TYPE_L},
74     {0x0964, 0x0965, GX_BIDI_CHARACTER_TYPE_L},
75     {0x0966, 0x096F, GX_BIDI_CHARACTER_TYPE_L},
76     {0x0970, 0x0970, GX_BIDI_CHARACTER_TYPE_L},
77     {0x0971, 0x0971, GX_BIDI_CHARACTER_TYPE_L},
78     {0x0972, 0x0972, GX_BIDI_CHARACTER_TYPE_L},
79     {0x097B, 0x097F, GX_BIDI_CHARACTER_TYPE_L},
80     {0x0982, 0x0983, GX_BIDI_CHARACTER_TYPE_L},
81     {0x0985, 0x098C, GX_BIDI_CHARACTER_TYPE_L},
82     {0x098F, 0x0990, GX_BIDI_CHARACTER_TYPE_L},
83     {0x0993, 0x09A8, GX_BIDI_CHARACTER_TYPE_L},
84     {0x09AA, 0x09B0, GX_BIDI_CHARACTER_TYPE_L},
85     {0x09B2, 0x09B2, GX_BIDI_CHARACTER_TYPE_L},
86     {0x09B6, 0x09B9, GX_BIDI_CHARACTER_TYPE_L},
87     {0x09BD, 0x09BD, GX_BIDI_CHARACTER_TYPE_L},
88     {0x09BE, 0x09C0, GX_BIDI_CHARACTER_TYPE_L},
89     {0x09C7, 0x09C8, GX_BIDI_CHARACTER_TYPE_L},
90     {0x09CB, 0x09CC, GX_BIDI_CHARACTER_TYPE_L},
91     {0x09CE, 0x09CE, GX_BIDI_CHARACTER_TYPE_L},
92     {0x09D7, 0x09D7, GX_BIDI_CHARACTER_TYPE_L},
93     {0x09DC, 0x09DD, GX_BIDI_CHARACTER_TYPE_L},
94     {0x09DF, 0x09E1, GX_BIDI_CHARACTER_TYPE_L},
95     {0x09E6, 0x09EF, GX_BIDI_CHARACTER_TYPE_L},
96     {0x09F0, 0x09F1, GX_BIDI_CHARACTER_TYPE_L},
97     {0x09F4, 0x09F9, GX_BIDI_CHARACTER_TYPE_L},
98     {0x09FA, 0x09FA, GX_BIDI_CHARACTER_TYPE_L},
99     {0x0A03, 0x0A03, GX_BIDI_CHARACTER_TYPE_L},
100     {0x0A05, 0x0A0A, GX_BIDI_CHARACTER_TYPE_L},
101     {0x0A0F, 0x0A10, GX_BIDI_CHARACTER_TYPE_L},
102     {0x0A13, 0x0A28, GX_BIDI_CHARACTER_TYPE_L},
103     {0x0A2A, 0x0A30, GX_BIDI_CHARACTER_TYPE_L},
104     {0x0A32, 0x0A33, GX_BIDI_CHARACTER_TYPE_L},
105     {0x0A35, 0x0A36, GX_BIDI_CHARACTER_TYPE_L},
106     {0x0A38, 0x0A39, GX_BIDI_CHARACTER_TYPE_L},
107     {0x0A3E, 0x0A40, GX_BIDI_CHARACTER_TYPE_L},
108     {0x0A59, 0x0A5C, GX_BIDI_CHARACTER_TYPE_L},
109     {0x0A5E, 0x0A5E, GX_BIDI_CHARACTER_TYPE_L},
110     {0x0A66, 0x0A6F, GX_BIDI_CHARACTER_TYPE_L},
111     {0x0A72, 0x0A74, GX_BIDI_CHARACTER_TYPE_L},
112     {0x0A83, 0x0A83, GX_BIDI_CHARACTER_TYPE_L},
113     {0x0A85, 0x0A8D, GX_BIDI_CHARACTER_TYPE_L},
114     {0x0A8F, 0x0A91, GX_BIDI_CHARACTER_TYPE_L},
115     {0x0A93, 0x0AA8, GX_BIDI_CHARACTER_TYPE_L},
116     {0x0AAA, 0x0AB0, GX_BIDI_CHARACTER_TYPE_L},
117     {0x0AB2, 0x0AB3, GX_BIDI_CHARACTER_TYPE_L},
118     {0x0AB5, 0x0AB9, GX_BIDI_CHARACTER_TYPE_L},
119     {0x0ABD, 0x0ABD, GX_BIDI_CHARACTER_TYPE_L},
120     {0x0ABE, 0x0AC0, GX_BIDI_CHARACTER_TYPE_L},
121     {0x0AC9, 0x0AC9, GX_BIDI_CHARACTER_TYPE_L},
122     {0x0ACB, 0x0ACC, GX_BIDI_CHARACTER_TYPE_L},
123     {0x0AD0, 0x0AD0, GX_BIDI_CHARACTER_TYPE_L},
124     {0x0AE0, 0x0AE1, GX_BIDI_CHARACTER_TYPE_L},
125     {0x0AE6, 0x0AEF, GX_BIDI_CHARACTER_TYPE_L},
126     {0x0B02, 0x0B03, GX_BIDI_CHARACTER_TYPE_L},
127     {0x0B05, 0x0B0C, GX_BIDI_CHARACTER_TYPE_L},
128     {0x0B0F, 0x0B10, GX_BIDI_CHARACTER_TYPE_L},
129     {0x0B13, 0x0B28, GX_BIDI_CHARACTER_TYPE_L},
130     {0x0B2A, 0x0B30, GX_BIDI_CHARACTER_TYPE_L},
131     {0x0B32, 0x0B33, GX_BIDI_CHARACTER_TYPE_L},
132     {0x0B35, 0x0B39, GX_BIDI_CHARACTER_TYPE_L},
133     {0x0B3D, 0x0B3D, GX_BIDI_CHARACTER_TYPE_L},
134     {0x0B3E, 0x0B3E, GX_BIDI_CHARACTER_TYPE_L},
135     {0x0B40, 0x0B40, GX_BIDI_CHARACTER_TYPE_L},
136     {0x0B47, 0x0B48, GX_BIDI_CHARACTER_TYPE_L},
137     {0x0B4B, 0x0B4C, GX_BIDI_CHARACTER_TYPE_L},
138     {0x0B57, 0x0B57, GX_BIDI_CHARACTER_TYPE_L},
139     {0x0B5C, 0x0B5D, GX_BIDI_CHARACTER_TYPE_L},
140     {0x0B5F, 0x0B61, GX_BIDI_CHARACTER_TYPE_L},
141     {0x0B66, 0x0B6F, GX_BIDI_CHARACTER_TYPE_L},
142     {0x0B70, 0x0B70, GX_BIDI_CHARACTER_TYPE_L},
143     {0x0B71, 0x0B71, GX_BIDI_CHARACTER_TYPE_L},
144     {0x0B83, 0x0B83, GX_BIDI_CHARACTER_TYPE_L},
145     {0x0B85, 0x0B8A, GX_BIDI_CHARACTER_TYPE_L},
146     {0x0B8E, 0x0B90, GX_BIDI_CHARACTER_TYPE_L},
147     {0x0B92, 0x0B95, GX_BIDI_CHARACTER_TYPE_L},
148     {0x0B99, 0x0B9A, GX_BIDI_CHARACTER_TYPE_L},
149     {0x0B9C, 0x0B9C, GX_BIDI_CHARACTER_TYPE_L},
150     {0x0B9E, 0x0B9F, GX_BIDI_CHARACTER_TYPE_L},
151     {0x0BA3, 0x0BA4, GX_BIDI_CHARACTER_TYPE_L},
152     {0x0BA8, 0x0BAA, GX_BIDI_CHARACTER_TYPE_L},
153     {0x0BAE, 0x0BB9, GX_BIDI_CHARACTER_TYPE_L},
154     {0x0BBE, 0x0BBF, GX_BIDI_CHARACTER_TYPE_L},
155     {0x0BC1, 0x0BC2, GX_BIDI_CHARACTER_TYPE_L},
156     {0x0BC6, 0x0BC8, GX_BIDI_CHARACTER_TYPE_L},
157     {0x0BCA, 0x0BCC, GX_BIDI_CHARACTER_TYPE_L},
158     {0x0BD0, 0x0BD0, GX_BIDI_CHARACTER_TYPE_L},
159     {0x0BD7, 0x0BD7, GX_BIDI_CHARACTER_TYPE_L},
160     {0x0BE6, 0x0BEF, GX_BIDI_CHARACTER_TYPE_L},
161     {0x0BF0, 0x0BF2, GX_BIDI_CHARACTER_TYPE_L},
162     {0x0C01, 0x0C03, GX_BIDI_CHARACTER_TYPE_L},
163     {0x0C05, 0x0C0C, GX_BIDI_CHARACTER_TYPE_L},
164     {0x0C0E, 0x0C10, GX_BIDI_CHARACTER_TYPE_L},
165     {0x0C12, 0x0C28, GX_BIDI_CHARACTER_TYPE_L},
166     {0x0C2A, 0x0C33, GX_BIDI_CHARACTER_TYPE_L},
167     {0x0C35, 0x0C39, GX_BIDI_CHARACTER_TYPE_L},
168     {0x0C3D, 0x0C3D, GX_BIDI_CHARACTER_TYPE_L},
169     {0x0C41, 0x0C44, GX_BIDI_CHARACTER_TYPE_L},
170     {0x0C58, 0x0C59, GX_BIDI_CHARACTER_TYPE_L},
171     {0x0C60, 0x0C61, GX_BIDI_CHARACTER_TYPE_L},
172     {0x0C66, 0x0C6F, GX_BIDI_CHARACTER_TYPE_L},
173     {0x0C7F, 0x0C7F, GX_BIDI_CHARACTER_TYPE_L},
174     {0x0C82, 0x0C83, GX_BIDI_CHARACTER_TYPE_L},
175     {0x0C85, 0x0C8C, GX_BIDI_CHARACTER_TYPE_L},
176     {0x0C8E, 0x0C90, GX_BIDI_CHARACTER_TYPE_L},
177     {0x0C92, 0x0CA8, GX_BIDI_CHARACTER_TYPE_L},
178     {0x0CAA, 0x0CB3, GX_BIDI_CHARACTER_TYPE_L},
179     {0x0CB5, 0x0CB9, GX_BIDI_CHARACTER_TYPE_L},
180     {0x0CBD, 0x0CBD, GX_BIDI_CHARACTER_TYPE_L},
181     {0x0CBE, 0x0CBE, GX_BIDI_CHARACTER_TYPE_L},
182     {0x0CBF, 0x0CBF, GX_BIDI_CHARACTER_TYPE_L},
183     {0x0CC0, 0x0CC4, GX_BIDI_CHARACTER_TYPE_L},
184     {0x0CC6, 0x0CC6, GX_BIDI_CHARACTER_TYPE_L},
185     {0x0CC7, 0x0CC8, GX_BIDI_CHARACTER_TYPE_L},
186     {0x0CCA, 0x0CCB, GX_BIDI_CHARACTER_TYPE_L},
187     {0x0CD5, 0x0CD6, GX_BIDI_CHARACTER_TYPE_L},
188     {0x0CDE, 0x0CDE, GX_BIDI_CHARACTER_TYPE_L},
189     {0x0CE0, 0x0CE1, GX_BIDI_CHARACTER_TYPE_L},
190     {0x0CE6, 0x0CEF, GX_BIDI_CHARACTER_TYPE_L},
191     {0x0D02, 0x0D03, GX_BIDI_CHARACTER_TYPE_L},
192     {0x0D05, 0x0D0C, GX_BIDI_CHARACTER_TYPE_L},
193     {0x0D0E, 0x0D10, GX_BIDI_CHARACTER_TYPE_L},
194     {0x0D12, 0x0D28, GX_BIDI_CHARACTER_TYPE_L},
195     {0x0D2A, 0x0D39, GX_BIDI_CHARACTER_TYPE_L},
196     {0x0D3D, 0x0D3D, GX_BIDI_CHARACTER_TYPE_L},
197     {0x0D3E, 0x0D40, GX_BIDI_CHARACTER_TYPE_L},
198     {0x0D46, 0x0D48, GX_BIDI_CHARACTER_TYPE_L},
199     {0x0D4A, 0x0D4C, GX_BIDI_CHARACTER_TYPE_L},
200     {0x0D57, 0x0D57, GX_BIDI_CHARACTER_TYPE_L},
201     {0x0D60, 0x0D61, GX_BIDI_CHARACTER_TYPE_L},
202     {0x0D66, 0x0D6F, GX_BIDI_CHARACTER_TYPE_L},
203     {0x0D70, 0x0D75, GX_BIDI_CHARACTER_TYPE_L},
204     {0x0D79, 0x0D79, GX_BIDI_CHARACTER_TYPE_L},
205     {0x0D7A, 0x0D7F, GX_BIDI_CHARACTER_TYPE_L},
206     {0x0D82, 0x0D83, GX_BIDI_CHARACTER_TYPE_L},
207     {0x0D85, 0x0D96, GX_BIDI_CHARACTER_TYPE_L},
208     {0x0D9A, 0x0DB1, GX_BIDI_CHARACTER_TYPE_L},
209     {0x0DB3, 0x0DBB, GX_BIDI_CHARACTER_TYPE_L},
210     {0x0DBD, 0x0DBD, GX_BIDI_CHARACTER_TYPE_L},
211     {0x0DC0, 0x0DC6, GX_BIDI_CHARACTER_TYPE_L},
212     {0x0DCF, 0x0DD1, GX_BIDI_CHARACTER_TYPE_L},
213     {0x0DD8, 0x0DDF, GX_BIDI_CHARACTER_TYPE_L},
214     {0x0DF2, 0x0DF3, GX_BIDI_CHARACTER_TYPE_L},
215     {0x0DF4, 0x0DF4, GX_BIDI_CHARACTER_TYPE_L},
216     {0x0E01, 0x0E30, GX_BIDI_CHARACTER_TYPE_L},
217     {0x0E32, 0x0E33, GX_BIDI_CHARACTER_TYPE_L},
218     {0x0E40, 0x0E45, GX_BIDI_CHARACTER_TYPE_L},
219     {0x0E46, 0x0E46, GX_BIDI_CHARACTER_TYPE_L},
220     {0x0E4F, 0x0E4F, GX_BIDI_CHARACTER_TYPE_L},
221     {0x0E50, 0x0E59, GX_BIDI_CHARACTER_TYPE_L},
222     {0x0E5A, 0x0E5B, GX_BIDI_CHARACTER_TYPE_L},
223     {0x0E81, 0x0E82, GX_BIDI_CHARACTER_TYPE_L},
224     {0x0E84, 0x0E84, GX_BIDI_CHARACTER_TYPE_L},
225     {0x0E87, 0x0E88, GX_BIDI_CHARACTER_TYPE_L},
226     {0x0E8A, 0x0E8A, GX_BIDI_CHARACTER_TYPE_L},
227     {0x0E8D, 0x0E8D, GX_BIDI_CHARACTER_TYPE_L},
228     {0x0E94, 0x0E97, GX_BIDI_CHARACTER_TYPE_L},
229     {0x0E99, 0x0E9F, GX_BIDI_CHARACTER_TYPE_L},
230     {0x0EA1, 0x0EA3, GX_BIDI_CHARACTER_TYPE_L},
231     {0x0EA5, 0x0EA5, GX_BIDI_CHARACTER_TYPE_L},
232     {0x0EA7, 0x0EA7, GX_BIDI_CHARACTER_TYPE_L},
233     {0x0EAA, 0x0EAB, GX_BIDI_CHARACTER_TYPE_L},
234     {0x0EAD, 0x0EB0, GX_BIDI_CHARACTER_TYPE_L},
235     {0x0EB2, 0x0EB3, GX_BIDI_CHARACTER_TYPE_L},
236     {0x0EBD, 0x0EBD, GX_BIDI_CHARACTER_TYPE_L},
237     {0x0EC0, 0x0EC4, GX_BIDI_CHARACTER_TYPE_L},
238     {0x0EC6, 0x0EC6, GX_BIDI_CHARACTER_TYPE_L},
239     {0x0ED0, 0x0ED9, GX_BIDI_CHARACTER_TYPE_L},
240     {0x0EDC, 0x0EDD, GX_BIDI_CHARACTER_TYPE_L},
241     {0x0F00, 0x0F00, GX_BIDI_CHARACTER_TYPE_L},
242     {0x0F01, 0x0F03, GX_BIDI_CHARACTER_TYPE_L},
243     {0x0F04, 0x0F12, GX_BIDI_CHARACTER_TYPE_L},
244     {0x0F13, 0x0F17, GX_BIDI_CHARACTER_TYPE_L},
245     {0x0F1A, 0x0F1F, GX_BIDI_CHARACTER_TYPE_L},
246     {0x0F20, 0x0F29, GX_BIDI_CHARACTER_TYPE_L},
247     {0x0F2A, 0x0F33, GX_BIDI_CHARACTER_TYPE_L},
248     {0x0F34, 0x0F34, GX_BIDI_CHARACTER_TYPE_L},
249     {0x0F36, 0x0F36, GX_BIDI_CHARACTER_TYPE_L},
250     {0x0F38, 0x0F38, GX_BIDI_CHARACTER_TYPE_L},
251     {0x0F3E, 0x0F3F, GX_BIDI_CHARACTER_TYPE_L},
252     {0x0F40, 0x0F47, GX_BIDI_CHARACTER_TYPE_L},
253     {0x0F49, 0x0F6C, GX_BIDI_CHARACTER_TYPE_L},
254     {0x0F7F, 0x0F7F, GX_BIDI_CHARACTER_TYPE_L},
255     {0x0F85, 0x0F85, GX_BIDI_CHARACTER_TYPE_L},
256     {0x0F88, 0x0F8B, GX_BIDI_CHARACTER_TYPE_L},
257     {0x0FBE, 0x0FC5, GX_BIDI_CHARACTER_TYPE_L},
258     {0x0FC7, 0x0FCC, GX_BIDI_CHARACTER_TYPE_L},
259     {0x0FCE, 0x0FCF, GX_BIDI_CHARACTER_TYPE_L},
260     {0x0FD0, 0x0FD4, GX_BIDI_CHARACTER_TYPE_L},
261     {0x1000, 0x102A, GX_BIDI_CHARACTER_TYPE_L},
262     {0x102B, 0x102C, GX_BIDI_CHARACTER_TYPE_L},
263     {0x1031, 0x1031, GX_BIDI_CHARACTER_TYPE_L},
264     {0x1038, 0x1038, GX_BIDI_CHARACTER_TYPE_L},
265     {0x103B, 0x103C, GX_BIDI_CHARACTER_TYPE_L},
266     {0x103F, 0x103F, GX_BIDI_CHARACTER_TYPE_L},
267     {0x1040, 0x1049, GX_BIDI_CHARACTER_TYPE_L},
268     {0x104A, 0x104F, GX_BIDI_CHARACTER_TYPE_L},
269     {0x1050, 0x1055, GX_BIDI_CHARACTER_TYPE_L},
270     {0x1056, 0x1057, GX_BIDI_CHARACTER_TYPE_L},
271     {0x105A, 0x105D, GX_BIDI_CHARACTER_TYPE_L},
272     {0x1061, 0x1061, GX_BIDI_CHARACTER_TYPE_L},
273     {0x1062, 0x1064, GX_BIDI_CHARACTER_TYPE_L},
274     {0x1065, 0x1066, GX_BIDI_CHARACTER_TYPE_L},
275     {0x1067, 0x106D, GX_BIDI_CHARACTER_TYPE_L},
276     {0x106E, 0x1070, GX_BIDI_CHARACTER_TYPE_L},
277     {0x1075, 0x1081, GX_BIDI_CHARACTER_TYPE_L},
278     {0x1083, 0x1084, GX_BIDI_CHARACTER_TYPE_L},
279     {0x1087, 0x108C, GX_BIDI_CHARACTER_TYPE_L},
280     {0x108E, 0x108E, GX_BIDI_CHARACTER_TYPE_L},
281     {0x108F, 0x108F, GX_BIDI_CHARACTER_TYPE_L},
282     {0x1090, 0x1099, GX_BIDI_CHARACTER_TYPE_L},
283     {0x109E, 0x109F, GX_BIDI_CHARACTER_TYPE_L},
284     {0x10A0, 0x10C5, GX_BIDI_CHARACTER_TYPE_L},
285     {0x10D0, 0x10FA, GX_BIDI_CHARACTER_TYPE_L},
286     {0x10FB, 0x10FB, GX_BIDI_CHARACTER_TYPE_L},
287     {0x10FC, 0x10FC, GX_BIDI_CHARACTER_TYPE_L},
288     {0x1100, 0x1159, GX_BIDI_CHARACTER_TYPE_L},
289     {0x115F, 0x11A2, GX_BIDI_CHARACTER_TYPE_L},
290     {0x11A8, 0x11F9, GX_BIDI_CHARACTER_TYPE_L},
291     {0x1200, 0x1248, GX_BIDI_CHARACTER_TYPE_L},
292     {0x124A, 0x124D, GX_BIDI_CHARACTER_TYPE_L},
293     {0x1250, 0x1256, GX_BIDI_CHARACTER_TYPE_L},
294     {0x1258, 0x1258, GX_BIDI_CHARACTER_TYPE_L},
295     {0x125A, 0x125D, GX_BIDI_CHARACTER_TYPE_L},
296     {0x1260, 0x1288, GX_BIDI_CHARACTER_TYPE_L},
297     {0x128A, 0x128D, GX_BIDI_CHARACTER_TYPE_L},
298     {0x1290, 0x12B0, GX_BIDI_CHARACTER_TYPE_L},
299     {0x12B2, 0x12B5, GX_BIDI_CHARACTER_TYPE_L},
300     {0x12B8, 0x12BE, GX_BIDI_CHARACTER_TYPE_L},
301     {0x12C0, 0x12C0, GX_BIDI_CHARACTER_TYPE_L},
302     {0x12C2, 0x12C5, GX_BIDI_CHARACTER_TYPE_L},
303     {0x12C8, 0x12D6, GX_BIDI_CHARACTER_TYPE_L},
304     {0x12D8, 0x1310, GX_BIDI_CHARACTER_TYPE_L},
305     {0x1312, 0x1315, GX_BIDI_CHARACTER_TYPE_L},
306     {0x1318, 0x135A, GX_BIDI_CHARACTER_TYPE_L},
307     {0x1360, 0x1360, GX_BIDI_CHARACTER_TYPE_L},
308     {0x1361, 0x1368, GX_BIDI_CHARACTER_TYPE_L},
309     {0x1369, 0x137C, GX_BIDI_CHARACTER_TYPE_L},
310     {0x1380, 0x138F, GX_BIDI_CHARACTER_TYPE_L},
311     {0x13A0, 0x13F4, GX_BIDI_CHARACTER_TYPE_L},
312     {0x1401, 0x166C, GX_BIDI_CHARACTER_TYPE_L},
313     {0x166D, 0x166E, GX_BIDI_CHARACTER_TYPE_L},
314     {0x166F, 0x1676, GX_BIDI_CHARACTER_TYPE_L},
315     {0x1681, 0x169A, GX_BIDI_CHARACTER_TYPE_L},
316     {0x16A0, 0x16EA, GX_BIDI_CHARACTER_TYPE_L},
317     {0x16EB, 0x16ED, GX_BIDI_CHARACTER_TYPE_L},
318     {0x16EE, 0x16F0, GX_BIDI_CHARACTER_TYPE_L},
319     {0x1700, 0x170C, GX_BIDI_CHARACTER_TYPE_L},
320     {0x170E, 0x1711, GX_BIDI_CHARACTER_TYPE_L},
321     {0x1720, 0x1731, GX_BIDI_CHARACTER_TYPE_L},
322     {0x1735, 0x1736, GX_BIDI_CHARACTER_TYPE_L},
323     {0x1740, 0x1751, GX_BIDI_CHARACTER_TYPE_L},
324     {0x1760, 0x176C, GX_BIDI_CHARACTER_TYPE_L},
325     {0x176E, 0x1770, GX_BIDI_CHARACTER_TYPE_L},
326     {0x1780, 0x17B3, GX_BIDI_CHARACTER_TYPE_L},
327     {0x17B4, 0x17B5, GX_BIDI_CHARACTER_TYPE_L},
328     {0x17B6, 0x17B6, GX_BIDI_CHARACTER_TYPE_L},
329     {0x17BE, 0x17C5, GX_BIDI_CHARACTER_TYPE_L},
330     {0x17C7, 0x17C8, GX_BIDI_CHARACTER_TYPE_L},
331     {0x17D4, 0x17D6, GX_BIDI_CHARACTER_TYPE_L},
332     {0x17D7, 0x17D7, GX_BIDI_CHARACTER_TYPE_L},
333     {0x17D8, 0x17DA, GX_BIDI_CHARACTER_TYPE_L},
334     {0x17DC, 0x17DC, GX_BIDI_CHARACTER_TYPE_L},
335     {0x17E0, 0x17E9, GX_BIDI_CHARACTER_TYPE_L},
336     {0x1810, 0x1819, GX_BIDI_CHARACTER_TYPE_L},
337     {0x1820, 0x1842, GX_BIDI_CHARACTER_TYPE_L},
338     {0x1843, 0x1843, GX_BIDI_CHARACTER_TYPE_L},
339     {0x1844, 0x1877, GX_BIDI_CHARACTER_TYPE_L},
340     {0x1880, 0x18A8, GX_BIDI_CHARACTER_TYPE_L},
341     {0x18AA, 0x18AA, GX_BIDI_CHARACTER_TYPE_L},
342     {0x1900, 0x191C, GX_BIDI_CHARACTER_TYPE_L},
343     {0x1923, 0x1926, GX_BIDI_CHARACTER_TYPE_L},
344     {0x1929, 0x192B, GX_BIDI_CHARACTER_TYPE_L},
345     {0x1930, 0x1931, GX_BIDI_CHARACTER_TYPE_L},
346     {0x1933, 0x1938, GX_BIDI_CHARACTER_TYPE_L},
347     {0x1946, 0x194F, GX_BIDI_CHARACTER_TYPE_L},
348     {0x1950, 0x196D, GX_BIDI_CHARACTER_TYPE_L},
349     {0x1970, 0x1974, GX_BIDI_CHARACTER_TYPE_L},
350     {0x1980, 0x19A9, GX_BIDI_CHARACTER_TYPE_L},
351     {0x19B0, 0x19C0, GX_BIDI_CHARACTER_TYPE_L},
352     {0x19C1, 0x19C7, GX_BIDI_CHARACTER_TYPE_L},
353     {0x19C8, 0x19C9, GX_BIDI_CHARACTER_TYPE_L},
354     {0x19D0, 0x19D9, GX_BIDI_CHARACTER_TYPE_L},
355     {0x1A00, 0x1A16, GX_BIDI_CHARACTER_TYPE_L},
356     {0x1A19, 0x1A1B, GX_BIDI_CHARACTER_TYPE_L},
357     {0x1A1E, 0x1A1F, GX_BIDI_CHARACTER_TYPE_L},
358     {0x1B04, 0x1B04, GX_BIDI_CHARACTER_TYPE_L},
359     {0x1B05, 0x1B33, GX_BIDI_CHARACTER_TYPE_L},
360     {0x1B35, 0x1B35, GX_BIDI_CHARACTER_TYPE_L},
361     {0x1B3B, 0x1B3B, GX_BIDI_CHARACTER_TYPE_L},
362     {0x1B3D, 0x1B41, GX_BIDI_CHARACTER_TYPE_L},
363     {0x1B43, 0x1B44, GX_BIDI_CHARACTER_TYPE_L},
364     {0x1B45, 0x1B4B, GX_BIDI_CHARACTER_TYPE_L},
365     {0x1B50, 0x1B59, GX_BIDI_CHARACTER_TYPE_L},
366     {0x1B5A, 0x1B60, GX_BIDI_CHARACTER_TYPE_L},
367     {0x1B61, 0x1B6A, GX_BIDI_CHARACTER_TYPE_L},
368     {0x1B74, 0x1B7C, GX_BIDI_CHARACTER_TYPE_L},
369     {0x1B82, 0x1B82, GX_BIDI_CHARACTER_TYPE_L},
370     {0x1B83, 0x1BA0, GX_BIDI_CHARACTER_TYPE_L},
371     {0x1BA1, 0x1BA1, GX_BIDI_CHARACTER_TYPE_L},
372     {0x1BA6, 0x1BA7, GX_BIDI_CHARACTER_TYPE_L},
373     {0x1BAA, 0x1BAA, GX_BIDI_CHARACTER_TYPE_L},
374     {0x1BAE, 0x1BAF, GX_BIDI_CHARACTER_TYPE_L},
375     {0x1BB0, 0x1BB9, GX_BIDI_CHARACTER_TYPE_L},
376     {0x1C00, 0x1C23, GX_BIDI_CHARACTER_TYPE_L},
377     {0x1C24, 0x1C2B, GX_BIDI_CHARACTER_TYPE_L},
378     {0x1C34, 0x1C35, GX_BIDI_CHARACTER_TYPE_L},
379     {0x1C3B, 0x1C3F, GX_BIDI_CHARACTER_TYPE_L},
380     {0x1C40, 0x1C49, GX_BIDI_CHARACTER_TYPE_L},
381     {0x1C4D, 0x1C4F, GX_BIDI_CHARACTER_TYPE_L},
382     {0x1C50, 0x1C59, GX_BIDI_CHARACTER_TYPE_L},
383     {0x1C5A, 0x1C77, GX_BIDI_CHARACTER_TYPE_L},
384     {0x1C78, 0x1C7D, GX_BIDI_CHARACTER_TYPE_L},
385     {0x1C7E, 0x1C7F, GX_BIDI_CHARACTER_TYPE_L},
386     {0x1D00, 0x1D2B, GX_BIDI_CHARACTER_TYPE_L},
387     {0x1D2C, 0x1D61, GX_BIDI_CHARACTER_TYPE_L},
388     {0x1D62, 0x1D77, GX_BIDI_CHARACTER_TYPE_L},
389     {0x1D78, 0x1D78, GX_BIDI_CHARACTER_TYPE_L},
390     {0x1D79, 0x1D9A, GX_BIDI_CHARACTER_TYPE_L},
391     {0x1D9B, 0x1DBF, GX_BIDI_CHARACTER_TYPE_L},
392     {0x1E00, 0x1F15, GX_BIDI_CHARACTER_TYPE_L},
393     {0x1F18, 0x1F1D, GX_BIDI_CHARACTER_TYPE_L},
394     {0x1F20, 0x1F45, GX_BIDI_CHARACTER_TYPE_L},
395     {0x1F48, 0x1F4D, GX_BIDI_CHARACTER_TYPE_L},
396     {0x1F50, 0x1F57, GX_BIDI_CHARACTER_TYPE_L},
397     {0x1F59, 0x1F59, GX_BIDI_CHARACTER_TYPE_L},
398     {0x1F5B, 0x1F5B, GX_BIDI_CHARACTER_TYPE_L},
399     {0x1F5D, 0x1F5D, GX_BIDI_CHARACTER_TYPE_L},
400     {0x1F5F, 0x1F7D, GX_BIDI_CHARACTER_TYPE_L},
401     {0x1F80, 0x1FB4, GX_BIDI_CHARACTER_TYPE_L},
402     {0x1FB6, 0x1FBC, GX_BIDI_CHARACTER_TYPE_L},
403     {0x1FBE, 0x1FBE, GX_BIDI_CHARACTER_TYPE_L},
404     {0x1FC2, 0x1FC4, GX_BIDI_CHARACTER_TYPE_L},
405     {0x1FC6, 0x1FCC, GX_BIDI_CHARACTER_TYPE_L},
406     {0x1FD0, 0x1FD3, GX_BIDI_CHARACTER_TYPE_L},
407     {0x1FD6, 0x1FDB, GX_BIDI_CHARACTER_TYPE_L},
408     {0x1FE0, 0x1FEC, GX_BIDI_CHARACTER_TYPE_L},
409     {0x1FF2, 0x1FF4, GX_BIDI_CHARACTER_TYPE_L},
410     {0x1FF6, 0x1FFC, GX_BIDI_CHARACTER_TYPE_L},
411     {0x200E, 0x200E, GX_BIDI_CHARACTER_TYPE_L},
412     {0x2071, 0x2071, GX_BIDI_CHARACTER_TYPE_L},
413     {0x207F, 0x207F, GX_BIDI_CHARACTER_TYPE_L},
414     {0x2090, 0x2094, GX_BIDI_CHARACTER_TYPE_L},
415     {0x2102, 0x2102, GX_BIDI_CHARACTER_TYPE_L},
416     {0x2107, 0x2107, GX_BIDI_CHARACTER_TYPE_L},
417     {0x210A, 0x2113, GX_BIDI_CHARACTER_TYPE_L},
418     {0x2115, 0x2115, GX_BIDI_CHARACTER_TYPE_L},
419     {0x2119, 0x211D, GX_BIDI_CHARACTER_TYPE_L},
420     {0x2124, 0x2124, GX_BIDI_CHARACTER_TYPE_L},
421     {0x2126, 0x2126, GX_BIDI_CHARACTER_TYPE_L},
422     {0x2128, 0x2128, GX_BIDI_CHARACTER_TYPE_L},
423     {0x212A, 0x212D, GX_BIDI_CHARACTER_TYPE_L},
424     {0x212F, 0x2134, GX_BIDI_CHARACTER_TYPE_L},
425     {0x2135, 0x2138, GX_BIDI_CHARACTER_TYPE_L},
426     {0x2139, 0x2139, GX_BIDI_CHARACTER_TYPE_L},
427     {0x213C, 0x213F, GX_BIDI_CHARACTER_TYPE_L},
428     {0x2145, 0x2149, GX_BIDI_CHARACTER_TYPE_L},
429     {0x214E, 0x214E, GX_BIDI_CHARACTER_TYPE_L},
430     {0x214F, 0x214F, GX_BIDI_CHARACTER_TYPE_L},
431     {0x2160, 0x2182, GX_BIDI_CHARACTER_TYPE_L},
432     {0x2183, 0x2184, GX_BIDI_CHARACTER_TYPE_L},
433     {0x2185, 0x2188, GX_BIDI_CHARACTER_TYPE_L},
434     {0x2336, 0x237A, GX_BIDI_CHARACTER_TYPE_L},
435     {0x2395, 0x2395, GX_BIDI_CHARACTER_TYPE_L},
436     {0x249C, 0x24E9, GX_BIDI_CHARACTER_TYPE_L},
437     {0x26AC, 0x26AC, GX_BIDI_CHARACTER_TYPE_L},
438     {0x2800, 0x28FF, GX_BIDI_CHARACTER_TYPE_L},
439     {0x2C00, 0x2C2E, GX_BIDI_CHARACTER_TYPE_L},
440     {0x2C30, 0x2C5E, GX_BIDI_CHARACTER_TYPE_L},
441     {0x2C60, 0x2C6F, GX_BIDI_CHARACTER_TYPE_L},
442     {0x2C71, 0x2C7C, GX_BIDI_CHARACTER_TYPE_L},
443     {0x2C7D, 0x2C7D, GX_BIDI_CHARACTER_TYPE_L},
444     {0x2C80, 0x2CE4, GX_BIDI_CHARACTER_TYPE_L},
445     {0x2D00, 0x2D25, GX_BIDI_CHARACTER_TYPE_L},
446     {0x2D30, 0x2D65, GX_BIDI_CHARACTER_TYPE_L},
447     {0x2D6F, 0x2D6F, GX_BIDI_CHARACTER_TYPE_L},
448     {0x2D80, 0x2D96, GX_BIDI_CHARACTER_TYPE_L},
449     {0x2DA0, 0x2DA6, GX_BIDI_CHARACTER_TYPE_L},
450     {0x2DA8, 0x2DAE, GX_BIDI_CHARACTER_TYPE_L},
451     {0x2DB0, 0x2DB6, GX_BIDI_CHARACTER_TYPE_L},
452     {0x2DB8, 0x2DBE, GX_BIDI_CHARACTER_TYPE_L},
453     {0x2DC0, 0x2DC6, GX_BIDI_CHARACTER_TYPE_L},
454     {0x2DC8, 0x2DCE, GX_BIDI_CHARACTER_TYPE_L},
455     {0x2DD0, 0x2DD6, GX_BIDI_CHARACTER_TYPE_L},
456     {0x2DD8, 0x2DDE, GX_BIDI_CHARACTER_TYPE_L},
457     {0x3005, 0x3005, GX_BIDI_CHARACTER_TYPE_L},
458     {0x3006, 0x3006, GX_BIDI_CHARACTER_TYPE_L},
459     {0x3007, 0x3007, GX_BIDI_CHARACTER_TYPE_L},
460     {0x3021, 0x3029, GX_BIDI_CHARACTER_TYPE_L},
461     {0x3031, 0x3035, GX_BIDI_CHARACTER_TYPE_L},
462     {0x3038, 0x303A, GX_BIDI_CHARACTER_TYPE_L},
463     {0x303B, 0x303B, GX_BIDI_CHARACTER_TYPE_L},
464     {0x303C, 0x303C, GX_BIDI_CHARACTER_TYPE_L},
465     {0x3041, 0x3096, GX_BIDI_CHARACTER_TYPE_L},
466     {0x309D, 0x309E, GX_BIDI_CHARACTER_TYPE_L},
467     {0x309F, 0x309F, GX_BIDI_CHARACTER_TYPE_L},
468     {0x30A1, 0x30FA, GX_BIDI_CHARACTER_TYPE_L},
469     {0x30FC, 0x30FE, GX_BIDI_CHARACTER_TYPE_L},
470     {0x30FF, 0x30FF, GX_BIDI_CHARACTER_TYPE_L},
471     {0x3105, 0x312D, GX_BIDI_CHARACTER_TYPE_L},
472     {0x3131, 0x318E, GX_BIDI_CHARACTER_TYPE_L},
473     {0x3190, 0x3191, GX_BIDI_CHARACTER_TYPE_L},
474     {0x3192, 0x3195, GX_BIDI_CHARACTER_TYPE_L},
475     {0x3196, 0x319F, GX_BIDI_CHARACTER_TYPE_L},
476     {0x31A0, 0x31B7, GX_BIDI_CHARACTER_TYPE_L},
477     {0x31F0, 0x31FF, GX_BIDI_CHARACTER_TYPE_L},
478     {0x3200, 0x321C, GX_BIDI_CHARACTER_TYPE_L},
479     {0x3220, 0x3229, GX_BIDI_CHARACTER_TYPE_L},
480     {0x322A, 0x3243, GX_BIDI_CHARACTER_TYPE_L},
481     {0x3260, 0x327B, GX_BIDI_CHARACTER_TYPE_L},
482     {0x327F, 0x327F, GX_BIDI_CHARACTER_TYPE_L},
483     {0x3280, 0x3289, GX_BIDI_CHARACTER_TYPE_L},
484     {0x328A, 0x32B0, GX_BIDI_CHARACTER_TYPE_L},
485     {0x32C0, 0x32CB, GX_BIDI_CHARACTER_TYPE_L},
486     {0x32D0, 0x32FE, GX_BIDI_CHARACTER_TYPE_L},
487     {0x3300, 0x3376, GX_BIDI_CHARACTER_TYPE_L},
488     {0x337B, 0x33DD, GX_BIDI_CHARACTER_TYPE_L},
489     {0x33E0, 0x33FE, GX_BIDI_CHARACTER_TYPE_L},
490     {0x3400, 0x4DB5, GX_BIDI_CHARACTER_TYPE_L},
491     {0x4E00, 0x9FC3, GX_BIDI_CHARACTER_TYPE_L},
492     {0xA000, 0xA014, GX_BIDI_CHARACTER_TYPE_L},
493     {0xA015, 0xA015, GX_BIDI_CHARACTER_TYPE_L},
494     {0xA016, 0xA48C, GX_BIDI_CHARACTER_TYPE_L},
495     {0xA500, 0xA60B, GX_BIDI_CHARACTER_TYPE_L},
496     {0xA60C, 0xA60C, GX_BIDI_CHARACTER_TYPE_L},
497     {0xA610, 0xA61F, GX_BIDI_CHARACTER_TYPE_L},
498     {0xA620, 0xA629, GX_BIDI_CHARACTER_TYPE_L},
499     {0xA62A, 0xA62B, GX_BIDI_CHARACTER_TYPE_L},
500     {0xA640, 0xA65F, GX_BIDI_CHARACTER_TYPE_L},
501     {0xA662, 0xA66D, GX_BIDI_CHARACTER_TYPE_L},
502     {0xA66E, 0xA66E, GX_BIDI_CHARACTER_TYPE_L},
503     {0xA680, 0xA697, GX_BIDI_CHARACTER_TYPE_L},
504     {0xA722, 0xA76F, GX_BIDI_CHARACTER_TYPE_L},
505     {0xA770, 0xA770, GX_BIDI_CHARACTER_TYPE_L},
506     {0xA771, 0xA787, GX_BIDI_CHARACTER_TYPE_L},
507     {0xA789, 0xA78A, GX_BIDI_CHARACTER_TYPE_L},
508     {0xA78B, 0xA78C, GX_BIDI_CHARACTER_TYPE_L},
509     {0xA7FB, 0xA801, GX_BIDI_CHARACTER_TYPE_L},
510     {0xA803, 0xA805, GX_BIDI_CHARACTER_TYPE_L},
511     {0xA807, 0xA80A, GX_BIDI_CHARACTER_TYPE_L},
512     {0xA80C, 0xA822, GX_BIDI_CHARACTER_TYPE_L},
513     {0xA823, 0xA824, GX_BIDI_CHARACTER_TYPE_L},
514     {0xA827, 0xA827, GX_BIDI_CHARACTER_TYPE_L},
515     {0xA840, 0xA873, GX_BIDI_CHARACTER_TYPE_L},
516     {0xA880, 0xA881, GX_BIDI_CHARACTER_TYPE_L},
517     {0xA882, 0xA8B3, GX_BIDI_CHARACTER_TYPE_L},
518     {0xA8B4, 0xA8C3, GX_BIDI_CHARACTER_TYPE_L},
519     {0xA8CE, 0xA8CF, GX_BIDI_CHARACTER_TYPE_L},
520     {0xA8D0, 0xA8D9, GX_BIDI_CHARACTER_TYPE_L},
521     {0xA900, 0xA909, GX_BIDI_CHARACTER_TYPE_L},
522     {0xA90A, 0xA925, GX_BIDI_CHARACTER_TYPE_L},
523     {0xA92E, 0xA92F, GX_BIDI_CHARACTER_TYPE_L},
524     {0xA930, 0xA946, GX_BIDI_CHARACTER_TYPE_L},
525     {0xA952, 0xA953, GX_BIDI_CHARACTER_TYPE_L},
526     {0xA95F, 0xA95F, GX_BIDI_CHARACTER_TYPE_L},
527     {0xAA00, 0xAA28, GX_BIDI_CHARACTER_TYPE_L},
528     {0xAA2F, 0xAA30, GX_BIDI_CHARACTER_TYPE_L},
529     {0xAA33, 0xAA34, GX_BIDI_CHARACTER_TYPE_L},
530     {0xAA40, 0xAA42, GX_BIDI_CHARACTER_TYPE_L},
531     {0xAA44, 0xAA4B, GX_BIDI_CHARACTER_TYPE_L},
532     {0xAA4D, 0xAA4D, GX_BIDI_CHARACTER_TYPE_L},
533     {0xAA50, 0xAA59, GX_BIDI_CHARACTER_TYPE_L},
534     {0xAA5C, 0xAA5F, GX_BIDI_CHARACTER_TYPE_L},
535     {0xAC00, 0xD7A3, GX_BIDI_CHARACTER_TYPE_L},
536     {0xE000, 0xF8FF, GX_BIDI_CHARACTER_TYPE_L},
537     {0xF900, 0xFA2D, GX_BIDI_CHARACTER_TYPE_L},
538     {0xFA30, 0xFA6A, GX_BIDI_CHARACTER_TYPE_L},
539     {0xFA70, 0xFAD9, GX_BIDI_CHARACTER_TYPE_L},
540     {0xFB00, 0xFB06, GX_BIDI_CHARACTER_TYPE_L},
541     {0xFB13, 0xFB17, GX_BIDI_CHARACTER_TYPE_L},
542     {0xFF21, 0xFF3A, GX_BIDI_CHARACTER_TYPE_L},
543     {0xFF41, 0xFF5A, GX_BIDI_CHARACTER_TYPE_L},
544     {0xFF66, 0xFF6F, GX_BIDI_CHARACTER_TYPE_L},
545     {0xFF70, 0xFF70, GX_BIDI_CHARACTER_TYPE_L},
546     {0xFF71, 0xFF9D, GX_BIDI_CHARACTER_TYPE_L},
547     {0xFF9E, 0xFF9F, GX_BIDI_CHARACTER_TYPE_L},
548     {0xFFA0, 0xFFBE, GX_BIDI_CHARACTER_TYPE_L},
549     {0xFFC2, 0xFFC7, GX_BIDI_CHARACTER_TYPE_L},
550     {0xFFCA, 0xFFCF, GX_BIDI_CHARACTER_TYPE_L},
551     {0xFFD2, 0xFFD7, GX_BIDI_CHARACTER_TYPE_L},
552     {0xFFDA, 0xFFDC, GX_BIDI_CHARACTER_TYPE_L},
553     {0x10000, 0x1000B, GX_BIDI_CHARACTER_TYPE_L},
554     {0x1000D, 0x10026, GX_BIDI_CHARACTER_TYPE_L},
555     {0x10028, 0x1003A, GX_BIDI_CHARACTER_TYPE_L},
556     {0x1003C, 0x1003D, GX_BIDI_CHARACTER_TYPE_L},
557     {0x1003F, 0x1004D, GX_BIDI_CHARACTER_TYPE_L},
558     {0x10050, 0x1005D, GX_BIDI_CHARACTER_TYPE_L},
559     {0x10080, 0x100FA, GX_BIDI_CHARACTER_TYPE_L},
560     {0x10100, 0x10100, GX_BIDI_CHARACTER_TYPE_L},
561     {0x10102, 0x10102, GX_BIDI_CHARACTER_TYPE_L},
562     {0x10107, 0x10133, GX_BIDI_CHARACTER_TYPE_L},
563     {0x10137, 0x1013F, GX_BIDI_CHARACTER_TYPE_L},
564     {0x101D0, 0x101FC, GX_BIDI_CHARACTER_TYPE_L},
565     {0x10280, 0x1029C, GX_BIDI_CHARACTER_TYPE_L},
566     {0x102A0, 0x102D0, GX_BIDI_CHARACTER_TYPE_L},
567     {0x10300, 0x1031E, GX_BIDI_CHARACTER_TYPE_L},
568     {0x10320, 0x10323, GX_BIDI_CHARACTER_TYPE_L},
569     {0x10330, 0x10340, GX_BIDI_CHARACTER_TYPE_L},
570     {0x10341, 0x10341, GX_BIDI_CHARACTER_TYPE_L},
571     {0x10342, 0x10349, GX_BIDI_CHARACTER_TYPE_L},
572     {0x1034A, 0x1034A, GX_BIDI_CHARACTER_TYPE_L},
573     {0x10380, 0x1039D, GX_BIDI_CHARACTER_TYPE_L},
574     {0x1039F, 0x1039F, GX_BIDI_CHARACTER_TYPE_L},
575     {0x103A0, 0x103C3, GX_BIDI_CHARACTER_TYPE_L},
576     {0x103C8, 0x103CF, GX_BIDI_CHARACTER_TYPE_L},
577     {0x103D0, 0x103D0, GX_BIDI_CHARACTER_TYPE_L},
578     {0x103D1, 0x103D5, GX_BIDI_CHARACTER_TYPE_L},
579     {0x10400, 0x1044F, GX_BIDI_CHARACTER_TYPE_L},
580     {0x10450, 0x1049D, GX_BIDI_CHARACTER_TYPE_L},
581     {0x104A0, 0x104A9, GX_BIDI_CHARACTER_TYPE_L},
582     {0x12000, 0x1236E, GX_BIDI_CHARACTER_TYPE_L},
583     {0x12400, 0x12462, GX_BIDI_CHARACTER_TYPE_L},
584     {0x12470, 0x12473, GX_BIDI_CHARACTER_TYPE_L},
585     {0x1D000, 0x1D0F5, GX_BIDI_CHARACTER_TYPE_L},
586     {0x1D100, 0x1D126, GX_BIDI_CHARACTER_TYPE_L},
587     {0x1D129, 0x1D164, GX_BIDI_CHARACTER_TYPE_L},
588     {0x1D165, 0x1D166, GX_BIDI_CHARACTER_TYPE_L},
589     {0x1D16A, 0x1D16C, GX_BIDI_CHARACTER_TYPE_L},
590     {0x1D16D, 0x1D172, GX_BIDI_CHARACTER_TYPE_L},
591     {0x1D183, 0x1D184, GX_BIDI_CHARACTER_TYPE_L},
592     {0x1D18C, 0x1D1A9, GX_BIDI_CHARACTER_TYPE_L},
593     {0x1D1AE, 0x1D1DD, GX_BIDI_CHARACTER_TYPE_L},
594     {0x1D360, 0x1D371, GX_BIDI_CHARACTER_TYPE_L},
595     {0x1D400, 0x1D454, GX_BIDI_CHARACTER_TYPE_L},
596     {0x1D456, 0x1D49C, GX_BIDI_CHARACTER_TYPE_L},
597     {0x1D49E, 0x1D49F, GX_BIDI_CHARACTER_TYPE_L},
598     {0x1D4A2, 0x1D4A2, GX_BIDI_CHARACTER_TYPE_L},
599     {0x1D4A5, 0x1D4A6, GX_BIDI_CHARACTER_TYPE_L},
600     {0x1D4A9, 0x1D4AC, GX_BIDI_CHARACTER_TYPE_L},
601     {0x1D4AE, 0x1D4B9, GX_BIDI_CHARACTER_TYPE_L},
602     {0x1D4BB, 0x1D4BB, GX_BIDI_CHARACTER_TYPE_L},
603     {0x1D4BD, 0x1D4C3, GX_BIDI_CHARACTER_TYPE_L},
604     {0x1D4C5, 0x1D505, GX_BIDI_CHARACTER_TYPE_L},
605     {0x1D507, 0x1D50A, GX_BIDI_CHARACTER_TYPE_L},
606     {0x1D50D, 0x1D514, GX_BIDI_CHARACTER_TYPE_L},
607     {0x1D516, 0x1D51C, GX_BIDI_CHARACTER_TYPE_L},
608     {0x1D51E, 0x1D539, GX_BIDI_CHARACTER_TYPE_L},
609     {0x1D53B, 0x1D53E, GX_BIDI_CHARACTER_TYPE_L},
610     {0x1D540, 0x1D544, GX_BIDI_CHARACTER_TYPE_L},
611     {0x1D546, 0x1D546, GX_BIDI_CHARACTER_TYPE_L},
612     {0x1D54A, 0x1D550, GX_BIDI_CHARACTER_TYPE_L},
613     {0x1D552, 0x1D6A5, GX_BIDI_CHARACTER_TYPE_L},
614     {0x1D6A8, 0x1D6C0, GX_BIDI_CHARACTER_TYPE_L},
615     {0x1D6C1, 0x1D6C1, GX_BIDI_CHARACTER_TYPE_L},
616     {0x1D6C2, 0x1D6DA, GX_BIDI_CHARACTER_TYPE_L},
617     {0x1D6DB, 0x1D6DB, GX_BIDI_CHARACTER_TYPE_L},
618     {0x1D6DC, 0x1D6FA, GX_BIDI_CHARACTER_TYPE_L},
619     {0x1D6FB, 0x1D6FB, GX_BIDI_CHARACTER_TYPE_L},
620     {0x1D6FC, 0x1D714, GX_BIDI_CHARACTER_TYPE_L},
621     {0x1D715, 0x1D715, GX_BIDI_CHARACTER_TYPE_L},
622     {0x1D716, 0x1D734, GX_BIDI_CHARACTER_TYPE_L},
623     {0x1D735, 0x1D735, GX_BIDI_CHARACTER_TYPE_L},
624     {0x1D736, 0x1D74E, GX_BIDI_CHARACTER_TYPE_L},
625     {0x1D74F, 0x1D74F, GX_BIDI_CHARACTER_TYPE_L},
626     {0x1D750, 0x1D76E, GX_BIDI_CHARACTER_TYPE_L},
627     {0x1D76F, 0x1D76F, GX_BIDI_CHARACTER_TYPE_L},
628     {0x1D770, 0x1D788, GX_BIDI_CHARACTER_TYPE_L},
629     {0x1D789, 0x1D789, GX_BIDI_CHARACTER_TYPE_L},
630     {0x1D78A, 0x1D7A8, GX_BIDI_CHARACTER_TYPE_L},
631     {0x1D7A9, 0x1D7A9, GX_BIDI_CHARACTER_TYPE_L},
632     {0x1D7AA, 0x1D7C2, GX_BIDI_CHARACTER_TYPE_L},
633     {0x1D7C3, 0x1D7C3, GX_BIDI_CHARACTER_TYPE_L},
634     {0x1D7C4, 0x1D7CB, GX_BIDI_CHARACTER_TYPE_L},
635     {0x20000, 0x2A6D6, GX_BIDI_CHARACTER_TYPE_L},
636     {0x2F800, 0x2FA1D, GX_BIDI_CHARACTER_TYPE_L},
637     {0xF0000, 0xFFFFD, GX_BIDI_CHARACTER_TYPE_L},
638     {0x100000, 0x10FFFD, GX_BIDI_CHARACTER_TYPE_L},
639     {0x0590, 0x0590, GX_BIDI_CHARACTER_TYPE_R},
640     {0x05BE, 0x05BE, GX_BIDI_CHARACTER_TYPE_R},
641     {0x05C0, 0x05C0, GX_BIDI_CHARACTER_TYPE_R},
642     {0x05C3, 0x05C3, GX_BIDI_CHARACTER_TYPE_R},
643     {0x05C6, 0x05C6, GX_BIDI_CHARACTER_TYPE_R},
644     {0x05C8, 0x05CF, GX_BIDI_CHARACTER_TYPE_R},
645     {0x05D0, 0x05EA, GX_BIDI_CHARACTER_TYPE_R},
646     {0x05EB, 0x05EF, GX_BIDI_CHARACTER_TYPE_R},
647     {0x05F0, 0x05F2, GX_BIDI_CHARACTER_TYPE_R},
648     {0x05F3, 0x05F4, GX_BIDI_CHARACTER_TYPE_R},
649     {0x05F5, 0x05FF, GX_BIDI_CHARACTER_TYPE_R},
650     {0x07C0, 0x07C9, GX_BIDI_CHARACTER_TYPE_R},
651     {0x07CA, 0x07EA, GX_BIDI_CHARACTER_TYPE_R},
652     {0x07F4, 0x07F5, GX_BIDI_CHARACTER_TYPE_R},
653     {0x07FA, 0x07FA, GX_BIDI_CHARACTER_TYPE_R},
654     {0x07FB, 0x08FF, GX_BIDI_CHARACTER_TYPE_R},
655     {0x200F, 0x200F, GX_BIDI_CHARACTER_TYPE_R},
656     {0xFB1D, 0xFB1D, GX_BIDI_CHARACTER_TYPE_R},
657     {0xFB1F, 0xFB28, GX_BIDI_CHARACTER_TYPE_R},
658     {0xFB2A, 0xFB36, GX_BIDI_CHARACTER_TYPE_R},
659     {0xFB37, 0xFB37, GX_BIDI_CHARACTER_TYPE_R},
660     {0xFB38, 0xFB3C, GX_BIDI_CHARACTER_TYPE_R},
661     {0xFB3D, 0xFB3D, GX_BIDI_CHARACTER_TYPE_R},
662     {0xFB3E, 0xFB3E, GX_BIDI_CHARACTER_TYPE_R},
663     {0xFB3F, 0xFB3F, GX_BIDI_CHARACTER_TYPE_R},
664     {0xFB40, 0xFB41, GX_BIDI_CHARACTER_TYPE_R},
665     {0xFB42, 0xFB42, GX_BIDI_CHARACTER_TYPE_R},
666     {0xFB43, 0xFB44, GX_BIDI_CHARACTER_TYPE_R},
667     {0xFB45, 0xFB45, GX_BIDI_CHARACTER_TYPE_R},
668     {0xFB46, 0xFB4F, GX_BIDI_CHARACTER_TYPE_R},
669     {0x10800, 0x10805, GX_BIDI_CHARACTER_TYPE_R},
670     {0x10806, 0x10807, GX_BIDI_CHARACTER_TYPE_R},
671     {0x10808, 0x10808, GX_BIDI_CHARACTER_TYPE_R},
672     {0x10809, 0x10809, GX_BIDI_CHARACTER_TYPE_R},
673     {0x1080A, 0x10835, GX_BIDI_CHARACTER_TYPE_R},
674     {0x10836, 0x10836, GX_BIDI_CHARACTER_TYPE_R},
675     {0x10837, 0x10838, GX_BIDI_CHARACTER_TYPE_R},
676     {0x10839, 0x1083B, GX_BIDI_CHARACTER_TYPE_R},
677     {0x1083C, 0x1083C, GX_BIDI_CHARACTER_TYPE_R},
678     {0x1083D, 0x1083E, GX_BIDI_CHARACTER_TYPE_R},
679     {0x1083F, 0x1083F, GX_BIDI_CHARACTER_TYPE_R},
680     {0x10840, 0x108FF, GX_BIDI_CHARACTER_TYPE_R},
681     {0x10900, 0x10915, GX_BIDI_CHARACTER_TYPE_R},
682     {0x10916, 0x10919, GX_BIDI_CHARACTER_TYPE_R},
683     {0x1091A, 0x1091E, GX_BIDI_CHARACTER_TYPE_R},
684     {0x10920, 0x10939, GX_BIDI_CHARACTER_TYPE_R},
685     {0x1093A, 0x1093E, GX_BIDI_CHARACTER_TYPE_R},
686     {0x1093F, 0x1093F, GX_BIDI_CHARACTER_TYPE_R},
687     {0x10940, 0x109FF, GX_BIDI_CHARACTER_TYPE_R},
688     {0x10A00, 0x10A00, GX_BIDI_CHARACTER_TYPE_R},
689     {0x10A04, 0x10A04, GX_BIDI_CHARACTER_TYPE_R},
690     {0x10A07, 0x10A0B, GX_BIDI_CHARACTER_TYPE_R},
691     {0x10A10, 0x10A13, GX_BIDI_CHARACTER_TYPE_R},
692     {0x10A14, 0x10A14, GX_BIDI_CHARACTER_TYPE_R},
693     {0x10A15, 0x10A17, GX_BIDI_CHARACTER_TYPE_R},
694     {0x10A18, 0x10A18, GX_BIDI_CHARACTER_TYPE_R},
695     {0x10A19, 0x10A33, GX_BIDI_CHARACTER_TYPE_R},
696     {0x10A34, 0x10A37, GX_BIDI_CHARACTER_TYPE_R},
697     {0x10A3B, 0x10A3E, GX_BIDI_CHARACTER_TYPE_R},
698     {0x10A40, 0x10A47, GX_BIDI_CHARACTER_TYPE_R},
699     {0x10A48, 0x10A4F, GX_BIDI_CHARACTER_TYPE_R},
700     {0x10A50, 0x10A58, GX_BIDI_CHARACTER_TYPE_R},
701     {0x10A59, 0x10FFF, GX_BIDI_CHARACTER_TYPE_R},
702     {0x0030, 0x0039, GX_BIDI_CHARACTER_TYPE_EN},
703     {0x00B2, 0x00B3, GX_BIDI_CHARACTER_TYPE_EN},
704     {0x00B9, 0x00B9, GX_BIDI_CHARACTER_TYPE_EN},
705     {0x06F0, 0x06F9, GX_BIDI_CHARACTER_TYPE_EN},
706     {0x2070, 0x2070, GX_BIDI_CHARACTER_TYPE_EN},
707     {0x2074, 0x2079, GX_BIDI_CHARACTER_TYPE_EN},
708     {0x2080, 0x2089, GX_BIDI_CHARACTER_TYPE_EN},
709     {0x2488, 0x249B, GX_BIDI_CHARACTER_TYPE_EN},
710     {0xFF10, 0xFF19, GX_BIDI_CHARACTER_TYPE_EN},
711     {0x1D7CE, 0x1D7FF, GX_BIDI_CHARACTER_TYPE_EN},
712     {0x002B, 0x002B, GX_BIDI_CHARACTER_TYPE_ES},
713     {0x002D, 0x002D, GX_BIDI_CHARACTER_TYPE_ES},
714     {0x207A, 0x207B, GX_BIDI_CHARACTER_TYPE_ES},
715     {0x208A, 0x208B, GX_BIDI_CHARACTER_TYPE_ES},
716     {0x2212, 0x2212, GX_BIDI_CHARACTER_TYPE_ES},
717     {0xFB29, 0xFB29, GX_BIDI_CHARACTER_TYPE_ES},
718     {0xFE62, 0xFE62, GX_BIDI_CHARACTER_TYPE_ES},
719     {0xFE63, 0xFE63, GX_BIDI_CHARACTER_TYPE_ES},
720     {0xFF0B, 0xFF0B, GX_BIDI_CHARACTER_TYPE_ES},
721     {0xFF0D, 0xFF0D, GX_BIDI_CHARACTER_TYPE_ES},
722     {0x0023, 0x0023, GX_BIDI_CHARACTER_TYPE_ET},
723     {0x0024, 0x0024, GX_BIDI_CHARACTER_TYPE_ET},
724     {0x0025, 0x0025, GX_BIDI_CHARACTER_TYPE_ET},
725     {0x00A2, 0x00A5, GX_BIDI_CHARACTER_TYPE_ET},
726     {0x00B0, 0x00B0, GX_BIDI_CHARACTER_TYPE_ET},
727     {0x00B1, 0x00B1, GX_BIDI_CHARACTER_TYPE_ET},
728     {0x0609, 0x060A, GX_BIDI_CHARACTER_TYPE_ET},
729     {0x066A, 0x066A, GX_BIDI_CHARACTER_TYPE_ET},
730     {0x09F2, 0x09F3, GX_BIDI_CHARACTER_TYPE_ET},
731     {0x0AF1, 0x0AF1, GX_BIDI_CHARACTER_TYPE_ET},
732     {0x0BF9, 0x0BF9, GX_BIDI_CHARACTER_TYPE_ET},
733     {0x0E3F, 0x0E3F, GX_BIDI_CHARACTER_TYPE_ET},
734     {0x17DB, 0x17DB, GX_BIDI_CHARACTER_TYPE_ET},
735     {0x2030, 0x2034, GX_BIDI_CHARACTER_TYPE_ET},
736     {0x20A0, 0x20B5, GX_BIDI_CHARACTER_TYPE_ET},
737     {0x212E, 0x212E, GX_BIDI_CHARACTER_TYPE_ET},
738     {0x2213, 0x2213, GX_BIDI_CHARACTER_TYPE_ET},
739     {0xFE5F, 0xFE5F, GX_BIDI_CHARACTER_TYPE_ET},
740     {0xFE69, 0xFE69, GX_BIDI_CHARACTER_TYPE_ET},
741     {0xFE6A, 0xFE6A, GX_BIDI_CHARACTER_TYPE_ET},
742     {0xFF03, 0xFF03, GX_BIDI_CHARACTER_TYPE_ET},
743     {0xFF04, 0xFF04, GX_BIDI_CHARACTER_TYPE_ET},
744     {0xFF05, 0xFF05, GX_BIDI_CHARACTER_TYPE_ET},
745     {0xFFE0, 0xFFE1, GX_BIDI_CHARACTER_TYPE_ET},
746     {0xFFE5, 0xFFE6, GX_BIDI_CHARACTER_TYPE_ET},
747     {0x0600, 0x0603, GX_BIDI_CHARACTER_TYPE_AN},
748     {0x0660, 0x0669, GX_BIDI_CHARACTER_TYPE_AN},
749     {0x066B, 0x066C, GX_BIDI_CHARACTER_TYPE_AN},
750     {0x06DD, 0x06DD, GX_BIDI_CHARACTER_TYPE_AN},
751     {0x002C, 0x002C, GX_BIDI_CHARACTER_TYPE_CS},
752     {0x002E, 0x002F, GX_BIDI_CHARACTER_TYPE_CS},
753     {0x003A, 0x003A, GX_BIDI_CHARACTER_TYPE_CS},
754     {0x00A0, 0x00A0, GX_BIDI_CHARACTER_TYPE_CS},
755     {0x060C, 0x060C, GX_BIDI_CHARACTER_TYPE_CS},
756     {0x202F, 0x202F, GX_BIDI_CHARACTER_TYPE_CS},
757     {0x2044, 0x2044, GX_BIDI_CHARACTER_TYPE_CS},
758     {0xFE50, 0xFE50, GX_BIDI_CHARACTER_TYPE_CS},
759     {0xFE52, 0xFE52, GX_BIDI_CHARACTER_TYPE_CS},
760     {0xFE55, 0xFE55, GX_BIDI_CHARACTER_TYPE_CS},
761     {0xFF0C, 0xFF0C, GX_BIDI_CHARACTER_TYPE_CS},
762     {0xFF0E, 0xFF0F, GX_BIDI_CHARACTER_TYPE_CS},
763     {0xFF1A, 0xFF1A, GX_BIDI_CHARACTER_TYPE_CS},
764     {0x000A, 0x000A, GX_BIDI_CHARACTER_TYPE_B},
765     {0x000D, 0x000D, GX_BIDI_CHARACTER_TYPE_B},
766     {0x001C, 0x001E, GX_BIDI_CHARACTER_TYPE_B},
767     {0x0085, 0x0085, GX_BIDI_CHARACTER_TYPE_B},
768     {0x2029, 0x2029, GX_BIDI_CHARACTER_TYPE_B},
769     {0x0009, 0x0009, GX_BIDI_CHARACTER_TYPE_S},
770     {0x000B, 0x000B, GX_BIDI_CHARACTER_TYPE_S},
771     {0x001F, 0x001F, GX_BIDI_CHARACTER_TYPE_S},
772     {0x000C, 0x000C, GX_BIDI_CHARACTER_TYPE_WS},
773     {0x0020, 0x0020, GX_BIDI_CHARACTER_TYPE_WS},
774     {0x1680, 0x1680, GX_BIDI_CHARACTER_TYPE_WS},
775     {0x180E, 0x180E, GX_BIDI_CHARACTER_TYPE_WS},
776     {0x2000, 0x200A, GX_BIDI_CHARACTER_TYPE_WS},
777     {0x2028, 0x2028, GX_BIDI_CHARACTER_TYPE_WS},
778     {0x205F, 0x205F, GX_BIDI_CHARACTER_TYPE_WS},
779     {0x3000, 0x3000, GX_BIDI_CHARACTER_TYPE_WS},
780     {0x0021, 0x0022, GX_BIDI_CHARACTER_TYPE_ON},
781     {0x0026, 0x0027, GX_BIDI_CHARACTER_TYPE_ON},
782     {0x0028, 0x0028, GX_BIDI_CHARACTER_TYPE_ON},
783     {0x0029, 0x0029, GX_BIDI_CHARACTER_TYPE_ON},
784     {0x002A, 0x002A, GX_BIDI_CHARACTER_TYPE_ON},
785     {0x003B, 0x003B, GX_BIDI_CHARACTER_TYPE_ON},
786     {0x003C, 0x003E, GX_BIDI_CHARACTER_TYPE_ON},
787     {0x003F, 0x0040, GX_BIDI_CHARACTER_TYPE_ON},
788     {0x005B, 0x005B, GX_BIDI_CHARACTER_TYPE_ON},
789     {0x005C, 0x005C, GX_BIDI_CHARACTER_TYPE_ON},
790     {0x005D, 0x005D, GX_BIDI_CHARACTER_TYPE_ON},
791     {0x005E, 0x005E, GX_BIDI_CHARACTER_TYPE_ON},
792     {0x005F, 0x005F, GX_BIDI_CHARACTER_TYPE_ON},
793     {0x0060, 0x0060, GX_BIDI_CHARACTER_TYPE_ON},
794     {0x007B, 0x007B, GX_BIDI_CHARACTER_TYPE_ON},
795     {0x007C, 0x007C, GX_BIDI_CHARACTER_TYPE_ON},
796     {0x007D, 0x007D, GX_BIDI_CHARACTER_TYPE_ON},
797     {0x007E, 0x007E, GX_BIDI_CHARACTER_TYPE_ON},
798     {0x00A1, 0x00A1, GX_BIDI_CHARACTER_TYPE_ON},
799     {0x00A6, 0x00A7, GX_BIDI_CHARACTER_TYPE_ON},
800     {0x00A8, 0x00A8, GX_BIDI_CHARACTER_TYPE_ON},
801     {0x00A9, 0x00A9, GX_BIDI_CHARACTER_TYPE_ON},
802     {0x00AB, 0x00AB, GX_BIDI_CHARACTER_TYPE_ON},
803     {0x00AC, 0x00AC, GX_BIDI_CHARACTER_TYPE_ON},
804     {0x00AE, 0x00AE, GX_BIDI_CHARACTER_TYPE_ON},
805     {0x00AF, 0x00AF, GX_BIDI_CHARACTER_TYPE_ON},
806     {0x00B4, 0x00B4, GX_BIDI_CHARACTER_TYPE_ON},
807     {0x00B6, 0x00B6, GX_BIDI_CHARACTER_TYPE_ON},
808     {0x00B7, 0x00B7, GX_BIDI_CHARACTER_TYPE_ON},
809     {0x00B8, 0x00B8, GX_BIDI_CHARACTER_TYPE_ON},
810     {0x00BB, 0x00BB, GX_BIDI_CHARACTER_TYPE_ON},
811     {0x00BC, 0x00BE, GX_BIDI_CHARACTER_TYPE_ON},
812     {0x00BF, 0x00BF, GX_BIDI_CHARACTER_TYPE_ON},
813     {0x00D7, 0x00D7, GX_BIDI_CHARACTER_TYPE_ON},
814     {0x00F7, 0x00F7, GX_BIDI_CHARACTER_TYPE_ON},
815     {0x02B9, 0x02BA, GX_BIDI_CHARACTER_TYPE_ON},
816     {0x02C2, 0x02C5, GX_BIDI_CHARACTER_TYPE_ON},
817     {0x02C6, 0x02CF, GX_BIDI_CHARACTER_TYPE_ON},
818     {0x02D2, 0x02DF, GX_BIDI_CHARACTER_TYPE_ON},
819     {0x02E5, 0x02EB, GX_BIDI_CHARACTER_TYPE_ON},
820     {0x02EC, 0x02EC, GX_BIDI_CHARACTER_TYPE_ON},
821     {0x02ED, 0x02ED, GX_BIDI_CHARACTER_TYPE_ON},
822     {0x02EF, 0x02FF, GX_BIDI_CHARACTER_TYPE_ON},
823     {0x0374, 0x0374, GX_BIDI_CHARACTER_TYPE_ON},
824     {0x0375, 0x0375, GX_BIDI_CHARACTER_TYPE_ON},
825     {0x037E, 0x037E, GX_BIDI_CHARACTER_TYPE_ON},
826     {0x0384, 0x0385, GX_BIDI_CHARACTER_TYPE_ON},
827     {0x0387, 0x0387, GX_BIDI_CHARACTER_TYPE_ON},
828     {0x03F6, 0x03F6, GX_BIDI_CHARACTER_TYPE_ON},
829     {0x058A, 0x058A, GX_BIDI_CHARACTER_TYPE_ON},
830     {0x0606, 0x0607, GX_BIDI_CHARACTER_TYPE_ON},
831     {0x060E, 0x060F, GX_BIDI_CHARACTER_TYPE_ON},
832     {0x06E9, 0x06E9, GX_BIDI_CHARACTER_TYPE_ON},
833     {0x07F6, 0x07F6, GX_BIDI_CHARACTER_TYPE_ON},
834     {0x07F7, 0x07F9, GX_BIDI_CHARACTER_TYPE_ON},
835     {0x0BF3, 0x0BF8, GX_BIDI_CHARACTER_TYPE_ON},
836     {0x0BFA, 0x0BFA, GX_BIDI_CHARACTER_TYPE_ON},
837     {0x0C78, 0x0C7E, GX_BIDI_CHARACTER_TYPE_ON},
838     {0x0CF1, 0x0CF2, GX_BIDI_CHARACTER_TYPE_ON},
839     {0x0F3A, 0x0F3A, GX_BIDI_CHARACTER_TYPE_ON},
840     {0x0F3B, 0x0F3B, GX_BIDI_CHARACTER_TYPE_ON},
841     {0x0F3C, 0x0F3C, GX_BIDI_CHARACTER_TYPE_ON},
842     {0x0F3D, 0x0F3D, GX_BIDI_CHARACTER_TYPE_ON},
843     {0x1390, 0x1399, GX_BIDI_CHARACTER_TYPE_ON},
844     {0x169B, 0x169B, GX_BIDI_CHARACTER_TYPE_ON},
845     {0x169C, 0x169C, GX_BIDI_CHARACTER_TYPE_ON},
846     {0x17F0, 0x17F9, GX_BIDI_CHARACTER_TYPE_ON},
847     {0x1800, 0x1805, GX_BIDI_CHARACTER_TYPE_ON},
848     {0x1806, 0x1806, GX_BIDI_CHARACTER_TYPE_ON},
849     {0x1807, 0x180A, GX_BIDI_CHARACTER_TYPE_ON},
850     {0x1940, 0x1940, GX_BIDI_CHARACTER_TYPE_ON},
851     {0x1944, 0x1945, GX_BIDI_CHARACTER_TYPE_ON},
852     {0x19DE, 0x19DF, GX_BIDI_CHARACTER_TYPE_ON},
853     {0x19E0, 0x19FF, GX_BIDI_CHARACTER_TYPE_ON},
854     {0x1FBD, 0x1FBD, GX_BIDI_CHARACTER_TYPE_ON},
855     {0x1FBF, 0x1FC1, GX_BIDI_CHARACTER_TYPE_ON},
856     {0x1FCD, 0x1FCF, GX_BIDI_CHARACTER_TYPE_ON},
857     {0x1FDD, 0x1FDF, GX_BIDI_CHARACTER_TYPE_ON},
858     {0x1FED, 0x1FEF, GX_BIDI_CHARACTER_TYPE_ON},
859     {0x1FFD, 0x1FFE, GX_BIDI_CHARACTER_TYPE_ON},
860     {0x2010, 0x2015, GX_BIDI_CHARACTER_TYPE_ON},
861     {0x2016, 0x2017, GX_BIDI_CHARACTER_TYPE_ON},
862     {0x2018, 0x2018, GX_BIDI_CHARACTER_TYPE_ON},
863     {0x2019, 0x2019, GX_BIDI_CHARACTER_TYPE_ON},
864     {0x201A, 0x201A, GX_BIDI_CHARACTER_TYPE_ON},
865     {0x201B, 0x201C, GX_BIDI_CHARACTER_TYPE_ON},
866     {0x201D, 0x201D, GX_BIDI_CHARACTER_TYPE_ON},
867     {0x201E, 0x201E, GX_BIDI_CHARACTER_TYPE_ON},
868     {0x201F, 0x201F, GX_BIDI_CHARACTER_TYPE_ON},
869     {0x2020, 0x2027, GX_BIDI_CHARACTER_TYPE_ON},
870     {0x2035, 0x2038, GX_BIDI_CHARACTER_TYPE_ON},
871     {0x2039, 0x2039, GX_BIDI_CHARACTER_TYPE_ON},
872     {0x203A, 0x203A, GX_BIDI_CHARACTER_TYPE_ON},
873     {0x203B, 0x203E, GX_BIDI_CHARACTER_TYPE_ON},
874     {0x203F, 0x2040, GX_BIDI_CHARACTER_TYPE_ON},
875     {0x2041, 0x2043, GX_BIDI_CHARACTER_TYPE_ON},
876     {0x2045, 0x2045, GX_BIDI_CHARACTER_TYPE_ON},
877     {0x2046, 0x2046, GX_BIDI_CHARACTER_TYPE_ON},
878     {0x2047, 0x2051, GX_BIDI_CHARACTER_TYPE_ON},
879     {0x2052, 0x2052, GX_BIDI_CHARACTER_TYPE_ON},
880     {0x2053, 0x2053, GX_BIDI_CHARACTER_TYPE_ON},
881     {0x2054, 0x2054, GX_BIDI_CHARACTER_TYPE_ON},
882     {0x2055, 0x205E, GX_BIDI_CHARACTER_TYPE_ON},
883     {0x207C, 0x207C, GX_BIDI_CHARACTER_TYPE_ON},
884     {0x207D, 0x207D, GX_BIDI_CHARACTER_TYPE_ON},
885     {0x207E, 0x207E, GX_BIDI_CHARACTER_TYPE_ON},
886     {0x208C, 0x208C, GX_BIDI_CHARACTER_TYPE_ON},
887     {0x208D, 0x208D, GX_BIDI_CHARACTER_TYPE_ON},
888     {0x208E, 0x208E, GX_BIDI_CHARACTER_TYPE_ON},
889     {0x2100, 0x2101, GX_BIDI_CHARACTER_TYPE_ON},
890     {0x2103, 0x2106, GX_BIDI_CHARACTER_TYPE_ON},
891     {0x2108, 0x2109, GX_BIDI_CHARACTER_TYPE_ON},
892     {0x2114, 0x2114, GX_BIDI_CHARACTER_TYPE_ON},
893     {0x2116, 0x2118, GX_BIDI_CHARACTER_TYPE_ON},
894     {0x211E, 0x2123, GX_BIDI_CHARACTER_TYPE_ON},
895     {0x2125, 0x2125, GX_BIDI_CHARACTER_TYPE_ON},
896     {0x2127, 0x2127, GX_BIDI_CHARACTER_TYPE_ON},
897     {0x2129, 0x2129, GX_BIDI_CHARACTER_TYPE_ON},
898     {0x213A, 0x213B, GX_BIDI_CHARACTER_TYPE_ON},
899     {0x2140, 0x2144, GX_BIDI_CHARACTER_TYPE_ON},
900     {0x214A, 0x214A, GX_BIDI_CHARACTER_TYPE_ON},
901     {0x214B, 0x214B, GX_BIDI_CHARACTER_TYPE_ON},
902     {0x214C, 0x214D, GX_BIDI_CHARACTER_TYPE_ON},
903     {0x2153, 0x215F, GX_BIDI_CHARACTER_TYPE_ON},
904     {0x2190, 0x2194, GX_BIDI_CHARACTER_TYPE_ON},
905     {0x2195, 0x2199, GX_BIDI_CHARACTER_TYPE_ON},
906     {0x219A, 0x219B, GX_BIDI_CHARACTER_TYPE_ON},
907     {0x219C, 0x219F, GX_BIDI_CHARACTER_TYPE_ON},
908     {0x21A0, 0x21A0, GX_BIDI_CHARACTER_TYPE_ON},
909     {0x21A1, 0x21A2, GX_BIDI_CHARACTER_TYPE_ON},
910     {0x21A3, 0x21A3, GX_BIDI_CHARACTER_TYPE_ON},
911     {0x21A4, 0x21A5, GX_BIDI_CHARACTER_TYPE_ON},
912     {0x21A6, 0x21A6, GX_BIDI_CHARACTER_TYPE_ON},
913     {0x21A7, 0x21AD, GX_BIDI_CHARACTER_TYPE_ON},
914     {0x21AE, 0x21AE, GX_BIDI_CHARACTER_TYPE_ON},
915     {0x21AF, 0x21CD, GX_BIDI_CHARACTER_TYPE_ON},
916     {0x21CE, 0x21CF, GX_BIDI_CHARACTER_TYPE_ON},
917     {0x21D0, 0x21D1, GX_BIDI_CHARACTER_TYPE_ON},
918     {0x21D2, 0x21D2, GX_BIDI_CHARACTER_TYPE_ON},
919     {0x21D3, 0x21D3, GX_BIDI_CHARACTER_TYPE_ON},
920     {0x21D4, 0x21D4, GX_BIDI_CHARACTER_TYPE_ON},
921     {0x21D5, 0x21F3, GX_BIDI_CHARACTER_TYPE_ON},
922     {0x21F4, 0x2211, GX_BIDI_CHARACTER_TYPE_ON},
923     {0x2214, 0x22FF, GX_BIDI_CHARACTER_TYPE_ON},
924     {0x2300, 0x2307, GX_BIDI_CHARACTER_TYPE_ON},
925     {0x2308, 0x230B, GX_BIDI_CHARACTER_TYPE_ON},
926     {0x230C, 0x231F, GX_BIDI_CHARACTER_TYPE_ON},
927     {0x2320, 0x2321, GX_BIDI_CHARACTER_TYPE_ON},
928     {0x2322, 0x2328, GX_BIDI_CHARACTER_TYPE_ON},
929     {0x2329, 0x2329, GX_BIDI_CHARACTER_TYPE_ON},
930     {0x232A, 0x232A, GX_BIDI_CHARACTER_TYPE_ON},
931     {0x232B, 0x2335, GX_BIDI_CHARACTER_TYPE_ON},
932     {0x237B, 0x237B, GX_BIDI_CHARACTER_TYPE_ON},
933     {0x237C, 0x237C, GX_BIDI_CHARACTER_TYPE_ON},
934     {0x237D, 0x2394, GX_BIDI_CHARACTER_TYPE_ON},
935     {0x2396, 0x239A, GX_BIDI_CHARACTER_TYPE_ON},
936     {0x239B, 0x23B3, GX_BIDI_CHARACTER_TYPE_ON},
937     {0x23B4, 0x23DB, GX_BIDI_CHARACTER_TYPE_ON},
938     {0x23DC, 0x23E1, GX_BIDI_CHARACTER_TYPE_ON},
939     {0x23E2, 0x23E7, GX_BIDI_CHARACTER_TYPE_ON},
940     {0x2400, 0x2426, GX_BIDI_CHARACTER_TYPE_ON},
941     {0x2440, 0x244A, GX_BIDI_CHARACTER_TYPE_ON},
942     {0x2460, 0x2487, GX_BIDI_CHARACTER_TYPE_ON},
943     {0x24EA, 0x24FF, GX_BIDI_CHARACTER_TYPE_ON},
944     {0x2500, 0x25B6, GX_BIDI_CHARACTER_TYPE_ON},
945     {0x25B7, 0x25B7, GX_BIDI_CHARACTER_TYPE_ON},
946     {0x25B8, 0x25C0, GX_BIDI_CHARACTER_TYPE_ON},
947     {0x25C1, 0x25C1, GX_BIDI_CHARACTER_TYPE_ON},
948     {0x25C2, 0x25F7, GX_BIDI_CHARACTER_TYPE_ON},
949     {0x25F8, 0x25FF, GX_BIDI_CHARACTER_TYPE_ON},
950     {0x2600, 0x266E, GX_BIDI_CHARACTER_TYPE_ON},
951     {0x266F, 0x266F, GX_BIDI_CHARACTER_TYPE_ON},
952     {0x2670, 0x269D, GX_BIDI_CHARACTER_TYPE_ON},
953     {0x26A0, 0x26AB, GX_BIDI_CHARACTER_TYPE_ON},
954     {0x26AD, 0x26BC, GX_BIDI_CHARACTER_TYPE_ON},
955     {0x26C0, 0x26C3, GX_BIDI_CHARACTER_TYPE_ON},
956     {0x2701, 0x2704, GX_BIDI_CHARACTER_TYPE_ON},
957     {0x2706, 0x2709, GX_BIDI_CHARACTER_TYPE_ON},
958     {0x270C, 0x2727, GX_BIDI_CHARACTER_TYPE_ON},
959     {0x2729, 0x274B, GX_BIDI_CHARACTER_TYPE_ON},
960     {0x274D, 0x274D, GX_BIDI_CHARACTER_TYPE_ON},
961     {0x274F, 0x2752, GX_BIDI_CHARACTER_TYPE_ON},
962     {0x2756, 0x2756, GX_BIDI_CHARACTER_TYPE_ON},
963     {0x2758, 0x275E, GX_BIDI_CHARACTER_TYPE_ON},
964     {0x2761, 0x2767, GX_BIDI_CHARACTER_TYPE_ON},
965     {0x2768, 0x2768, GX_BIDI_CHARACTER_TYPE_ON},
966     {0x2769, 0x2769, GX_BIDI_CHARACTER_TYPE_ON},
967     {0x276A, 0x276A, GX_BIDI_CHARACTER_TYPE_ON},
968     {0x276B, 0x276B, GX_BIDI_CHARACTER_TYPE_ON},
969     {0x276C, 0x276C, GX_BIDI_CHARACTER_TYPE_ON},
970     {0x276D, 0x276D, GX_BIDI_CHARACTER_TYPE_ON},
971     {0x276E, 0x276E, GX_BIDI_CHARACTER_TYPE_ON},
972     {0x276F, 0x276F, GX_BIDI_CHARACTER_TYPE_ON},
973     {0x2770, 0x2770, GX_BIDI_CHARACTER_TYPE_ON},
974     {0x2771, 0x2771, GX_BIDI_CHARACTER_TYPE_ON},
975     {0x2772, 0x2772, GX_BIDI_CHARACTER_TYPE_ON},
976     {0x2773, 0x2773, GX_BIDI_CHARACTER_TYPE_ON},
977     {0x2774, 0x2774, GX_BIDI_CHARACTER_TYPE_ON},
978     {0x2775, 0x2775, GX_BIDI_CHARACTER_TYPE_ON},
979     {0x2776, 0x2793, GX_BIDI_CHARACTER_TYPE_ON},
980     {0x2794, 0x2794, GX_BIDI_CHARACTER_TYPE_ON},
981     {0x2798, 0x27AF, GX_BIDI_CHARACTER_TYPE_ON},
982     {0x27B1, 0x27BE, GX_BIDI_CHARACTER_TYPE_ON},
983     {0x27C0, 0x27C4, GX_BIDI_CHARACTER_TYPE_ON},
984     {0x27C5, 0x27C5, GX_BIDI_CHARACTER_TYPE_ON},
985     {0x27C6, 0x27C6, GX_BIDI_CHARACTER_TYPE_ON},
986     {0x27C7, 0x27CA, GX_BIDI_CHARACTER_TYPE_ON},
987     {0x27CC, 0x27CC, GX_BIDI_CHARACTER_TYPE_ON},
988     {0x27D0, 0x27E5, GX_BIDI_CHARACTER_TYPE_ON},
989     {0x27E6, 0x27E6, GX_BIDI_CHARACTER_TYPE_ON},
990     {0x27E7, 0x27E7, GX_BIDI_CHARACTER_TYPE_ON},
991     {0x27E8, 0x27E8, GX_BIDI_CHARACTER_TYPE_ON},
992     {0x27E9, 0x27E9, GX_BIDI_CHARACTER_TYPE_ON},
993     {0x27EA, 0x27EA, GX_BIDI_CHARACTER_TYPE_ON},
994     {0x27EB, 0x27EB, GX_BIDI_CHARACTER_TYPE_ON},
995     {0x27EC, 0x27EC, GX_BIDI_CHARACTER_TYPE_ON},
996     {0x27ED, 0x27ED, GX_BIDI_CHARACTER_TYPE_ON},
997     {0x27EE, 0x27EE, GX_BIDI_CHARACTER_TYPE_ON},
998     {0x27EF, 0x27EF, GX_BIDI_CHARACTER_TYPE_ON},
999     {0x27F0, 0x27FF, GX_BIDI_CHARACTER_TYPE_ON},
1000     {0x2900, 0x2982, GX_BIDI_CHARACTER_TYPE_ON},
1001     {0x2983, 0x2983, GX_BIDI_CHARACTER_TYPE_ON},
1002     {0x2984, 0x2984, GX_BIDI_CHARACTER_TYPE_ON},
1003     {0x2985, 0x2985, GX_BIDI_CHARACTER_TYPE_ON},
1004     {0x2986, 0x2986, GX_BIDI_CHARACTER_TYPE_ON},
1005     {0x2987, 0x2987, GX_BIDI_CHARACTER_TYPE_ON},
1006     {0x2988, 0x2988, GX_BIDI_CHARACTER_TYPE_ON},
1007     {0x2989, 0x2989, GX_BIDI_CHARACTER_TYPE_ON},
1008     {0x298A, 0x298A, GX_BIDI_CHARACTER_TYPE_ON},
1009     {0x298B, 0x298B, GX_BIDI_CHARACTER_TYPE_ON},
1010     {0x298C, 0x298C, GX_BIDI_CHARACTER_TYPE_ON},
1011     {0x298D, 0x298D, GX_BIDI_CHARACTER_TYPE_ON},
1012     {0x298E, 0x298E, GX_BIDI_CHARACTER_TYPE_ON},
1013     {0x298F, 0x298F, GX_BIDI_CHARACTER_TYPE_ON},
1014     {0x2990, 0x2990, GX_BIDI_CHARACTER_TYPE_ON},
1015     {0x2991, 0x2991, GX_BIDI_CHARACTER_TYPE_ON},
1016     {0x2992, 0x2992, GX_BIDI_CHARACTER_TYPE_ON},
1017     {0x2993, 0x2993, GX_BIDI_CHARACTER_TYPE_ON},
1018     {0x2994, 0x2994, GX_BIDI_CHARACTER_TYPE_ON},
1019     {0x2995, 0x2995, GX_BIDI_CHARACTER_TYPE_ON},
1020     {0x2996, 0x2996, GX_BIDI_CHARACTER_TYPE_ON},
1021     {0x2997, 0x2997, GX_BIDI_CHARACTER_TYPE_ON},
1022     {0x2998, 0x2998, GX_BIDI_CHARACTER_TYPE_ON},
1023     {0x2999, 0x29D7, GX_BIDI_CHARACTER_TYPE_ON},
1024     {0x29D8, 0x29D8, GX_BIDI_CHARACTER_TYPE_ON},
1025     {0x29D9, 0x29D9, GX_BIDI_CHARACTER_TYPE_ON},
1026     {0x29DA, 0x29DA, GX_BIDI_CHARACTER_TYPE_ON},
1027     {0x29DB, 0x29DB, GX_BIDI_CHARACTER_TYPE_ON},
1028     {0x29DC, 0x29FB, GX_BIDI_CHARACTER_TYPE_ON},
1029     {0x29FC, 0x29FC, GX_BIDI_CHARACTER_TYPE_ON},
1030     {0x29FD, 0x29FD, GX_BIDI_CHARACTER_TYPE_ON},
1031     {0x29FE, 0x2AFF, GX_BIDI_CHARACTER_TYPE_ON},
1032     {0x2B00, 0x2B2F, GX_BIDI_CHARACTER_TYPE_ON},
1033     {0x2B30, 0x2B44, GX_BIDI_CHARACTER_TYPE_ON},
1034     {0x2B45, 0x2B46, GX_BIDI_CHARACTER_TYPE_ON},
1035     {0x2B47, 0x2B4C, GX_BIDI_CHARACTER_TYPE_ON},
1036     {0x2B50, 0x2B54, GX_BIDI_CHARACTER_TYPE_ON},
1037     {0x2CE5, 0x2CEA, GX_BIDI_CHARACTER_TYPE_ON},
1038     {0x2CF9, 0x2CFC, GX_BIDI_CHARACTER_TYPE_ON},
1039     {0x2CFD, 0x2CFD, GX_BIDI_CHARACTER_TYPE_ON},
1040     {0x2CFE, 0x2CFF, GX_BIDI_CHARACTER_TYPE_ON},
1041     {0x2E00, 0x2E01, GX_BIDI_CHARACTER_TYPE_ON},
1042     {0x2E02, 0x2E02, GX_BIDI_CHARACTER_TYPE_ON},
1043     {0x2E03, 0x2E03, GX_BIDI_CHARACTER_TYPE_ON},
1044     {0x2E04, 0x2E04, GX_BIDI_CHARACTER_TYPE_ON},
1045     {0x2E05, 0x2E05, GX_BIDI_CHARACTER_TYPE_ON},
1046     {0x2E06, 0x2E08, GX_BIDI_CHARACTER_TYPE_ON},
1047     {0x2E09, 0x2E09, GX_BIDI_CHARACTER_TYPE_ON},
1048     {0x2E0A, 0x2E0A, GX_BIDI_CHARACTER_TYPE_ON},
1049     {0x2E0B, 0x2E0B, GX_BIDI_CHARACTER_TYPE_ON},
1050     {0x2E0C, 0x2E0C, GX_BIDI_CHARACTER_TYPE_ON},
1051     {0x2E0D, 0x2E0D, GX_BIDI_CHARACTER_TYPE_ON},
1052     {0x2E0E, 0x2E16, GX_BIDI_CHARACTER_TYPE_ON},
1053     {0x2E17, 0x2E17, GX_BIDI_CHARACTER_TYPE_ON},
1054     {0x2E18, 0x2E19, GX_BIDI_CHARACTER_TYPE_ON},
1055     {0x2E1A, 0x2E1A, GX_BIDI_CHARACTER_TYPE_ON},
1056     {0x2E1B, 0x2E1B, GX_BIDI_CHARACTER_TYPE_ON},
1057     {0x2E1C, 0x2E1C, GX_BIDI_CHARACTER_TYPE_ON},
1058     {0x2E1D, 0x2E1D, GX_BIDI_CHARACTER_TYPE_ON},
1059     {0x2E1E, 0x2E1F, GX_BIDI_CHARACTER_TYPE_ON},
1060     {0x2E20, 0x2E20, GX_BIDI_CHARACTER_TYPE_ON},
1061     {0x2E21, 0x2E21, GX_BIDI_CHARACTER_TYPE_ON},
1062     {0x2E22, 0x2E22, GX_BIDI_CHARACTER_TYPE_ON},
1063     {0x2E23, 0x2E23, GX_BIDI_CHARACTER_TYPE_ON},
1064     {0x2E24, 0x2E24, GX_BIDI_CHARACTER_TYPE_ON},
1065     {0x2E25, 0x2E25, GX_BIDI_CHARACTER_TYPE_ON},
1066     {0x2E26, 0x2E26, GX_BIDI_CHARACTER_TYPE_ON},
1067     {0x2E27, 0x2E27, GX_BIDI_CHARACTER_TYPE_ON},
1068     {0x2E28, 0x2E28, GX_BIDI_CHARACTER_TYPE_ON},
1069     {0x2E29, 0x2E29, GX_BIDI_CHARACTER_TYPE_ON},
1070     {0x2E2A, 0x2E2E, GX_BIDI_CHARACTER_TYPE_ON},
1071     {0x2E2F, 0x2E2F, GX_BIDI_CHARACTER_TYPE_ON},
1072     {0x2E30, 0x2E30, GX_BIDI_CHARACTER_TYPE_ON},
1073     {0x2E80, 0x2E99, GX_BIDI_CHARACTER_TYPE_ON},
1074     {0x2E9B, 0x2EF3, GX_BIDI_CHARACTER_TYPE_ON},
1075     {0x2F00, 0x2FD5, GX_BIDI_CHARACTER_TYPE_ON},
1076     {0x2FF0, 0x2FFB, GX_BIDI_CHARACTER_TYPE_ON},
1077     {0x3001, 0x3003, GX_BIDI_CHARACTER_TYPE_ON},
1078     {0x3004, 0x3004, GX_BIDI_CHARACTER_TYPE_ON},
1079     {0x3008, 0x3008, GX_BIDI_CHARACTER_TYPE_ON},
1080     {0x3009, 0x3009, GX_BIDI_CHARACTER_TYPE_ON},
1081     {0x300A, 0x300A, GX_BIDI_CHARACTER_TYPE_ON},
1082     {0x300B, 0x300B, GX_BIDI_CHARACTER_TYPE_ON},
1083     {0x300C, 0x300C, GX_BIDI_CHARACTER_TYPE_ON},
1084     {0x300D, 0x300D, GX_BIDI_CHARACTER_TYPE_ON},
1085     {0x300E, 0x300E, GX_BIDI_CHARACTER_TYPE_ON},
1086     {0x300F, 0x300F, GX_BIDI_CHARACTER_TYPE_ON},
1087     {0x3010, 0x3010, GX_BIDI_CHARACTER_TYPE_ON},
1088     {0x3011, 0x3011, GX_BIDI_CHARACTER_TYPE_ON},
1089     {0x3012, 0x3013, GX_BIDI_CHARACTER_TYPE_ON},
1090     {0x3014, 0x3014, GX_BIDI_CHARACTER_TYPE_ON},
1091     {0x3015, 0x3015, GX_BIDI_CHARACTER_TYPE_ON},
1092     {0x3016, 0x3016, GX_BIDI_CHARACTER_TYPE_ON},
1093     {0x3017, 0x3017, GX_BIDI_CHARACTER_TYPE_ON},
1094     {0x3018, 0x3018, GX_BIDI_CHARACTER_TYPE_ON},
1095     {0x3019, 0x3019, GX_BIDI_CHARACTER_TYPE_ON},
1096     {0x301A, 0x301A, GX_BIDI_CHARACTER_TYPE_ON},
1097     {0x301B, 0x301B, GX_BIDI_CHARACTER_TYPE_ON},
1098     {0x301C, 0x301C, GX_BIDI_CHARACTER_TYPE_ON},
1099     {0x301D, 0x301D, GX_BIDI_CHARACTER_TYPE_ON},
1100     {0x301E, 0x301F, GX_BIDI_CHARACTER_TYPE_ON},
1101     {0x3020, 0x3020, GX_BIDI_CHARACTER_TYPE_ON},
1102     {0x3030, 0x3030, GX_BIDI_CHARACTER_TYPE_ON},
1103     {0x3036, 0x3037, GX_BIDI_CHARACTER_TYPE_ON},
1104     {0x303D, 0x303D, GX_BIDI_CHARACTER_TYPE_ON},
1105     {0x303E, 0x303F, GX_BIDI_CHARACTER_TYPE_ON},
1106     {0x309B, 0x309C, GX_BIDI_CHARACTER_TYPE_ON},
1107     {0x30A0, 0x30A0, GX_BIDI_CHARACTER_TYPE_ON},
1108     {0x30FB, 0x30FB, GX_BIDI_CHARACTER_TYPE_ON},
1109     {0x31C0, 0x31E3, GX_BIDI_CHARACTER_TYPE_ON},
1110     {0x321D, 0x321E, GX_BIDI_CHARACTER_TYPE_ON},
1111     {0x3250, 0x3250, GX_BIDI_CHARACTER_TYPE_ON},
1112     {0x3251, 0x325F, GX_BIDI_CHARACTER_TYPE_ON},
1113     {0x327C, 0x327E, GX_BIDI_CHARACTER_TYPE_ON},
1114     {0x32B1, 0x32BF, GX_BIDI_CHARACTER_TYPE_ON},
1115     {0x32CC, 0x32CF, GX_BIDI_CHARACTER_TYPE_ON},
1116     {0x3377, 0x337A, GX_BIDI_CHARACTER_TYPE_ON},
1117     {0x33DE, 0x33DF, GX_BIDI_CHARACTER_TYPE_ON},
1118     {0x33FF, 0x33FF, GX_BIDI_CHARACTER_TYPE_ON},
1119     {0x4DC0, 0x4DFF, GX_BIDI_CHARACTER_TYPE_ON},
1120     {0xA490, 0xA4C6, GX_BIDI_CHARACTER_TYPE_ON},
1121     {0xA60D, 0xA60F, GX_BIDI_CHARACTER_TYPE_ON},
1122     {0xA673, 0xA673, GX_BIDI_CHARACTER_TYPE_ON},
1123     {0xA67E, 0xA67E, GX_BIDI_CHARACTER_TYPE_ON},
1124     {0xA67F, 0xA67F, GX_BIDI_CHARACTER_TYPE_ON},
1125     {0xA700, 0xA716, GX_BIDI_CHARACTER_TYPE_ON},
1126     {0xA717, 0xA71F, GX_BIDI_CHARACTER_TYPE_ON},
1127     {0xA720, 0xA721, GX_BIDI_CHARACTER_TYPE_ON},
1128     {0xA788, 0xA788, GX_BIDI_CHARACTER_TYPE_ON},
1129     {0xA828, 0xA82B, GX_BIDI_CHARACTER_TYPE_ON},
1130     {0xA874, 0xA877, GX_BIDI_CHARACTER_TYPE_ON},
1131     {0xFD3E, 0xFD3E, GX_BIDI_CHARACTER_TYPE_ON},
1132     {0xFD3F, 0xFD3F, GX_BIDI_CHARACTER_TYPE_ON},
1133     {0xFDFD, 0xFDFD, GX_BIDI_CHARACTER_TYPE_ON},
1134     {0xFE10, 0xFE16, GX_BIDI_CHARACTER_TYPE_ON},
1135     {0xFE17, 0xFE17, GX_BIDI_CHARACTER_TYPE_ON},
1136     {0xFE18, 0xFE18, GX_BIDI_CHARACTER_TYPE_ON},
1137     {0xFE19, 0xFE19, GX_BIDI_CHARACTER_TYPE_ON},
1138     {0xFE30, 0xFE30, GX_BIDI_CHARACTER_TYPE_ON},
1139     {0xFE31, 0xFE32, GX_BIDI_CHARACTER_TYPE_ON},
1140     {0xFE33, 0xFE34, GX_BIDI_CHARACTER_TYPE_ON},
1141     {0xFE35, 0xFE35, GX_BIDI_CHARACTER_TYPE_ON},
1142     {0xFE36, 0xFE36, GX_BIDI_CHARACTER_TYPE_ON},
1143     {0xFE37, 0xFE37, GX_BIDI_CHARACTER_TYPE_ON},
1144     {0xFE38, 0xFE38, GX_BIDI_CHARACTER_TYPE_ON},
1145     {0xFE39, 0xFE39, GX_BIDI_CHARACTER_TYPE_ON},
1146     {0xFE3A, 0xFE3A, GX_BIDI_CHARACTER_TYPE_ON},
1147     {0xFE3B, 0xFE3B, GX_BIDI_CHARACTER_TYPE_ON},
1148     {0xFE3C, 0xFE3C, GX_BIDI_CHARACTER_TYPE_ON},
1149     {0xFE3D, 0xFE3D, GX_BIDI_CHARACTER_TYPE_ON},
1150     {0xFE3E, 0xFE3E, GX_BIDI_CHARACTER_TYPE_ON},
1151     {0xFE3F, 0xFE3F, GX_BIDI_CHARACTER_TYPE_ON},
1152     {0xFE40, 0xFE40, GX_BIDI_CHARACTER_TYPE_ON},
1153     {0xFE41, 0xFE41, GX_BIDI_CHARACTER_TYPE_ON},
1154     {0xFE42, 0xFE42, GX_BIDI_CHARACTER_TYPE_ON},
1155     {0xFE43, 0xFE43, GX_BIDI_CHARACTER_TYPE_ON},
1156     {0xFE44, 0xFE44, GX_BIDI_CHARACTER_TYPE_ON},
1157     {0xFE45, 0xFE46, GX_BIDI_CHARACTER_TYPE_ON},
1158     {0xFE47, 0xFE47, GX_BIDI_CHARACTER_TYPE_ON},
1159     {0xFE48, 0xFE48, GX_BIDI_CHARACTER_TYPE_ON},
1160     {0xFE49, 0xFE4C, GX_BIDI_CHARACTER_TYPE_ON},
1161     {0xFE4D, 0xFE4F, GX_BIDI_CHARACTER_TYPE_ON},
1162     {0xFE51, 0xFE51, GX_BIDI_CHARACTER_TYPE_ON},
1163     {0xFE54, 0xFE54, GX_BIDI_CHARACTER_TYPE_ON},
1164     {0xFE56, 0xFE57, GX_BIDI_CHARACTER_TYPE_ON},
1165     {0xFE58, 0xFE58, GX_BIDI_CHARACTER_TYPE_ON},
1166     {0xFE59, 0xFE59, GX_BIDI_CHARACTER_TYPE_ON},
1167     {0xFE5A, 0xFE5A, GX_BIDI_CHARACTER_TYPE_ON},
1168     {0xFE5B, 0xFE5B, GX_BIDI_CHARACTER_TYPE_ON},
1169     {0xFE5C, 0xFE5C, GX_BIDI_CHARACTER_TYPE_ON},
1170     {0xFE5D, 0xFE5D, GX_BIDI_CHARACTER_TYPE_ON},
1171     {0xFE5E, 0xFE5E, GX_BIDI_CHARACTER_TYPE_ON},
1172     {0xFE60, 0xFE61, GX_BIDI_CHARACTER_TYPE_ON},
1173     {0xFE64, 0xFE66, GX_BIDI_CHARACTER_TYPE_ON},
1174     {0xFE68, 0xFE68, GX_BIDI_CHARACTER_TYPE_ON},
1175     {0xFE6B, 0xFE6B, GX_BIDI_CHARACTER_TYPE_ON},
1176     {0xFF01, 0xFF02, GX_BIDI_CHARACTER_TYPE_ON},
1177     {0xFF06, 0xFF07, GX_BIDI_CHARACTER_TYPE_ON},
1178     {0xFF08, 0xFF08, GX_BIDI_CHARACTER_TYPE_ON},
1179     {0xFF09, 0xFF09, GX_BIDI_CHARACTER_TYPE_ON},
1180     {0xFF0A, 0xFF0A, GX_BIDI_CHARACTER_TYPE_ON},
1181     {0xFF1B, 0xFF1B, GX_BIDI_CHARACTER_TYPE_ON},
1182     {0xFF1C, 0xFF1E, GX_BIDI_CHARACTER_TYPE_ON},
1183     {0xFF1F, 0xFF20, GX_BIDI_CHARACTER_TYPE_ON},
1184     {0xFF3B, 0xFF3B, GX_BIDI_CHARACTER_TYPE_ON},
1185     {0xFF3C, 0xFF3C, GX_BIDI_CHARACTER_TYPE_ON},
1186     {0xFF3D, 0xFF3D, GX_BIDI_CHARACTER_TYPE_ON},
1187     {0xFF3E, 0xFF3E, GX_BIDI_CHARACTER_TYPE_ON},
1188     {0xFF3F, 0xFF3F, GX_BIDI_CHARACTER_TYPE_ON},
1189     {0xFF40, 0xFF40, GX_BIDI_CHARACTER_TYPE_ON},
1190     {0xFF5B, 0xFF5B, GX_BIDI_CHARACTER_TYPE_ON},
1191     {0xFF5C, 0xFF5C, GX_BIDI_CHARACTER_TYPE_ON},
1192     {0xFF5D, 0xFF5D, GX_BIDI_CHARACTER_TYPE_ON},
1193     {0xFF5E, 0xFF5E, GX_BIDI_CHARACTER_TYPE_ON},
1194     {0xFF5F, 0xFF5F, GX_BIDI_CHARACTER_TYPE_ON},
1195     {0xFF60, 0xFF60, GX_BIDI_CHARACTER_TYPE_ON},
1196     {0xFF61, 0xFF61, GX_BIDI_CHARACTER_TYPE_ON},
1197     {0xFF62, 0xFF62, GX_BIDI_CHARACTER_TYPE_ON},
1198     {0xFF63, 0xFF63, GX_BIDI_CHARACTER_TYPE_ON},
1199     {0xFF64, 0xFF65, GX_BIDI_CHARACTER_TYPE_ON},
1200     {0xFFE2, 0xFFE2, GX_BIDI_CHARACTER_TYPE_ON},
1201     {0xFFE3, 0xFFE3, GX_BIDI_CHARACTER_TYPE_ON},
1202     {0xFFE4, 0xFFE4, GX_BIDI_CHARACTER_TYPE_ON},
1203     {0xFFE8, 0xFFE8, GX_BIDI_CHARACTER_TYPE_ON},
1204     {0xFFE9, 0xFFEC, GX_BIDI_CHARACTER_TYPE_ON},
1205     {0xFFED, 0xFFEE, GX_BIDI_CHARACTER_TYPE_ON},
1206     {0xFFF9, 0xFFFB, GX_BIDI_CHARACTER_TYPE_ON},
1207     {0xFFFC, 0xFFFD, GX_BIDI_CHARACTER_TYPE_ON},
1208     {0x10101, 0x10101, GX_BIDI_CHARACTER_TYPE_ON},
1209     {0x10140, 0x10174, GX_BIDI_CHARACTER_TYPE_ON},
1210     {0x10175, 0x10178, GX_BIDI_CHARACTER_TYPE_ON},
1211     {0x10179, 0x10189, GX_BIDI_CHARACTER_TYPE_ON},
1212     {0x1018A, 0x1018A, GX_BIDI_CHARACTER_TYPE_ON},
1213     {0x10190, 0x1019B, GX_BIDI_CHARACTER_TYPE_ON},
1214     {0x1091F, 0x1091F, GX_BIDI_CHARACTER_TYPE_ON},
1215     {0x1D200, 0x1D241, GX_BIDI_CHARACTER_TYPE_ON},
1216     {0x1D245, 0x1D245, GX_BIDI_CHARACTER_TYPE_ON},
1217     {0x1D300, 0x1D356, GX_BIDI_CHARACTER_TYPE_ON},
1218     {0x1F000, 0x1F02B, GX_BIDI_CHARACTER_TYPE_ON},
1219     {0x1F030, 0x1F093, GX_BIDI_CHARACTER_TYPE_ON},
1220     {0x0000, 0x0008, GX_BIDI_CHARACTER_TYPE_BN},
1221     {0x000E, 0x001B, GX_BIDI_CHARACTER_TYPE_BN},
1222     {0x007F, 0x0084, GX_BIDI_CHARACTER_TYPE_BN},
1223     {0x0086, 0x009F, GX_BIDI_CHARACTER_TYPE_BN},
1224     {0x00AD, 0x00AD, GX_BIDI_CHARACTER_TYPE_BN},
1225     {0x070F, 0x070F, GX_BIDI_CHARACTER_TYPE_BN},
1226     {0x200B, 0x200D, GX_BIDI_CHARACTER_TYPE_BN},
1227     {0x2060, 0x2064, GX_BIDI_CHARACTER_TYPE_BN},
1228     {0x2065, 0x2069, GX_BIDI_CHARACTER_TYPE_BN},
1229     {0x206A, 0x206F, GX_BIDI_CHARACTER_TYPE_BN},
1230     {0xFDD0, 0xFDEF, GX_BIDI_CHARACTER_TYPE_BN},
1231     {0xFEFF, 0xFEFF, GX_BIDI_CHARACTER_TYPE_BN},
1232     {0xFFF0, 0xFFF8, GX_BIDI_CHARACTER_TYPE_BN},
1233     {0xFFFE, 0xFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1234     {0x1D173, 0x1D17A, GX_BIDI_CHARACTER_TYPE_BN},
1235     {0x1FFFE, 0x1FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1236     {0x2FFFE, 0x2FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1237     {0x3FFFE, 0x3FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1238     {0x4FFFE, 0x4FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1239     {0x5FFFE, 0x5FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1240     {0x6FFFE, 0x6FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1241     {0x7FFFE, 0x7FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1242     {0x8FFFE, 0x8FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1243     {0x9FFFE, 0x9FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1244     {0xAFFFE, 0xAFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1245     {0xBFFFE, 0xBFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1246     {0xCFFFE, 0xCFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1247     {0xDFFFE, 0xE0000, GX_BIDI_CHARACTER_TYPE_BN},
1248     {0xE0001, 0xE0001, GX_BIDI_CHARACTER_TYPE_BN},
1249     {0xE0002, 0xE001F, GX_BIDI_CHARACTER_TYPE_BN},
1250     {0xE0020, 0xE007F, GX_BIDI_CHARACTER_TYPE_BN},
1251     {0xE0080, 0xE00FF, GX_BIDI_CHARACTER_TYPE_BN},
1252     {0xE01F0, 0xE0FFF, GX_BIDI_CHARACTER_TYPE_BN},
1253     {0xEFFFE, 0xEFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1254     {0xFFFFE, 0xFFFFF, GX_BIDI_CHARACTER_TYPE_BN},
1255     {0x10FFFE, 0x10FFFF, GX_BIDI_CHARACTER_TYPE_BN},
1256     {0x0300, 0x036F, GX_BIDI_CHARACTER_TYPE_NSM},
1257     {0x0483, 0x0487, GX_BIDI_CHARACTER_TYPE_NSM},
1258     {0x0488, 0x0489, GX_BIDI_CHARACTER_TYPE_NSM},
1259     {0x0591, 0x05BD, GX_BIDI_CHARACTER_TYPE_NSM},
1260     {0x05BF, 0x05BF, GX_BIDI_CHARACTER_TYPE_NSM},
1261     {0x05C1, 0x05C2, GX_BIDI_CHARACTER_TYPE_NSM},
1262     {0x05C4, 0x05C5, GX_BIDI_CHARACTER_TYPE_NSM},
1263     {0x05C7, 0x05C7, GX_BIDI_CHARACTER_TYPE_NSM},
1264     {0x0610, 0x061A, GX_BIDI_CHARACTER_TYPE_NSM},
1265     {0x064B, 0x065E, GX_BIDI_CHARACTER_TYPE_NSM},
1266     {0x0670, 0x0670, GX_BIDI_CHARACTER_TYPE_NSM},
1267     {0x06D6, 0x06DC, GX_BIDI_CHARACTER_TYPE_NSM},
1268     {0x06DE, 0x06DE, GX_BIDI_CHARACTER_TYPE_NSM},
1269     {0x06DF, 0x06E4, GX_BIDI_CHARACTER_TYPE_NSM},
1270     {0x06E7, 0x06E8, GX_BIDI_CHARACTER_TYPE_NSM},
1271     {0x06EA, 0x06ED, GX_BIDI_CHARACTER_TYPE_NSM},
1272     {0x0711, 0x0711, GX_BIDI_CHARACTER_TYPE_NSM},
1273     {0x0730, 0x074A, GX_BIDI_CHARACTER_TYPE_NSM},
1274     {0x07A6, 0x07B0, GX_BIDI_CHARACTER_TYPE_NSM},
1275     {0x07EB, 0x07F3, GX_BIDI_CHARACTER_TYPE_NSM},
1276     {0x0901, 0x0902, GX_BIDI_CHARACTER_TYPE_NSM},
1277     {0x093C, 0x093C, GX_BIDI_CHARACTER_TYPE_NSM},
1278     {0x0941, 0x0948, GX_BIDI_CHARACTER_TYPE_NSM},
1279     {0x094D, 0x094D, GX_BIDI_CHARACTER_TYPE_NSM},
1280     {0x0951, 0x0954, GX_BIDI_CHARACTER_TYPE_NSM},
1281     {0x0962, 0x0963, GX_BIDI_CHARACTER_TYPE_NSM},
1282     {0x0981, 0x0981, GX_BIDI_CHARACTER_TYPE_NSM},
1283     {0x09BC, 0x09BC, GX_BIDI_CHARACTER_TYPE_NSM},
1284     {0x09C1, 0x09C4, GX_BIDI_CHARACTER_TYPE_NSM},
1285     {0x09CD, 0x09CD, GX_BIDI_CHARACTER_TYPE_NSM},
1286     {0x09E2, 0x09E3, GX_BIDI_CHARACTER_TYPE_NSM},
1287     {0x0A01, 0x0A02, GX_BIDI_CHARACTER_TYPE_NSM},
1288     {0x0A3C, 0x0A3C, GX_BIDI_CHARACTER_TYPE_NSM},
1289     {0x0A41, 0x0A42, GX_BIDI_CHARACTER_TYPE_NSM},
1290     {0x0A47, 0x0A48, GX_BIDI_CHARACTER_TYPE_NSM},
1291     {0x0A4B, 0x0A4D, GX_BIDI_CHARACTER_TYPE_NSM},
1292     {0x0A51, 0x0A51, GX_BIDI_CHARACTER_TYPE_NSM},
1293     {0x0A70, 0x0A71, GX_BIDI_CHARACTER_TYPE_NSM},
1294     {0x0A75, 0x0A75, GX_BIDI_CHARACTER_TYPE_NSM},
1295     {0x0A81, 0x0A82, GX_BIDI_CHARACTER_TYPE_NSM},
1296     {0x0ABC, 0x0ABC, GX_BIDI_CHARACTER_TYPE_NSM},
1297     {0x0AC1, 0x0AC5, GX_BIDI_CHARACTER_TYPE_NSM},
1298     {0x0AC7, 0x0AC8, GX_BIDI_CHARACTER_TYPE_NSM},
1299     {0x0ACD, 0x0ACD, GX_BIDI_CHARACTER_TYPE_NSM},
1300     {0x0AE2, 0x0AE3, GX_BIDI_CHARACTER_TYPE_NSM},
1301     {0x0B01, 0x0B01, GX_BIDI_CHARACTER_TYPE_NSM},
1302     {0x0B3C, 0x0B3C, GX_BIDI_CHARACTER_TYPE_NSM},
1303     {0x0B3F, 0x0B3F, GX_BIDI_CHARACTER_TYPE_NSM},
1304     {0x0B41, 0x0B44, GX_BIDI_CHARACTER_TYPE_NSM},
1305     {0x0B4D, 0x0B4D, GX_BIDI_CHARACTER_TYPE_NSM},
1306     {0x0B56, 0x0B56, GX_BIDI_CHARACTER_TYPE_NSM},
1307     {0x0B62, 0x0B63, GX_BIDI_CHARACTER_TYPE_NSM},
1308     {0x0B82, 0x0B82, GX_BIDI_CHARACTER_TYPE_NSM},
1309     {0x0BC0, 0x0BC0, GX_BIDI_CHARACTER_TYPE_NSM},
1310     {0x0BCD, 0x0BCD, GX_BIDI_CHARACTER_TYPE_NSM},
1311     {0x0C3E, 0x0C40, GX_BIDI_CHARACTER_TYPE_NSM},
1312     {0x0C46, 0x0C48, GX_BIDI_CHARACTER_TYPE_NSM},
1313     {0x0C4A, 0x0C4D, GX_BIDI_CHARACTER_TYPE_NSM},
1314     {0x0C55, 0x0C56, GX_BIDI_CHARACTER_TYPE_NSM},
1315     {0x0C62, 0x0C63, GX_BIDI_CHARACTER_TYPE_NSM},
1316     {0x0CBC, 0x0CBC, GX_BIDI_CHARACTER_TYPE_NSM},
1317     {0x0CCC, 0x0CCD, GX_BIDI_CHARACTER_TYPE_NSM},
1318     {0x0CE2, 0x0CE3, GX_BIDI_CHARACTER_TYPE_NSM},
1319     {0x0D41, 0x0D44, GX_BIDI_CHARACTER_TYPE_NSM},
1320     {0x0D4D, 0x0D4D, GX_BIDI_CHARACTER_TYPE_NSM},
1321     {0x0D62, 0x0D63, GX_BIDI_CHARACTER_TYPE_NSM},
1322     {0x0DCA, 0x0DCA, GX_BIDI_CHARACTER_TYPE_NSM},
1323     {0x0DD2, 0x0DD4, GX_BIDI_CHARACTER_TYPE_NSM},
1324     {0x0DD6, 0x0DD6, GX_BIDI_CHARACTER_TYPE_NSM},
1325     {0x0E31, 0x0E31, GX_BIDI_CHARACTER_TYPE_NSM},
1326     {0x0E34, 0x0E3A, GX_BIDI_CHARACTER_TYPE_NSM},
1327     {0x0E47, 0x0E4E, GX_BIDI_CHARACTER_TYPE_NSM},
1328     {0x0EB1, 0x0EB1, GX_BIDI_CHARACTER_TYPE_NSM},
1329     {0x0EB4, 0x0EB9, GX_BIDI_CHARACTER_TYPE_NSM},
1330     {0x0EBB, 0x0EBC, GX_BIDI_CHARACTER_TYPE_NSM},
1331     {0x0EC8, 0x0ECD, GX_BIDI_CHARACTER_TYPE_NSM},
1332     {0x0F18, 0x0F19, GX_BIDI_CHARACTER_TYPE_NSM},
1333     {0x0F35, 0x0F35, GX_BIDI_CHARACTER_TYPE_NSM},
1334     {0x0F37, 0x0F37, GX_BIDI_CHARACTER_TYPE_NSM},
1335     {0x0F39, 0x0F39, GX_BIDI_CHARACTER_TYPE_NSM},
1336     {0x0F71, 0x0F7E, GX_BIDI_CHARACTER_TYPE_NSM},
1337     {0x0F80, 0x0F84, GX_BIDI_CHARACTER_TYPE_NSM},
1338     {0x0F86, 0x0F87, GX_BIDI_CHARACTER_TYPE_NSM},
1339     {0x0F90, 0x0F97, GX_BIDI_CHARACTER_TYPE_NSM},
1340     {0x0F99, 0x0FBC, GX_BIDI_CHARACTER_TYPE_NSM},
1341     {0x0FC6, 0x0FC6, GX_BIDI_CHARACTER_TYPE_NSM},
1342     {0x102D, 0x1030, GX_BIDI_CHARACTER_TYPE_NSM},
1343     {0x1032, 0x1037, GX_BIDI_CHARACTER_TYPE_NSM},
1344     {0x1039, 0x103A, GX_BIDI_CHARACTER_TYPE_NSM},
1345     {0x103D, 0x103E, GX_BIDI_CHARACTER_TYPE_NSM},
1346     {0x1058, 0x1059, GX_BIDI_CHARACTER_TYPE_NSM},
1347     {0x105E, 0x1060, GX_BIDI_CHARACTER_TYPE_NSM},
1348     {0x1071, 0x1074, GX_BIDI_CHARACTER_TYPE_NSM},
1349     {0x1082, 0x1082, GX_BIDI_CHARACTER_TYPE_NSM},
1350     {0x1085, 0x1086, GX_BIDI_CHARACTER_TYPE_NSM},
1351     {0x108D, 0x108D, GX_BIDI_CHARACTER_TYPE_NSM},
1352     {0x135F, 0x135F, GX_BIDI_CHARACTER_TYPE_NSM},
1353     {0x1712, 0x1714, GX_BIDI_CHARACTER_TYPE_NSM},
1354     {0x1732, 0x1734, GX_BIDI_CHARACTER_TYPE_NSM},
1355     {0x1752, 0x1753, GX_BIDI_CHARACTER_TYPE_NSM},
1356     {0x1772, 0x1773, GX_BIDI_CHARACTER_TYPE_NSM},
1357     {0x17B7, 0x17BD, GX_BIDI_CHARACTER_TYPE_NSM},
1358     {0x17C6, 0x17C6, GX_BIDI_CHARACTER_TYPE_NSM},
1359     {0x17C9, 0x17D3, GX_BIDI_CHARACTER_TYPE_NSM},
1360     {0x17DD, 0x17DD, GX_BIDI_CHARACTER_TYPE_NSM},
1361     {0x180B, 0x180D, GX_BIDI_CHARACTER_TYPE_NSM},
1362     {0x18A9, 0x18A9, GX_BIDI_CHARACTER_TYPE_NSM},
1363     {0x1920, 0x1922, GX_BIDI_CHARACTER_TYPE_NSM},
1364     {0x1927, 0x1928, GX_BIDI_CHARACTER_TYPE_NSM},
1365     {0x1932, 0x1932, GX_BIDI_CHARACTER_TYPE_NSM},
1366     {0x1939, 0x193B, GX_BIDI_CHARACTER_TYPE_NSM},
1367     {0x1A17, 0x1A18, GX_BIDI_CHARACTER_TYPE_NSM},
1368     {0x1B00, 0x1B03, GX_BIDI_CHARACTER_TYPE_NSM},
1369     {0x1B34, 0x1B34, GX_BIDI_CHARACTER_TYPE_NSM},
1370     {0x1B36, 0x1B3A, GX_BIDI_CHARACTER_TYPE_NSM},
1371     {0x1B3C, 0x1B3C, GX_BIDI_CHARACTER_TYPE_NSM},
1372     {0x1B42, 0x1B42, GX_BIDI_CHARACTER_TYPE_NSM},
1373     {0x1B6B, 0x1B73, GX_BIDI_CHARACTER_TYPE_NSM},
1374     {0x1B80, 0x1B81, GX_BIDI_CHARACTER_TYPE_NSM},
1375     {0x1BA2, 0x1BA5, GX_BIDI_CHARACTER_TYPE_NSM},
1376     {0x1BA8, 0x1BA9, GX_BIDI_CHARACTER_TYPE_NSM},
1377     {0x1C2C, 0x1C33, GX_BIDI_CHARACTER_TYPE_NSM},
1378     {0x1C36, 0x1C37, GX_BIDI_CHARACTER_TYPE_NSM},
1379     {0x1DC0, 0x1DE6, GX_BIDI_CHARACTER_TYPE_NSM},
1380     {0x1DFE, 0x1DFF, GX_BIDI_CHARACTER_TYPE_NSM},
1381     {0x20D0, 0x20DC, GX_BIDI_CHARACTER_TYPE_NSM},
1382     {0x20DD, 0x20E0, GX_BIDI_CHARACTER_TYPE_NSM},
1383     {0x20E1, 0x20E1, GX_BIDI_CHARACTER_TYPE_NSM},
1384     {0x20E2, 0x20E4, GX_BIDI_CHARACTER_TYPE_NSM},
1385     {0x20E5, 0x20F0, GX_BIDI_CHARACTER_TYPE_NSM},
1386     {0x2DE0, 0x2DFF, GX_BIDI_CHARACTER_TYPE_NSM},
1387     {0x302A, 0x302F, GX_BIDI_CHARACTER_TYPE_NSM},
1388     {0x3099, 0x309A, GX_BIDI_CHARACTER_TYPE_NSM},
1389     {0xA66F, 0xA66F, GX_BIDI_CHARACTER_TYPE_NSM},
1390     {0xA670, 0xA672, GX_BIDI_CHARACTER_TYPE_NSM},
1391     {0xA67C, 0xA67D, GX_BIDI_CHARACTER_TYPE_NSM},
1392     {0xA802, 0xA802, GX_BIDI_CHARACTER_TYPE_NSM},
1393     {0xA806, 0xA806, GX_BIDI_CHARACTER_TYPE_NSM},
1394     {0xA80B, 0xA80B, GX_BIDI_CHARACTER_TYPE_NSM},
1395     {0xA825, 0xA826, GX_BIDI_CHARACTER_TYPE_NSM},
1396     {0xA8C4, 0xA8C4, GX_BIDI_CHARACTER_TYPE_NSM},
1397     {0xA926, 0xA92D, GX_BIDI_CHARACTER_TYPE_NSM},
1398     {0xA947, 0xA951, GX_BIDI_CHARACTER_TYPE_NSM},
1399     {0xAA29, 0xAA2E, GX_BIDI_CHARACTER_TYPE_NSM},
1400     {0xAA31, 0xAA32, GX_BIDI_CHARACTER_TYPE_NSM},
1401     {0xAA35, 0xAA36, GX_BIDI_CHARACTER_TYPE_NSM},
1402     {0xAA43, 0xAA43, GX_BIDI_CHARACTER_TYPE_NSM},
1403     {0xAA4C, 0xAA4C, GX_BIDI_CHARACTER_TYPE_NSM},
1404     {0xFB1E, 0xFB1E, GX_BIDI_CHARACTER_TYPE_NSM},
1405     {0xFE00, 0xFE0F, GX_BIDI_CHARACTER_TYPE_NSM},
1406     {0xFE20, 0xFE26, GX_BIDI_CHARACTER_TYPE_NSM},
1407     {0x101FD, 0x101FD, GX_BIDI_CHARACTER_TYPE_NSM},
1408     {0x10A01, 0x10A03, GX_BIDI_CHARACTER_TYPE_NSM},
1409     {0x10A05, 0x10A06, GX_BIDI_CHARACTER_TYPE_NSM},
1410     {0x10A0C, 0x10A0F, GX_BIDI_CHARACTER_TYPE_NSM},
1411     {0x10A38, 0x10A3A, GX_BIDI_CHARACTER_TYPE_NSM},
1412     {0x10A3F, 0x10A3F, GX_BIDI_CHARACTER_TYPE_NSM},
1413     {0x1D167, 0x1D169, GX_BIDI_CHARACTER_TYPE_NSM},
1414     {0x1D17B, 0x1D182, GX_BIDI_CHARACTER_TYPE_NSM},
1415     {0x1D185, 0x1D18B, GX_BIDI_CHARACTER_TYPE_NSM},
1416     {0x1D1AA, 0x1D1AD, GX_BIDI_CHARACTER_TYPE_NSM},
1417     {0x1D242, 0x1D244, GX_BIDI_CHARACTER_TYPE_NSM},
1418     {0xE0100, 0xE01EF, GX_BIDI_CHARACTER_TYPE_NSM},
1419     {0x0604, 0x0605, GX_BIDI_CHARACTER_TYPE_AL},
1420     {0x0608, 0x0608, GX_BIDI_CHARACTER_TYPE_AL},
1421     {0x060B, 0x060B, GX_BIDI_CHARACTER_TYPE_AL},
1422     {0x060D, 0x060D, GX_BIDI_CHARACTER_TYPE_AL},
1423     {0x061B, 0x061B, GX_BIDI_CHARACTER_TYPE_AL},
1424     {0x061C, 0x061D, GX_BIDI_CHARACTER_TYPE_AL},
1425     {0x061E, 0x061F, GX_BIDI_CHARACTER_TYPE_AL},
1426     {0x0620, 0x0620, GX_BIDI_CHARACTER_TYPE_AL},
1427     {0x0621, 0x063F, GX_BIDI_CHARACTER_TYPE_AL},
1428     {0x0640, 0x0640, GX_BIDI_CHARACTER_TYPE_AL},
1429     {0x0641, 0x064A, GX_BIDI_CHARACTER_TYPE_AL},
1430     {0x065F, 0x065F, GX_BIDI_CHARACTER_TYPE_AL},
1431     {0x066D, 0x066D, GX_BIDI_CHARACTER_TYPE_AL},
1432     {0x066E, 0x066F, GX_BIDI_CHARACTER_TYPE_AL},
1433     {0x0671, 0x06D3, GX_BIDI_CHARACTER_TYPE_AL},
1434     {0x06D4, 0x06D4, GX_BIDI_CHARACTER_TYPE_AL},
1435     {0x06D5, 0x06D5, GX_BIDI_CHARACTER_TYPE_AL},
1436     {0x06E5, 0x06E6, GX_BIDI_CHARACTER_TYPE_AL},
1437     {0x06EE, 0x06EF, GX_BIDI_CHARACTER_TYPE_AL},
1438     {0x06FA, 0x06FC, GX_BIDI_CHARACTER_TYPE_AL},
1439     {0x06FD, 0x06FE, GX_BIDI_CHARACTER_TYPE_AL},
1440     {0x06FF, 0x06FF, GX_BIDI_CHARACTER_TYPE_AL},
1441     {0x0700, 0x070D, GX_BIDI_CHARACTER_TYPE_AL},
1442     {0x070E, 0x070E, GX_BIDI_CHARACTER_TYPE_AL},
1443     {0x0710, 0x0710, GX_BIDI_CHARACTER_TYPE_AL},
1444     {0x0712, 0x072F, GX_BIDI_CHARACTER_TYPE_AL},
1445     {0x074B, 0x074C, GX_BIDI_CHARACTER_TYPE_AL},
1446     {0x074D, 0x07A5, GX_BIDI_CHARACTER_TYPE_AL},
1447     {0x07B1, 0x07B1, GX_BIDI_CHARACTER_TYPE_AL},
1448     {0x07B2, 0x07BF, GX_BIDI_CHARACTER_TYPE_AL},
1449     {0xFB50, 0xFBB1, GX_BIDI_CHARACTER_TYPE_AL},
1450     {0xFBB2, 0xFBD2, GX_BIDI_CHARACTER_TYPE_AL},
1451     {0xFBD3, 0xFD3D, GX_BIDI_CHARACTER_TYPE_AL},
1452     {0xFD40, 0xFD4F, GX_BIDI_CHARACTER_TYPE_AL},
1453     {0xFD50, 0xFD8F, GX_BIDI_CHARACTER_TYPE_AL},
1454     {0xFD90, 0xFD91, GX_BIDI_CHARACTER_TYPE_AL},
1455     {0xFD92, 0xFDC7, GX_BIDI_CHARACTER_TYPE_AL},
1456     {0xFDC8, 0xFDCF, GX_BIDI_CHARACTER_TYPE_AL},
1457     {0xFDF0, 0xFDFB, GX_BIDI_CHARACTER_TYPE_AL},
1458     {0xFDFC, 0xFDFC, GX_BIDI_CHARACTER_TYPE_AL},
1459     {0xFDFE, 0xFDFF, GX_BIDI_CHARACTER_TYPE_AL},
1460     {0xFE70, 0xFE74, GX_BIDI_CHARACTER_TYPE_AL},
1461     {0xFE75, 0xFE75, GX_BIDI_CHARACTER_TYPE_AL},
1462     {0xFE76, 0xFEFC, GX_BIDI_CHARACTER_TYPE_AL},
1463     {0xFEFD, 0xFEFE, GX_BIDI_CHARACTER_TYPE_AL},
1464     {0x0600, 0x06FF, GX_BIDI_CHARACTER_TYPE_AL},        /* Arabic */
1465     {0x0700, 0x074F, GX_BIDI_CHARACTER_TYPE_AL},        /* Syriac */
1466     {0x0750, 0x077F, GX_BIDI_CHARACTER_TYPE_AL},        /* Arabic_Supplement */
1467     {0x0780, 0x07BF, GX_BIDI_CHARACTER_TYPE_AL},        /* Thaana */
1468     {0xFB50, 0xFDFF, GX_BIDI_CHARACTER_TYPE_AL},        /* Arabic_Presentation_Formas_A */
1469     {0xFE70, 0xFEFF, GX_BIDI_CHARACTER_TYPE_AL},        /* Arabic_Presentation_formas_B */
1470     {0x0590, 0x05FF, GX_BIDI_CHARACTER_TYPE_R},         /* Hebrew */
1471     {0x07C0, 0x07FF, GX_BIDI_CHARACTER_TYPE_R},         /* NKo*/
1472     {0x00010800, 0x0001083F, GX_BIDI_CHARACTER_TYPE_R}, /* Cypriot_Syllabary */
1473     {0x00010900, 0x0001091F, GX_BIDI_CHARACTER_TYPE_R}, /* Phoenician */
1474     {0x00010920, 0x0001093F, GX_BIDI_CHARACTER_TYPE_R}, /* Lydian */
1475     {0x00010A00, 0x00010A5F, GX_BIDI_CHARACTER_TYPE_R}, /* Kharoshthi */
1476     {0x0800, 0x08FF, GX_BIDI_CHARACTER_TYPE_R},
1477     {0xFB1D, 0xFB4F, GX_BIDI_CHARACTER_TYPE_R},
1478     {0x00010840, 0x00010FFF, GX_BIDI_CHARACTER_TYPE_R},
1479     {0, 0, 0}
1480 };
1481 
1482 /**************************************************************************/
1483 /*                                                                        */
1484 /*  FUNCTION                                               RELEASE        */
1485 /*                                                                        */
1486 /*    _gx_utility_bidi_character_type_get                 PORTABLE C      */
1487 /*                                                           6.1          */
1488 /*  AUTHOR                                                                */
1489 /*                                                                        */
1490 /*    Kenneth Maxwell, Microsoft Corporation                              */
1491 /*                                                                        */
1492 /*  DESCRIPTION                                                           */
1493 /*                                                                        */
1494 /*    This function gets the bidi type of a unicode.                      */
1495 /*                                                                        */
1496 /*  INPUT                                                                 */
1497 /*                                                                        */
1498 /*    code                                  Code point whose bidi type is */
1499 /*                                            retrieved                   */
1500 /*    type                                  Retrieved bidi type.          */
1501 /*                                                                        */
1502 /*  OUTPUT                                                                */
1503 /*                                                                        */
1504 /*    status                                Completion status             */
1505 /*                                                                        */
1506 /*  CALLS                                                                 */
1507 /*                                                                        */
1508 /*    None                                                                */
1509 /*                                                                        */
1510 /*  CALLED BY                                                             */
1511 /*                                                                        */
1512 /*    Application Code                                                    */
1513 /*                                                                        */
1514 /*  RELEASE HISTORY                                                       */
1515 /*                                                                        */
1516 /*    DATE              NAME                      DESCRIPTION             */
1517 /*                                                                        */
1518 /*  05-19-2020     Kenneth Maxwell          Initial Version 6.0           */
1519 /*  09-30-2020     Kenneth Maxwell          Modified comment(s),          */
1520 /*                                            resulting in version 6.1    */
1521 /*                                                                        */
1522 /**************************************************************************/
_gx_utility_bidi_character_type_get(ULONG code,GX_UBYTE * type)1523 UINT _gx_utility_bidi_character_type_get(ULONG code, GX_UBYTE *type)
1524 {
1525 GX_UBYTE                         get_type = GX_BIDI_CHARACTER_TYPE_L;
1526 GX_CONST GX_BIDI_CHARACTER_INFO *entry = _gx_bidi_character_types;
1527 
1528     switch (code)
1529     {
1530     case GX_BIDI_DIRECTION_FORMAT_LRE:
1531         get_type = GX_BIDI_CHARACTER_TYPE_LRE;
1532         break;
1533     case GX_BIDI_DIRECTION_FORMAT_RLE:
1534         get_type = GX_BIDI_CHARACTER_TYPE_RLE;
1535         break;
1536     case GX_BIDI_DIRECTION_FORMAT_LRO:
1537         get_type = GX_BIDI_CHARACTER_TYPE_LRO;
1538         break;
1539     case GX_BIDI_DIRECTION_FORMAT_RLO:
1540         get_type = GX_BIDI_CHARACTER_TYPE_RLO;
1541         break;
1542     case GX_BIDI_DIRECTION_FORMAT_PDF:
1543         get_type = GX_BIDI_CHARACTER_TYPE_PDF;
1544         break;
1545     case GX_BIDI_DIRECTION_FORMAT_LRI:
1546         get_type = GX_BIDI_CHARACTER_TYPE_LRI;
1547         break;
1548     case GX_BIDI_DIRECTION_FORMAT_RLI:
1549         get_type = GX_BIDI_CHARACTER_TYPE_RLI;
1550         break;
1551     case GX_BIDI_DIRECTION_FORMAT_FSI:
1552         get_type = GX_BIDI_CHARACTER_TYPE_FSI;
1553         break;
1554     case GX_BIDI_DIRECTION_FORMAT_PDI:
1555         get_type = GX_BIDI_CHARACTER_TYPE_PDI;
1556         break;
1557 
1558     default:
1559         while (entry -> gx_bidi_character_info_type)
1560         {
1561             if ((code >= entry -> gx_bidi_character_info_range_start) &&
1562                 (code <= entry -> gx_bidi_character_info_range_end))
1563             {
1564                 get_type = entry -> gx_bidi_character_info_type;
1565                 break;
1566             }
1567 
1568             entry++;
1569         }
1570         break;
1571     }
1572 
1573     if (type)
1574     {
1575         *type = get_type;
1576     }
1577 
1578     return GX_SUCCESS;
1579 }
1580 #endif
1581