aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2010-06-12 18:52:43 +0300
committerEli Zaretskii2010-06-12 18:52:43 +0300
commitcbc4fd20f7a9460026035e07116badeddf33e0e0 (patch)
tree45b2c7c146fa5544b6aa231dcdbf7a8e62275e7b /src
parent317fbf3360f9b1163bc371d8d66c67994cb238e9 (diff)
downloademacs-cbc4fd20f7a9460026035e07116badeddf33e0e0.tar.gz
emacs-cbc4fd20f7a9460026035e07116badeddf33e0e0.zip
Use BidiMirroring.txt for mirroring characters in bidi context.
admin/unidata/bidimirror.awk: New file. admin/unidata/BidiMirroring.txt: New file from http://www.unicode.org/Public/6.0.0/ucd/BidiMirroring-6.0.0d1.txt. admin/unidata/Makefile.in: (../../src/bidimirror.h): New target. (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. admin/unidata/makefile.w32-in (../../src/bidimirror.h): New target. (all): Depend on ../../src/biditype.h and ../../src/bidimirror.h. src/makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and bidimirror.h. src/deps.mk (bidi.o): Depend on biditype.h and bidimirror.h. src/bidi.c (bidi_initialize): Initialize bidi_mirror_table. (bidi_mirror_char): Use bidi_mirror_table.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog11
-rw-r--r--src/bidi.c31
-rw-r--r--src/bidimirror.h365
-rw-r--r--src/biditype.h446
-rw-r--r--src/deps.mk3
-rw-r--r--src/makefile.w32-in2
6 files changed, 848 insertions, 10 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 19615190b62..3e6c8f24398 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,11 +1,20 @@
12010-06-12 Eli Zaretskii <eliz@gnu.org> 12010-06-12 Eli Zaretskii <eliz@gnu.org>
2 2
3 * makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and
4 bidimirror.h.
5
6 * deps.mk (bidi.o): Depend on biditype.h and bidimirror.h.
7
3 * bidi.c (bidi_initialize): Remove explicit initialization of 8 * bidi.c (bidi_initialize): Remove explicit initialization of
4 bidi_type_table; include biditype.h instead. Don't support 9 bidi_type_table; include biditype.h instead. Don't support
5 entries whose second codepoint is zero. 10 entries whose second codepoint is zero. Initialize
11 bidi_mirror_table.
12 (bidi_mirror_char): Use bidi_mirror_table.
6 13
7 * biditype.h: New file. 14 * biditype.h: New file.
8 15
16 * bidimirror.h: New file.
17
9 * window.c (syms_of_window): Doc fix (bug#6409). 18 * window.c (syms_of_window): Doc fix (bug#6409).
10 19
112010-06-12 Romain Francoise <romain@orebokech.com> 202010-06-12 Romain Francoise <romain@orebokech.com>
diff --git a/src/bidi.c b/src/bidi.c
index 190320bbe0e..2815b04ad8a 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -68,7 +68,7 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
68 68
69static int bidi_initialized = 0; 69static int bidi_initialized = 0;
70 70
71static Lisp_Object bidi_type_table; 71static Lisp_Object bidi_type_table, bidi_mirror_table;
72 72
73/* FIXME: Remove these when bidi_explicit_dir_char uses a lookup table. */ 73/* FIXME: Remove these when bidi_explicit_dir_char uses a lookup table. */
74#define LRM_CHAR 0x200E 74#define LRM_CHAR 0x200E
@@ -110,6 +110,7 @@ bidi_initialize ()
110{ 110{
111 111
112#include "biditype.h" 112#include "biditype.h"
113#include "bidimirror.h"
113 114
114 int i; 115 int i;
115 116
@@ -120,6 +121,13 @@ bidi_initialize ()
120 char_table_set_range (bidi_type_table, bidi_type[i].from, bidi_type[i].to, 121 char_table_set_range (bidi_type_table, bidi_type[i].from, bidi_type[i].to,
121 make_number (bidi_type[i].type)); 122 make_number (bidi_type[i].type));
122 123
124 bidi_mirror_table = Fmake_char_table (Qnil, Qnil);
125 staticpro (&bidi_mirror_table);
126
127 for (i = 0; i < sizeof bidi_mirror / sizeof bidi_mirror[0]; i++)
128 char_table_set (bidi_mirror_table, bidi_mirror[i].from,
129 make_number (bidi_mirror[i].to));
130
123 Qparagraph_start = intern ("paragraph-start"); 131 Qparagraph_start = intern ("paragraph-start");
124 staticpro (&Qparagraph_start); 132 staticpro (&Qparagraph_start);
125 paragraph_start_re = Fsymbol_value (Qparagraph_start); 133 paragraph_start_re = Fsymbol_value (Qparagraph_start);
@@ -226,20 +234,27 @@ bidi_get_category (bidi_type_t type)
226 234
227 Note: The conditions in UAX#9 clause L4 must be tested by the 235 Note: The conditions in UAX#9 clause L4 must be tested by the
228 caller. */ 236 caller. */
229/* FIXME: exceedingly temporary! Should consult the Unicode database
230 of character properties. */
231int 237int
232bidi_mirror_char (int c) 238bidi_mirror_char (int c)
233{ 239{
234 static const char mirrored_pairs[] = "()<>[]{}"; 240 Lisp_Object val;
235 const char *p = c > 0 && c < 128 ? strchr (mirrored_pairs, c) : NULL; 241
242 if (c == BIDI_EOB)
243 return c;
244 if (c < 0 || c > MAX_CHAR)
245 abort ();
236 246
237 if (p) 247 val = CHAR_TABLE_REF (bidi_mirror_table, c);
248 if (INTEGERP (val))
238 { 249 {
239 size_t i = p - mirrored_pairs; 250 int v = XINT (val);
240 251
241 return mirrored_pairs [(i ^ 1)]; 252 if (v < 0 || v > MAX_CHAR)
253 abort ();
254
255 return v;
242 } 256 }
257
243 return c; 258 return c;
244} 259}
245 260
diff --git a/src/bidimirror.h b/src/bidimirror.h
new file mode 100644
index 00000000000..477f983ad64
--- /dev/null
+++ b/src/bidimirror.h
@@ -0,0 +1,365 @@
1 struct {
2 int from, to;
3 } bidi_mirror[] = {
4 { 0x0028, 0x0029 },
5 { 0x0029, 0x0028 },
6 { 0x003C, 0x003E },
7 { 0x003E, 0x003C },
8 { 0x005B, 0x005D },
9 { 0x005D, 0x005B },
10 { 0x007B, 0x007D },
11 { 0x007D, 0x007B },
12 { 0x00AB, 0x00BB },
13 { 0x00BB, 0x00AB },
14 { 0x0F3A, 0x0F3B },
15 { 0x0F3B, 0x0F3A },
16 { 0x0F3C, 0x0F3D },
17 { 0x0F3D, 0x0F3C },
18 { 0x169B, 0x169C },
19 { 0x169C, 0x169B },
20 { 0x2039, 0x203A },
21 { 0x203A, 0x2039 },
22 { 0x2045, 0x2046 },
23 { 0x2046, 0x2045 },
24 { 0x207D, 0x207E },
25 { 0x207E, 0x207D },
26 { 0x208D, 0x208E },
27 { 0x208E, 0x208D },
28 { 0x2208, 0x220B },
29 { 0x2209, 0x220C },
30 { 0x220A, 0x220D },
31 { 0x220B, 0x2208 },
32 { 0x220C, 0x2209 },
33 { 0x220D, 0x220A },
34 { 0x2215, 0x29F5 },
35 { 0x223C, 0x223D },
36 { 0x223D, 0x223C },
37 { 0x2243, 0x22CD },
38 { 0x2252, 0x2253 },
39 { 0x2253, 0x2252 },
40 { 0x2254, 0x2255 },
41 { 0x2255, 0x2254 },
42 { 0x2264, 0x2265 },
43 { 0x2265, 0x2264 },
44 { 0x2266, 0x2267 },
45 { 0x2267, 0x2266 },
46 { 0x2268, 0x2269 },
47 { 0x2269, 0x2268 },
48 { 0x226A, 0x226B },
49 { 0x226B, 0x226A },
50 { 0x226E, 0x226F },
51 { 0x226F, 0x226E },
52 { 0x2270, 0x2271 },
53 { 0x2271, 0x2270 },
54 { 0x2272, 0x2273 },
55 { 0x2273, 0x2272 },
56 { 0x2274, 0x2275 },
57 { 0x2275, 0x2274 },
58 { 0x2276, 0x2277 },
59 { 0x2277, 0x2276 },
60 { 0x2278, 0x2279 },
61 { 0x2279, 0x2278 },
62 { 0x227A, 0x227B },
63 { 0x227B, 0x227A },
64 { 0x227C, 0x227D },
65 { 0x227D, 0x227C },
66 { 0x227E, 0x227F },
67 { 0x227F, 0x227E },
68 { 0x2280, 0x2281 },
69 { 0x2281, 0x2280 },
70 { 0x2282, 0x2283 },
71 { 0x2283, 0x2282 },
72 { 0x2284, 0x2285 },
73 { 0x2285, 0x2284 },
74 { 0x2286, 0x2287 },
75 { 0x2287, 0x2286 },
76 { 0x2288, 0x2289 },
77 { 0x2289, 0x2288 },
78 { 0x228A, 0x228B },
79 { 0x228B, 0x228A },
80 { 0x228F, 0x2290 },
81 { 0x2290, 0x228F },
82 { 0x2291, 0x2292 },
83 { 0x2292, 0x2291 },
84 { 0x2298, 0x29B8 },
85 { 0x22A2, 0x22A3 },
86 { 0x22A3, 0x22A2 },
87 { 0x22A6, 0x2ADE },
88 { 0x22A8, 0x2AE4 },
89 { 0x22A9, 0x2AE3 },
90 { 0x22AB, 0x2AE5 },
91 { 0x22B0, 0x22B1 },
92 { 0x22B1, 0x22B0 },
93 { 0x22B2, 0x22B3 },
94 { 0x22B3, 0x22B2 },
95 { 0x22B4, 0x22B5 },
96 { 0x22B5, 0x22B4 },
97 { 0x22B6, 0x22B7 },
98 { 0x22B7, 0x22B6 },
99 { 0x22C9, 0x22CA },
100 { 0x22CA, 0x22C9 },
101 { 0x22CB, 0x22CC },
102 { 0x22CC, 0x22CB },
103 { 0x22CD, 0x2243 },
104 { 0x22D0, 0x22D1 },
105 { 0x22D1, 0x22D0 },
106 { 0x22D6, 0x22D7 },
107 { 0x22D7, 0x22D6 },
108 { 0x22D8, 0x22D9 },
109 { 0x22D9, 0x22D8 },
110 { 0x22DA, 0x22DB },
111 { 0x22DB, 0x22DA },
112 { 0x22DC, 0x22DD },
113 { 0x22DD, 0x22DC },
114 { 0x22DE, 0x22DF },
115 { 0x22DF, 0x22DE },
116 { 0x22E0, 0x22E1 },
117 { 0x22E1, 0x22E0 },
118 { 0x22E2, 0x22E3 },
119 { 0x22E3, 0x22E2 },
120 { 0x22E4, 0x22E5 },
121 { 0x22E5, 0x22E4 },
122 { 0x22E6, 0x22E7 },
123 { 0x22E7, 0x22E6 },
124 { 0x22E8, 0x22E9 },
125 { 0x22E9, 0x22E8 },
126 { 0x22EA, 0x22EB },
127 { 0x22EB, 0x22EA },
128 { 0x22EC, 0x22ED },
129 { 0x22ED, 0x22EC },
130 { 0x22F0, 0x22F1 },
131 { 0x22F1, 0x22F0 },
132 { 0x22F2, 0x22FA },
133 { 0x22F3, 0x22FB },
134 { 0x22F4, 0x22FC },
135 { 0x22F6, 0x22FD },
136 { 0x22F7, 0x22FE },
137 { 0x22FA, 0x22F2 },
138 { 0x22FB, 0x22F3 },
139 { 0x22FC, 0x22F4 },
140 { 0x22FD, 0x22F6 },
141 { 0x22FE, 0x22F7 },
142 { 0x2308, 0x2309 },
143 { 0x2309, 0x2308 },
144 { 0x230A, 0x230B },
145 { 0x230B, 0x230A },
146 { 0x2329, 0x232A },
147 { 0x232A, 0x2329 },
148 { 0x2768, 0x2769 },
149 { 0x2769, 0x2768 },
150 { 0x276A, 0x276B },
151 { 0x276B, 0x276A },
152 { 0x276C, 0x276D },
153 { 0x276D, 0x276C },
154 { 0x276E, 0x276F },
155 { 0x276F, 0x276E },
156 { 0x2770, 0x2771 },
157 { 0x2771, 0x2770 },
158 { 0x2772, 0x2773 },
159 { 0x2773, 0x2772 },
160 { 0x2774, 0x2775 },
161 { 0x2775, 0x2774 },
162 { 0x27C3, 0x27C4 },
163 { 0x27C4, 0x27C3 },
164 { 0x27C5, 0x27C6 },
165 { 0x27C6, 0x27C5 },
166 { 0x27C8, 0x27C9 },
167 { 0x27C9, 0x27C8 },
168 { 0x27D5, 0x27D6 },
169 { 0x27D6, 0x27D5 },
170 { 0x27DD, 0x27DE },
171 { 0x27DE, 0x27DD },
172 { 0x27E2, 0x27E3 },
173 { 0x27E3, 0x27E2 },
174 { 0x27E4, 0x27E5 },
175 { 0x27E5, 0x27E4 },
176 { 0x27E6, 0x27E7 },
177 { 0x27E7, 0x27E6 },
178 { 0x27E8, 0x27E9 },
179 { 0x27E9, 0x27E8 },
180 { 0x27EA, 0x27EB },
181 { 0x27EB, 0x27EA },
182 { 0x27EC, 0x27ED },
183 { 0x27ED, 0x27EC },
184 { 0x27EE, 0x27EF },
185 { 0x27EF, 0x27EE },
186 { 0x2983, 0x2984 },
187 { 0x2984, 0x2983 },
188 { 0x2985, 0x2986 },
189 { 0x2986, 0x2985 },
190 { 0x2987, 0x2988 },
191 { 0x2988, 0x2987 },
192 { 0x2989, 0x298A },
193 { 0x298A, 0x2989 },
194 { 0x298B, 0x298C },
195 { 0x298C, 0x298B },
196 { 0x298D, 0x2990 },
197 { 0x298E, 0x298F },
198 { 0x298F, 0x298E },
199 { 0x2990, 0x298D },
200 { 0x2991, 0x2992 },
201 { 0x2992, 0x2991 },
202 { 0x2993, 0x2994 },
203 { 0x2994, 0x2993 },
204 { 0x2995, 0x2996 },
205 { 0x2996, 0x2995 },
206 { 0x2997, 0x2998 },
207 { 0x2998, 0x2997 },
208 { 0x29B8, 0x2298 },
209 { 0x29C0, 0x29C1 },
210 { 0x29C1, 0x29C0 },
211 { 0x29C4, 0x29C5 },
212 { 0x29C5, 0x29C4 },
213 { 0x29CF, 0x29D0 },
214 { 0x29D0, 0x29CF },
215 { 0x29D1, 0x29D2 },
216 { 0x29D2, 0x29D1 },
217 { 0x29D4, 0x29D5 },
218 { 0x29D5, 0x29D4 },
219 { 0x29D8, 0x29D9 },
220 { 0x29D9, 0x29D8 },
221 { 0x29DA, 0x29DB },
222 { 0x29DB, 0x29DA },
223 { 0x29F5, 0x2215 },
224 { 0x29F8, 0x29F9 },
225 { 0x29F9, 0x29F8 },
226 { 0x29FC, 0x29FD },
227 { 0x29FD, 0x29FC },
228 { 0x2A2B, 0x2A2C },
229 { 0x2A2C, 0x2A2B },
230 { 0x2A2D, 0x2A2E },
231 { 0x2A2E, 0x2A2D },
232 { 0x2A34, 0x2A35 },
233 { 0x2A35, 0x2A34 },
234 { 0x2A3C, 0x2A3D },
235 { 0x2A3D, 0x2A3C },
236 { 0x2A64, 0x2A65 },
237 { 0x2A65, 0x2A64 },
238 { 0x2A79, 0x2A7A },
239 { 0x2A7A, 0x2A79 },
240 { 0x2A7D, 0x2A7E },
241 { 0x2A7E, 0x2A7D },
242 { 0x2A7F, 0x2A80 },
243 { 0x2A80, 0x2A7F },
244 { 0x2A81, 0x2A82 },
245 { 0x2A82, 0x2A81 },
246 { 0x2A83, 0x2A84 },
247 { 0x2A84, 0x2A83 },
248 { 0x2A8B, 0x2A8C },
249 { 0x2A8C, 0x2A8B },
250 { 0x2A91, 0x2A92 },
251 { 0x2A92, 0x2A91 },
252 { 0x2A93, 0x2A94 },
253 { 0x2A94, 0x2A93 },
254 { 0x2A95, 0x2A96 },
255 { 0x2A96, 0x2A95 },
256 { 0x2A97, 0x2A98 },
257 { 0x2A98, 0x2A97 },
258 { 0x2A99, 0x2A9A },
259 { 0x2A9A, 0x2A99 },
260 { 0x2A9B, 0x2A9C },
261 { 0x2A9C, 0x2A9B },
262 { 0x2AA1, 0x2AA2 },
263 { 0x2AA2, 0x2AA1 },
264 { 0x2AA6, 0x2AA7 },
265 { 0x2AA7, 0x2AA6 },
266 { 0x2AA8, 0x2AA9 },
267 { 0x2AA9, 0x2AA8 },
268 { 0x2AAA, 0x2AAB },
269 { 0x2AAB, 0x2AAA },
270 { 0x2AAC, 0x2AAD },
271 { 0x2AAD, 0x2AAC },
272 { 0x2AAF, 0x2AB0 },
273 { 0x2AB0, 0x2AAF },
274 { 0x2AB3, 0x2AB4 },
275 { 0x2AB4, 0x2AB3 },
276 { 0x2ABB, 0x2ABC },
277 { 0x2ABC, 0x2ABB },
278 { 0x2ABD, 0x2ABE },
279 { 0x2ABE, 0x2ABD },
280 { 0x2ABF, 0x2AC0 },
281 { 0x2AC0, 0x2ABF },
282 { 0x2AC1, 0x2AC2 },
283 { 0x2AC2, 0x2AC1 },
284 { 0x2AC3, 0x2AC4 },
285 { 0x2AC4, 0x2AC3 },
286 { 0x2AC5, 0x2AC6 },
287 { 0x2AC6, 0x2AC5 },
288 { 0x2ACD, 0x2ACE },
289 { 0x2ACE, 0x2ACD },
290 { 0x2ACF, 0x2AD0 },
291 { 0x2AD0, 0x2ACF },
292 { 0x2AD1, 0x2AD2 },
293 { 0x2AD2, 0x2AD1 },
294 { 0x2AD3, 0x2AD4 },
295 { 0x2AD4, 0x2AD3 },
296 { 0x2AD5, 0x2AD6 },
297 { 0x2AD6, 0x2AD5 },
298 { 0x2ADE, 0x22A6 },
299 { 0x2AE3, 0x22A9 },
300 { 0x2AE4, 0x22A8 },
301 { 0x2AE5, 0x22AB },
302 { 0x2AEC, 0x2AED },
303 { 0x2AED, 0x2AEC },
304 { 0x2AF7, 0x2AF8 },
305 { 0x2AF8, 0x2AF7 },
306 { 0x2AF9, 0x2AFA },
307 { 0x2AFA, 0x2AF9 },
308 { 0x2E02, 0x2E03 },
309 { 0x2E03, 0x2E02 },
310 { 0x2E04, 0x2E05 },
311 { 0x2E05, 0x2E04 },
312 { 0x2E09, 0x2E0A },
313 { 0x2E0A, 0x2E09 },
314 { 0x2E0C, 0x2E0D },
315 { 0x2E0D, 0x2E0C },
316 { 0x2E1C, 0x2E1D },
317 { 0x2E1D, 0x2E1C },
318 { 0x2E20, 0x2E21 },
319 { 0x2E21, 0x2E20 },
320 { 0x2E22, 0x2E23 },
321 { 0x2E23, 0x2E22 },
322 { 0x2E24, 0x2E25 },
323 { 0x2E25, 0x2E24 },
324 { 0x2E26, 0x2E27 },
325 { 0x2E27, 0x2E26 },
326 { 0x2E28, 0x2E29 },
327 { 0x2E29, 0x2E28 },
328 { 0x3008, 0x3009 },
329 { 0x3009, 0x3008 },
330 { 0x300A, 0x300B },
331 { 0x300B, 0x300A },
332 { 0x300C, 0x300D },
333 { 0x300D, 0x300C },
334 { 0x300E, 0x300F },
335 { 0x300F, 0x300E },
336 { 0x3010, 0x3011 },
337 { 0x3011, 0x3010 },
338 { 0x3014, 0x3015 },
339 { 0x3015, 0x3014 },
340 { 0x3016, 0x3017 },
341 { 0x3017, 0x3016 },
342 { 0x3018, 0x3019 },
343 { 0x3019, 0x3018 },
344 { 0x301A, 0x301B },
345 { 0x301B, 0x301A },
346 { 0xFE59, 0xFE5A },
347 { 0xFE5A, 0xFE59 },
348 { 0xFE5B, 0xFE5C },
349 { 0xFE5C, 0xFE5B },
350 { 0xFE5D, 0xFE5E },
351 { 0xFE5E, 0xFE5D },
352 { 0xFE64, 0xFE65 },
353 { 0xFE65, 0xFE64 },
354 { 0xFF08, 0xFF09 },
355 { 0xFF09, 0xFF08 },
356 { 0xFF1C, 0xFF1E },
357 { 0xFF1E, 0xFF1C },
358 { 0xFF3B, 0xFF3D },
359 { 0xFF3D, 0xFF3B },
360 { 0xFF5B, 0xFF5D },
361 { 0xFF5D, 0xFF5B },
362 { 0xFF5F, 0xFF60 },
363 { 0xFF60, 0xFF5F },
364 { 0xFF62, 0xFF63 },
365 { 0xFF63, 0xFF62 } };
diff --git a/src/biditype.h b/src/biditype.h
new file mode 100644
index 00000000000..60fc6374f39
--- /dev/null
+++ b/src/biditype.h
@@ -0,0 +1,446 @@
1 struct {
2 int from, to;
3 bidi_type_t type;
4 } bidi_type[] = {
5 { 0x0000, 0x0008, WEAK_BN },
6 { 0x0009, 0x0009, NEUTRAL_S },
7 { 0x000A, 0x000A, NEUTRAL_B },
8 { 0x000B, 0x000B, NEUTRAL_S },
9 { 0x000C, 0x000C, NEUTRAL_WS },
10 { 0x000D, 0x000D, NEUTRAL_B },
11 { 0x000E, 0x001B, WEAK_BN },
12 { 0x001C, 0x001E, NEUTRAL_B },
13 { 0x001F, 0x001F, NEUTRAL_S },
14 { 0x0020, 0x0020, NEUTRAL_WS },
15 { 0x0021, 0x0022, NEUTRAL_ON },
16 { 0x0023, 0x0025, WEAK_ET },
17 { 0x0026, 0x002A, NEUTRAL_ON },
18 { 0x002B, 0x002B, WEAK_ES },
19 { 0x002C, 0x002C, WEAK_CS },
20 { 0x002D, 0x002D, WEAK_ES },
21 { 0x002E, 0x002F, WEAK_CS },
22 { 0x0030, 0x0039, WEAK_EN },
23 { 0x003A, 0x003A, WEAK_CS },
24 { 0x003B, 0x0040, NEUTRAL_ON },
25 { 0x005B, 0x0060, NEUTRAL_ON },
26 { 0x007B, 0x007E, NEUTRAL_ON },
27 { 0x007F, 0x0084, WEAK_BN },
28 { 0x0085, 0x0085, NEUTRAL_B },
29 { 0x0086, 0x009F, WEAK_BN },
30 { 0x00A0, 0x00A0, WEAK_CS },
31 { 0x00A1, 0x00A1, NEUTRAL_ON },
32 { 0x00A2, 0x00A5, WEAK_ET },
33 { 0x00A6, 0x00A9, NEUTRAL_ON },
34 { 0x00AB, 0x00AC, NEUTRAL_ON },
35 { 0x00AD, 0x00AD, WEAK_BN },
36 { 0x00AE, 0x00AF, NEUTRAL_ON },
37 { 0x00B0, 0x00B1, WEAK_ET },
38 { 0x00B2, 0x00B3, WEAK_EN },
39 { 0x00B4, 0x00B4, NEUTRAL_ON },
40 { 0x00B6, 0x00B8, NEUTRAL_ON },
41 { 0x00B9, 0x00B9, WEAK_EN },
42 { 0x00BB, 0x00BF, NEUTRAL_ON },
43 { 0x00D7, 0x00D7, NEUTRAL_ON },
44 { 0x00F7, 0x00F7, NEUTRAL_ON },
45 { 0x02B9, 0x02BA, NEUTRAL_ON },
46 { 0x02C2, 0x02CF, NEUTRAL_ON },
47 { 0x02D2, 0x02DF, NEUTRAL_ON },
48 { 0x02E5, 0x02ED, NEUTRAL_ON },
49 { 0x02EF, 0x02FF, NEUTRAL_ON },
50 { 0x0300, 0x036F, WEAK_NSM },
51 { 0x0374, 0x0375, NEUTRAL_ON },
52 { 0x037E, 0x0385, NEUTRAL_ON },
53 { 0x0387, 0x0387, NEUTRAL_ON },
54 { 0x03F6, 0x03F6, NEUTRAL_ON },
55 { 0x0483, 0x0489, WEAK_NSM },
56 { 0x058A, 0x058A, NEUTRAL_ON },
57 { 0x0591, 0x05BD, WEAK_NSM },
58 { 0x05BE, 0x05BE, STRONG_R },
59 { 0x05BF, 0x05BF, WEAK_NSM },
60 { 0x05C0, 0x05C0, STRONG_R },
61 { 0x05C1, 0x05C2, WEAK_NSM },
62 { 0x05C3, 0x05C3, STRONG_R },
63 { 0x05C4, 0x05C5, WEAK_NSM },
64 { 0x05C6, 0x05C6, STRONG_R },
65 { 0x05C7, 0x05C7, WEAK_NSM },
66 { 0x05D0, 0x05F4, STRONG_R },
67 { 0x0600, 0x0603, WEAK_AN },
68 { 0x0606, 0x0607, NEUTRAL_ON },
69 { 0x0608, 0x0608, STRONG_AL },
70 { 0x0609, 0x060A, WEAK_ET },
71 { 0x060B, 0x060B, STRONG_AL },
72 { 0x060C, 0x060C, WEAK_CS },
73 { 0x060D, 0x060D, STRONG_AL },
74 { 0x060E, 0x060F, NEUTRAL_ON },
75 { 0x0610, 0x061A, WEAK_NSM },
76 { 0x061B, 0x064A, STRONG_AL },
77 { 0x064B, 0x065F, WEAK_NSM },
78 { 0x0660, 0x0669, WEAK_AN },
79 { 0x066A, 0x066A, WEAK_ET },
80 { 0x066B, 0x066C, WEAK_AN },
81 { 0x066D, 0x066F, STRONG_AL },
82 { 0x0670, 0x0670, WEAK_NSM },
83 { 0x0671, 0x06D5, STRONG_AL },
84 { 0x06D6, 0x06DC, WEAK_NSM },
85 { 0x06DD, 0x06DD, WEAK_AN },
86 { 0x06DE, 0x06E4, WEAK_NSM },
87 { 0x06E5, 0x06E6, STRONG_AL },
88 { 0x06E7, 0x06E8, WEAK_NSM },
89 { 0x06E9, 0x06E9, NEUTRAL_ON },
90 { 0x06EA, 0x06ED, WEAK_NSM },
91 { 0x06EE, 0x06EF, STRONG_AL },
92 { 0x06F0, 0x06F9, WEAK_EN },
93 { 0x06FA, 0x070D, STRONG_AL },
94 { 0x070F, 0x070F, WEAK_AN },
95 { 0x0710, 0x0710, STRONG_AL },
96 { 0x0711, 0x0711, WEAK_NSM },
97 { 0x0712, 0x072F, STRONG_AL },
98 { 0x0730, 0x074A, WEAK_NSM },
99 { 0x074D, 0x07A5, STRONG_AL },
100 { 0x07A6, 0x07B0, WEAK_NSM },
101 { 0x07B1, 0x07B1, STRONG_AL },
102 { 0x07C0, 0x07EA, STRONG_R },
103 { 0x07EB, 0x07F3, WEAK_NSM },
104 { 0x07F4, 0x07F5, STRONG_R },
105 { 0x07F6, 0x07F9, NEUTRAL_ON },
106 { 0x07FA, 0x0815, STRONG_R },
107 { 0x0816, 0x0819, WEAK_NSM },
108 { 0x081A, 0x081A, STRONG_R },
109 { 0x081B, 0x0823, WEAK_NSM },
110 { 0x0824, 0x0824, STRONG_R },
111 { 0x0825, 0x0827, WEAK_NSM },
112 { 0x0828, 0x0828, STRONG_R },
113 { 0x0829, 0x082D, WEAK_NSM },
114 { 0x0830, 0x0858, STRONG_R },
115 { 0x0859, 0x085B, WEAK_NSM },
116 { 0x085E, 0x085E, STRONG_R },
117 { 0x0900, 0x0902, WEAK_NSM },
118 { 0x093A, 0x093A, WEAK_NSM },
119 { 0x093C, 0x093C, WEAK_NSM },
120 { 0x0941, 0x0948, WEAK_NSM },
121 { 0x094D, 0x094D, WEAK_NSM },
122 { 0x0951, 0x0957, WEAK_NSM },
123 { 0x0962, 0x0963, WEAK_NSM },
124 { 0x0981, 0x0981, WEAK_NSM },
125 { 0x09BC, 0x09BC, WEAK_NSM },
126 { 0x09C1, 0x09C4, WEAK_NSM },
127 { 0x09CD, 0x09CD, WEAK_NSM },
128 { 0x09E2, 0x09E3, WEAK_NSM },
129 { 0x09F2, 0x09F3, WEAK_ET },
130 { 0x09FB, 0x09FB, WEAK_ET },
131 { 0x0A01, 0x0A02, WEAK_NSM },
132 { 0x0A3C, 0x0A3C, WEAK_NSM },
133 { 0x0A41, 0x0A51, WEAK_NSM },
134 { 0x0A70, 0x0A71, WEAK_NSM },
135 { 0x0A75, 0x0A82, WEAK_NSM },
136 { 0x0ABC, 0x0ABC, WEAK_NSM },
137 { 0x0AC1, 0x0AC8, WEAK_NSM },
138 { 0x0ACD, 0x0ACD, WEAK_NSM },
139 { 0x0AE2, 0x0AE3, WEAK_NSM },
140 { 0x0AF1, 0x0AF1, WEAK_ET },
141 { 0x0B01, 0x0B01, WEAK_NSM },
142 { 0x0B3C, 0x0B3C, WEAK_NSM },
143 { 0x0B3F, 0x0B3F, WEAK_NSM },
144 { 0x0B41, 0x0B44, WEAK_NSM },
145 { 0x0B4D, 0x0B56, WEAK_NSM },
146 { 0x0B62, 0x0B63, WEAK_NSM },
147 { 0x0B82, 0x0B82, WEAK_NSM },
148 { 0x0BC0, 0x0BC0, WEAK_NSM },
149 { 0x0BCD, 0x0BCD, WEAK_NSM },
150 { 0x0BF3, 0x0BF8, NEUTRAL_ON },
151 { 0x0BF9, 0x0BF9, WEAK_ET },
152 { 0x0BFA, 0x0BFA, NEUTRAL_ON },
153 { 0x0C3E, 0x0C40, WEAK_NSM },
154 { 0x0C46, 0x0C56, WEAK_NSM },
155 { 0x0C62, 0x0C63, WEAK_NSM },
156 { 0x0C78, 0x0C7E, NEUTRAL_ON },
157 { 0x0CBC, 0x0CBC, WEAK_NSM },
158 { 0x0CCC, 0x0CCD, WEAK_NSM },
159 { 0x0CE2, 0x0CE3, WEAK_NSM },
160 { 0x0D41, 0x0D44, WEAK_NSM },
161 { 0x0D4D, 0x0D4D, WEAK_NSM },
162 { 0x0D62, 0x0D63, WEAK_NSM },
163 { 0x0DCA, 0x0DCA, WEAK_NSM },
164 { 0x0DD2, 0x0DD6, WEAK_NSM },
165 { 0x0E31, 0x0E31, WEAK_NSM },
166 { 0x0E34, 0x0E3A, WEAK_NSM },
167 { 0x0E3F, 0x0E3F, WEAK_ET },
168 { 0x0E47, 0x0E4E, WEAK_NSM },
169 { 0x0EB1, 0x0EB1, WEAK_NSM },
170 { 0x0EB4, 0x0EBC, WEAK_NSM },
171 { 0x0EC8, 0x0ECD, WEAK_NSM },
172 { 0x0F18, 0x0F19, WEAK_NSM },
173 { 0x0F35, 0x0F35, WEAK_NSM },
174 { 0x0F37, 0x0F37, WEAK_NSM },
175 { 0x0F39, 0x0F39, WEAK_NSM },
176 { 0x0F3A, 0x0F3D, NEUTRAL_ON },
177 { 0x0F71, 0x0F7E, WEAK_NSM },
178 { 0x0F80, 0x0F84, WEAK_NSM },
179 { 0x0F86, 0x0F87, WEAK_NSM },
180 { 0x0F8D, 0x0FBC, WEAK_NSM },
181 { 0x0FC6, 0x0FC6, WEAK_NSM },
182 { 0x102D, 0x1030, WEAK_NSM },
183 { 0x1032, 0x1037, WEAK_NSM },
184 { 0x1039, 0x103A, WEAK_NSM },
185 { 0x103D, 0x103E, WEAK_NSM },
186 { 0x1058, 0x1059, WEAK_NSM },
187 { 0x105E, 0x1060, WEAK_NSM },
188 { 0x1071, 0x1074, WEAK_NSM },
189 { 0x1082, 0x1082, WEAK_NSM },
190 { 0x1085, 0x1086, WEAK_NSM },
191 { 0x108D, 0x108D, WEAK_NSM },
192 { 0x109D, 0x109D, WEAK_NSM },
193 { 0x135D, 0x135F, WEAK_NSM },
194 { 0x1390, 0x1399, NEUTRAL_ON },
195 { 0x1400, 0x1400, NEUTRAL_ON },
196 { 0x1680, 0x1680, NEUTRAL_WS },
197 { 0x169B, 0x169C, NEUTRAL_ON },
198 { 0x1712, 0x1714, WEAK_NSM },
199 { 0x1732, 0x1734, WEAK_NSM },
200 { 0x1752, 0x1753, WEAK_NSM },
201 { 0x1772, 0x1773, WEAK_NSM },
202 { 0x17B7, 0x17BD, WEAK_NSM },
203 { 0x17C6, 0x17C6, WEAK_NSM },
204 { 0x17C9, 0x17D3, WEAK_NSM },
205 { 0x17DB, 0x17DB, WEAK_ET },
206 { 0x17DD, 0x17DD, WEAK_NSM },
207 { 0x17F0, 0x180A, NEUTRAL_ON },
208 { 0x180B, 0x180D, WEAK_NSM },
209 { 0x180E, 0x180E, NEUTRAL_WS },
210 { 0x18A9, 0x18A9, WEAK_NSM },
211 { 0x1920, 0x1922, WEAK_NSM },
212 { 0x1927, 0x1928, WEAK_NSM },
213 { 0x1932, 0x1932, WEAK_NSM },
214 { 0x1939, 0x193B, WEAK_NSM },
215 { 0x1940, 0x1945, NEUTRAL_ON },
216 { 0x19DE, 0x19FF, NEUTRAL_ON },
217 { 0x1A17, 0x1A18, WEAK_NSM },
218 { 0x1A56, 0x1A56, WEAK_NSM },
219 { 0x1A58, 0x1A60, WEAK_NSM },
220 { 0x1A62, 0x1A62, WEAK_NSM },
221 { 0x1A65, 0x1A6C, WEAK_NSM },
222 { 0x1A73, 0x1A7F, WEAK_NSM },
223 { 0x1B00, 0x1B03, WEAK_NSM },
224 { 0x1B34, 0x1B34, WEAK_NSM },
225 { 0x1B36, 0x1B3A, WEAK_NSM },
226 { 0x1B3C, 0x1B3C, WEAK_NSM },
227 { 0x1B42, 0x1B42, WEAK_NSM },
228 { 0x1B6B, 0x1B73, WEAK_NSM },
229 { 0x1B80, 0x1B81, WEAK_NSM },
230 { 0x1BA2, 0x1BA5, WEAK_NSM },
231 { 0x1BA8, 0x1BA9, WEAK_NSM },
232 { 0x1BE6, 0x1BE6, WEAK_NSM },
233 { 0x1BE8, 0x1BE9, WEAK_NSM },
234 { 0x1BED, 0x1BED, WEAK_NSM },
235 { 0x1BEF, 0x1BF1, WEAK_NSM },
236 { 0x1C2C, 0x1C33, WEAK_NSM },
237 { 0x1C36, 0x1C37, WEAK_NSM },
238 { 0x1CD0, 0x1CD2, WEAK_NSM },
239 { 0x1CD4, 0x1CE0, WEAK_NSM },
240 { 0x1CE2, 0x1CE8, WEAK_NSM },
241 { 0x1CED, 0x1CED, WEAK_NSM },
242 { 0x1DC0, 0x1DFF, WEAK_NSM },
243 { 0x1FBD, 0x1FBD, NEUTRAL_ON },
244 { 0x1FBF, 0x1FC1, NEUTRAL_ON },
245 { 0x1FCD, 0x1FCF, NEUTRAL_ON },
246 { 0x1FDD, 0x1FDF, NEUTRAL_ON },
247 { 0x1FED, 0x1FEF, NEUTRAL_ON },
248 { 0x1FFD, 0x1FFE, NEUTRAL_ON },
249 { 0x2000, 0x200A, NEUTRAL_WS },
250 { 0x200B, 0x200D, WEAK_BN },
251 { 0x200F, 0x200F, STRONG_R },
252 { 0x2010, 0x2027, NEUTRAL_ON },
253 { 0x2028, 0x2028, NEUTRAL_WS },
254 { 0x2029, 0x2029, NEUTRAL_B },
255 { 0x202A, 0x202A, LRE },
256 { 0x202B, 0x202B, RLE },
257 { 0x202C, 0x202C, PDF },
258 { 0x202D, 0x202D, LRO },
259 { 0x202E, 0x202E, RLO },
260 { 0x202F, 0x202F, WEAK_CS },
261 { 0x2030, 0x2034, WEAK_ET },
262 { 0x2035, 0x2043, NEUTRAL_ON },
263 { 0x2044, 0x2044, WEAK_CS },
264 { 0x2045, 0x205E, NEUTRAL_ON },
265 { 0x205F, 0x205F, NEUTRAL_WS },
266 { 0x2060, 0x206F, WEAK_BN },
267 { 0x2070, 0x2070, WEAK_EN },
268 { 0x2074, 0x2079, WEAK_EN },
269 { 0x207A, 0x207B, WEAK_ES },
270 { 0x207C, 0x207E, NEUTRAL_ON },
271 { 0x2080, 0x2089, WEAK_EN },
272 { 0x208A, 0x208B, WEAK_ES },
273 { 0x208C, 0x208E, NEUTRAL_ON },
274 { 0x20A0, 0x20B8, WEAK_ET },
275 { 0x20D0, 0x20F0, WEAK_NSM },
276 { 0x2100, 0x2101, NEUTRAL_ON },
277 { 0x2103, 0x2106, NEUTRAL_ON },
278 { 0x2108, 0x2109, NEUTRAL_ON },
279 { 0x2114, 0x2114, NEUTRAL_ON },
280 { 0x2116, 0x2118, NEUTRAL_ON },
281 { 0x211E, 0x2123, NEUTRAL_ON },
282 { 0x2125, 0x2125, NEUTRAL_ON },
283 { 0x2127, 0x2127, NEUTRAL_ON },
284 { 0x2129, 0x2129, NEUTRAL_ON },
285 { 0x212E, 0x212E, WEAK_ET },
286 { 0x213A, 0x213B, NEUTRAL_ON },
287 { 0x2140, 0x2144, NEUTRAL_ON },
288 { 0x214A, 0x214D, NEUTRAL_ON },
289 { 0x2150, 0x215F, NEUTRAL_ON },
290 { 0x2189, 0x2211, NEUTRAL_ON },
291 { 0x2212, 0x2212, WEAK_ES },
292 { 0x2213, 0x2213, WEAK_ET },
293 { 0x2214, 0x2335, NEUTRAL_ON },
294 { 0x237B, 0x2394, NEUTRAL_ON },
295 { 0x2396, 0x2487, NEUTRAL_ON },
296 { 0x2488, 0x249B, WEAK_EN },
297 { 0x24EA, 0x26AB, NEUTRAL_ON },
298 { 0x26AD, 0x27FF, NEUTRAL_ON },
299 { 0x2900, 0x2B59, NEUTRAL_ON },
300 { 0x2CE5, 0x2CEA, NEUTRAL_ON },
301 { 0x2CEF, 0x2CF1, WEAK_NSM },
302 { 0x2CF9, 0x2CFF, NEUTRAL_ON },
303 { 0x2D7F, 0x2D7F, WEAK_NSM },
304 { 0x2DE0, 0x2DFF, WEAK_NSM },
305 { 0x2E00, 0x2FFB, NEUTRAL_ON },
306 { 0x3000, 0x3000, NEUTRAL_WS },
307 { 0x3001, 0x3004, NEUTRAL_ON },
308 { 0x3008, 0x3020, NEUTRAL_ON },
309 { 0x302A, 0x302F, WEAK_NSM },
310 { 0x3030, 0x3030, NEUTRAL_ON },
311 { 0x3036, 0x3037, NEUTRAL_ON },
312 { 0x303D, 0x303F, NEUTRAL_ON },
313 { 0x3099, 0x309A, WEAK_NSM },
314 { 0x309B, 0x309C, NEUTRAL_ON },
315 { 0x30A0, 0x30A0, NEUTRAL_ON },
316 { 0x30FB, 0x30FB, NEUTRAL_ON },
317 { 0x31C0, 0x31E3, NEUTRAL_ON },
318 { 0x321D, 0x321E, NEUTRAL_ON },
319 { 0x3250, 0x325F, NEUTRAL_ON },
320 { 0x327C, 0x327E, NEUTRAL_ON },
321 { 0x32B1, 0x32BF, NEUTRAL_ON },
322 { 0x32CC, 0x32CF, NEUTRAL_ON },
323 { 0x3377, 0x337A, NEUTRAL_ON },
324 { 0x33DE, 0x33DF, NEUTRAL_ON },
325 { 0x33FF, 0x33FF, NEUTRAL_ON },
326 { 0x4DC0, 0x4DFF, NEUTRAL_ON },
327 { 0xA490, 0xA4C6, NEUTRAL_ON },
328 { 0xA60D, 0xA60F, NEUTRAL_ON },
329 { 0xA66F, 0xA672, WEAK_NSM },
330 { 0xA673, 0xA673, NEUTRAL_ON },
331 { 0xA67C, 0xA67D, WEAK_NSM },
332 { 0xA67E, 0xA67F, NEUTRAL_ON },
333 { 0xA6F0, 0xA6F1, WEAK_NSM },
334 { 0xA700, 0xA721, NEUTRAL_ON },
335 { 0xA788, 0xA788, NEUTRAL_ON },
336 { 0xA802, 0xA802, WEAK_NSM },
337 { 0xA806, 0xA806, WEAK_NSM },
338 { 0xA80B, 0xA80B, WEAK_NSM },
339 { 0xA825, 0xA826, WEAK_NSM },
340 { 0xA828, 0xA82B, NEUTRAL_ON },
341 { 0xA838, 0xA839, WEAK_ET },
342 { 0xA874, 0xA877, NEUTRAL_ON },
343 { 0xA8C4, 0xA8C4, WEAK_NSM },
344 { 0xA8E0, 0xA8F1, WEAK_NSM },
345 { 0xA926, 0xA92D, WEAK_NSM },
346 { 0xA947, 0xA951, WEAK_NSM },
347 { 0xA980, 0xA982, WEAK_NSM },
348 { 0xA9B3, 0xA9B3, WEAK_NSM },
349 { 0xA9B6, 0xA9B9, WEAK_NSM },
350 { 0xA9BC, 0xA9BC, WEAK_NSM },
351 { 0xAA29, 0xAA2E, WEAK_NSM },
352 { 0xAA31, 0xAA32, WEAK_NSM },
353 { 0xAA35, 0xAA36, WEAK_NSM },
354 { 0xAA43, 0xAA43, WEAK_NSM },
355 { 0xAA4C, 0xAA4C, WEAK_NSM },
356 { 0xAAB0, 0xAAB0, WEAK_NSM },
357 { 0xAAB2, 0xAAB4, WEAK_NSM },
358 { 0xAAB7, 0xAAB8, WEAK_NSM },
359 { 0xAABE, 0xAABF, WEAK_NSM },
360 { 0xAAC1, 0xAAC1, WEAK_NSM },
361 { 0xABE5, 0xABE5, WEAK_NSM },
362 { 0xABE8, 0xABE8, WEAK_NSM },
363 { 0xABED, 0xABED, WEAK_NSM },
364 { 0xFB1D, 0xFB1D, STRONG_R },
365 { 0xFB1E, 0xFB1E, WEAK_NSM },
366 { 0xFB1F, 0xFB28, STRONG_R },
367 { 0xFB29, 0xFB29, WEAK_ES },
368 { 0xFB2A, 0xFB4F, STRONG_R },
369 { 0xFB50, 0xFD3D, STRONG_AL },
370 { 0xFD3E, 0xFD3F, NEUTRAL_ON },
371 { 0xFD50, 0xFDFC, STRONG_AL },
372 { 0xFDFD, 0xFDFD, NEUTRAL_ON },
373 { 0xFE00, 0xFE0F, WEAK_NSM },
374 { 0xFE10, 0xFE19, NEUTRAL_ON },
375 { 0xFE20, 0xFE26, WEAK_NSM },
376 { 0xFE30, 0xFE4F, NEUTRAL_ON },
377 { 0xFE50, 0xFE50, WEAK_CS },
378 { 0xFE51, 0xFE51, NEUTRAL_ON },
379 { 0xFE52, 0xFE52, WEAK_CS },
380 { 0xFE54, 0xFE54, NEUTRAL_ON },
381 { 0xFE55, 0xFE55, WEAK_CS },
382 { 0xFE56, 0xFE5E, NEUTRAL_ON },
383 { 0xFE5F, 0xFE5F, WEAK_ET },
384 { 0xFE60, 0xFE61, NEUTRAL_ON },
385 { 0xFE62, 0xFE63, WEAK_ES },
386 { 0xFE64, 0xFE68, NEUTRAL_ON },
387 { 0xFE69, 0xFE6A, WEAK_ET },
388 { 0xFE6B, 0xFE6B, NEUTRAL_ON },
389 { 0xFE70, 0xFEFC, STRONG_AL },
390 { 0xFEFF, 0xFEFF, WEAK_BN },
391 { 0xFF01, 0xFF02, NEUTRAL_ON },
392 { 0xFF03, 0xFF05, WEAK_ET },
393 { 0xFF06, 0xFF0A, NEUTRAL_ON },
394 { 0xFF0B, 0xFF0B, WEAK_ES },
395 { 0xFF0C, 0xFF0C, WEAK_CS },
396 { 0xFF0D, 0xFF0D, WEAK_ES },
397 { 0xFF0E, 0xFF0F, WEAK_CS },
398 { 0xFF10, 0xFF19, WEAK_EN },
399 { 0xFF1A, 0xFF1A, WEAK_CS },
400 { 0xFF1B, 0xFF20, NEUTRAL_ON },
401 { 0xFF3B, 0xFF40, NEUTRAL_ON },
402 { 0xFF5B, 0xFF65, NEUTRAL_ON },
403 { 0xFFE0, 0xFFE1, WEAK_ET },
404 { 0xFFE2, 0xFFE4, NEUTRAL_ON },
405 { 0xFFE5, 0xFFE6, WEAK_ET },
406 { 0xFFE8, 0xFFFD, NEUTRAL_ON },
407 { 0x10101, 0x10101, NEUTRAL_ON },
408 { 0x10140, 0x1019B, NEUTRAL_ON },
409 { 0x101FD, 0x101FD, WEAK_NSM },
410 { 0x10800, 0x1091B, STRONG_R },
411 { 0x1091F, 0x1091F, NEUTRAL_ON },
412 { 0x10920, 0x10A00, STRONG_R },
413 { 0x10A01, 0x10A0F, WEAK_NSM },
414 { 0x10A10, 0x10A33, STRONG_R },
415 { 0x10A38, 0x10A3F, WEAK_NSM },
416 { 0x10A40, 0x10B35, STRONG_R },
417 { 0x10B39, 0x10B3F, NEUTRAL_ON },
418 { 0x10B40, 0x10C48, STRONG_R },
419 { 0x10E60, 0x10E7E, WEAK_AN },
420 { 0x11001, 0x11001, WEAK_NSM },
421 { 0x11038, 0x11046, WEAK_NSM },
422 { 0x11052, 0x11065, NEUTRAL_ON },
423 { 0x11080, 0x11081, WEAK_NSM },
424 { 0x110B3, 0x110B6, WEAK_NSM },
425 { 0x110B9, 0x110BA, WEAK_NSM },
426 { 0x1D167, 0x1D169, WEAK_NSM },
427 { 0x1D173, 0x1D17A, WEAK_BN },
428 { 0x1D17B, 0x1D182, WEAK_NSM },
429 { 0x1D185, 0x1D18B, WEAK_NSM },
430 { 0x1D1AA, 0x1D1AD, WEAK_NSM },
431 { 0x1D200, 0x1D241, NEUTRAL_ON },
432 { 0x1D242, 0x1D244, WEAK_NSM },
433 { 0x1D245, 0x1D356, NEUTRAL_ON },
434 { 0x1D6DB, 0x1D6DB, NEUTRAL_ON },
435 { 0x1D715, 0x1D715, NEUTRAL_ON },
436 { 0x1D74F, 0x1D74F, NEUTRAL_ON },
437 { 0x1D789, 0x1D789, NEUTRAL_ON },
438 { 0x1D7C3, 0x1D7C3, NEUTRAL_ON },
439 { 0x1D7CE, 0x1D7FF, WEAK_EN },
440 { 0x1F000, 0x1F0DF, NEUTRAL_ON },
441 { 0x1F100, 0x1F10A, WEAK_EN },
442 { 0x1F300, 0x1F48B, NEUTRAL_ON },
443 { 0x1F48D, 0x1F523, NEUTRAL_ON },
444 { 0x1F525, 0x1F773, NEUTRAL_ON },
445 { 0xE0001, 0xE007F, WEAK_BN },
446 { 0xE0100, 0xE01EF, WEAK_NSM } };
diff --git a/src/deps.mk b/src/deps.mk
index 1514ec5e61a..e9269397720 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -39,7 +39,8 @@
39 39
40atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \ 40atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
41 $(config_h) 41 $(config_h)
42bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h $(config_h) 42bidi.o: bidi.c buffer.h character.h dispextern.h lisp.h \
43 biditype.h bidimirror.h $(config_h)
43buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ 44buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
44 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \ 45 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h \
45 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h) 46 indent.h keyboard.h coding.h keymap.h frame.h lisp.h $(config_h)
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index 34af372dc5e..ca2bb13b972 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -344,6 +344,8 @@ $(BLD)/bidi.$(O) : \
344 $(SRC)/buffer.h \ 344 $(SRC)/buffer.h \
345 $(SRC)/character.h \ 345 $(SRC)/character.h \
346 $(SRC)/dispextern.h \ 346 $(SRC)/dispextern.h \
347 $(SRC)/biditype.h \
348 $(SRC)/bidimirror.h \
347 $(SRC)/w32gui.h 349 $(SRC)/w32gui.h
348 350
349$(BLD)/buffer.$(O) : \ 351$(BLD)/buffer.$(O) : \