aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPaul Eggert2011-08-15 12:19:54 -0700
committerPaul Eggert2011-08-15 12:19:54 -0700
commitb24809631adbdbc48a0d140b54ff98689fc6c8d8 (patch)
treed3f77d37003d2d11b9ccc63325d506c652cfb125 /src
parentc881564470ef15bf3f1908c1ee9eb4c3e92953fd (diff)
parent3ebec5517ea32d0c9d1954f0ea806b4fb256f12e (diff)
downloademacs-b24809631adbdbc48a0d140b54ff98689fc6c8d8.tar.gz
emacs-b24809631adbdbc48a0d140b54ff98689fc6c8d8.zip
Merge from trunk.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog29
-rw-r--r--src/bidi.c39
-rw-r--r--src/bidimirror.h365
-rw-r--r--src/biditype.h447
-rw-r--r--src/chartab.c25
-rw-r--r--src/deps.mk2
-rw-r--r--src/dispextern.h2
-rw-r--r--src/makefile.w32-in2
-rw-r--r--src/xdisp.c6
9 files changed, 69 insertions, 848 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 0a1d11f58f6..5954254d149 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -409,6 +409,35 @@
409 (gs_load): Use printmax_t to print the widest integers possible. 409 (gs_load): Use printmax_t to print the widest integers possible.
410 Check for integer overflow when computing image height and width. 410 Check for integer overflow when computing image height and width.
411 411
4122011-08-15 Paul Eggert <eggert@cs.ucla.edu>
413
414 * bidi.c (bidi_initialize): Remove unused local.
415
4162011-08-15 Eli Zaretskii <eliz@gnu.org>
417
418 * biditype.h: File removed.
419
420 * bidimirror.h: File removed.
421
422 * deps.mk (bidi.o): Remove biditype.h and
423 bidimirror.h.
424
425 * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and
426 bidimirror.h.
427
428 * dispextern.h: Fix a typo in the comment to bidi_type_t.
429
430 * chartab.c: Improve commentary for the uniprop_table API.
431
432 * bidi.c (bidi_paragraph_init): Support zero value of
433 bidi_ignore_explicit_marks_for_paragraph_level.
434 (bidi_initialize): Use uniprop_table instead of including
435 biditype.h and bidimirror.h.
436
437 * xdisp.c (move_it_in_display_line_to): Don't reset pixel
438 coordinates of the iterator when restoring from ppos_it.
439 (Bug#9296)
440
4122011-08-14 Kenichi Handa <handa@m17n.org> 4412011-08-14 Kenichi Handa <handa@m17n.org>
413 442
414 * process.c (create_process): Call setup_process_coding_systems 443 * process.c (create_process): Call setup_process_coding_systems
diff --git a/src/bidi.c b/src/bidi.c
index 767af02a78a..729cf7d579e 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -79,6 +79,11 @@ typedef enum {
79 STRONG 79 STRONG
80} bidi_category_t; 80} bidi_category_t;
81 81
82/* UAX#9 says to search only for L, AL, or R types of characters, and
83 ignore RLE, RLO, LRE, and LRO, when determining the base paragraph
84 level. Yudit indeed ignores them. This variable is therefore set
85 by default to ignore them, but setting it to zero will take them
86 into account. */
82extern int bidi_ignore_explicit_marks_for_paragraph_level EXTERNALLY_VISIBLE; 87extern int bidi_ignore_explicit_marks_for_paragraph_level EXTERNALLY_VISIBLE;
83int bidi_ignore_explicit_marks_for_paragraph_level = 1; 88int bidi_ignore_explicit_marks_for_paragraph_level = 1;
84 89
@@ -740,26 +745,16 @@ bidi_unshelve_cache (void *databuf, int just_free)
740static void 745static void
741bidi_initialize (void) 746bidi_initialize (void)
742{ 747{
743 748 bidi_type_table = uniprop_table (intern ("bidi-class"));
744#include "biditype.h" 749 if (NILP (bidi_type_table))
745#include "bidimirror.h" 750 abort ();
746
747 int i;
748
749 bidi_type_table = Fmake_char_table (Qnil, make_number (STRONG_L));
750 staticpro (&bidi_type_table); 751 staticpro (&bidi_type_table);
751 752
752 for (i = 0; i < sizeof bidi_type / sizeof bidi_type[0]; i++) 753 bidi_mirror_table = uniprop_table (intern ("mirroring"));
753 char_table_set_range (bidi_type_table, bidi_type[i].from, bidi_type[i].to, 754 if (NILP (bidi_mirror_table))
754 make_number (bidi_type[i].type)); 755 abort ();
755
756 bidi_mirror_table = Fmake_char_table (Qnil, Qnil);
757 staticpro (&bidi_mirror_table); 756 staticpro (&bidi_mirror_table);
758 757
759 for (i = 0; i < sizeof bidi_mirror / sizeof bidi_mirror[0]; i++)
760 char_table_set (bidi_mirror_table, bidi_mirror[i].from,
761 make_number (bidi_mirror[i].to));
762
763 Qparagraph_start = intern ("paragraph-start"); 758 Qparagraph_start = intern ("paragraph-start");
764 staticpro (&Qparagraph_start); 759 staticpro (&Qparagraph_start);
765 paragraph_start_re = Fsymbol_value (Qparagraph_start); 760 paragraph_start_re = Fsymbol_value (Qparagraph_start);
@@ -1177,10 +1172,6 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
1177 type = bidi_get_type (ch, NEUTRAL_DIR); 1172 type = bidi_get_type (ch, NEUTRAL_DIR);
1178 1173
1179 for (pos += nchars, bytepos += ch_len; 1174 for (pos += nchars, bytepos += ch_len;
1180 /* NOTE: UAX#9 says to search only for L, AL, or R types
1181 of characters, and ignore RLE, RLO, LRE, and LRO.
1182 However, I'm not sure it makes sense to omit those 4;
1183 should try with and without that to see the effect. */
1184 (bidi_get_category (type) != STRONG) 1175 (bidi_get_category (type) != STRONG)
1185 || (bidi_ignore_explicit_marks_for_paragraph_level 1176 || (bidi_ignore_explicit_marks_for_paragraph_level
1186 && (type == RLE || type == RLO 1177 && (type == RLE || type == RLO
@@ -1205,9 +1196,13 @@ bidi_paragraph_init (bidi_dir_t dir, struct bidi_it *bidi_it, int no_default_p)
1205 pos += nchars; 1196 pos += nchars;
1206 bytepos += ch_len; 1197 bytepos += ch_len;
1207 } 1198 }
1208 if (type == STRONG_R || type == STRONG_AL) /* P3 */ 1199 if ((type == STRONG_R || type == STRONG_AL) /* P3 */
1200 || (!bidi_ignore_explicit_marks_for_paragraph_level
1201 && (type == RLO || type == RLE)))
1209 bidi_it->paragraph_dir = R2L; 1202 bidi_it->paragraph_dir = R2L;
1210 else if (type == STRONG_L) 1203 else if (type == STRONG_L
1204 || (!bidi_ignore_explicit_marks_for_paragraph_level
1205 && (type == LRO || type == LRE)))
1211 bidi_it->paragraph_dir = L2R; 1206 bidi_it->paragraph_dir = L2R;
1212 if (!string_p 1207 if (!string_p
1213 && no_default_p && bidi_it->paragraph_dir == NEUTRAL_DIR) 1208 && no_default_p && bidi_it->paragraph_dir == NEUTRAL_DIR)
diff --git a/src/bidimirror.h b/src/bidimirror.h
deleted file mode 100644
index 477f983ad64..00000000000
--- a/src/bidimirror.h
+++ /dev/null
@@ -1,365 +0,0 @@
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
deleted file mode 100644
index 868aabd9ea6..00000000000
--- a/src/biditype.h
+++ /dev/null
@@ -1,447 +0,0 @@
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, 0x06DE, NEUTRAL_ON },
87 { 0x06DF, 0x06E4, WEAK_NSM },
88 { 0x06E5, 0x06E6, STRONG_AL },
89 { 0x06E7, 0x06E8, WEAK_NSM },
90 { 0x06E9, 0x06E9, NEUTRAL_ON },
91 { 0x06EA, 0x06ED, WEAK_NSM },
92 { 0x06EE, 0x06EF, STRONG_AL },
93 { 0x06F0, 0x06F9, WEAK_EN },
94 { 0x06FA, 0x070D, STRONG_AL },
95 { 0x070F, 0x070F, WEAK_AN },
96 { 0x0710, 0x0710, STRONG_AL },
97 { 0x0711, 0x0711, WEAK_NSM },
98 { 0x0712, 0x072F, STRONG_AL },
99 { 0x0730, 0x074A, WEAK_NSM },
100 { 0x074D, 0x07A5, STRONG_AL },
101 { 0x07A6, 0x07B0, WEAK_NSM },
102 { 0x07B1, 0x07B1, STRONG_AL },
103 { 0x07C0, 0x07EA, STRONG_R },
104 { 0x07EB, 0x07F3, WEAK_NSM },
105 { 0x07F4, 0x07F5, STRONG_R },
106 { 0x07F6, 0x07F9, NEUTRAL_ON },
107 { 0x07FA, 0x0815, STRONG_R },
108 { 0x0816, 0x0819, WEAK_NSM },
109 { 0x081A, 0x081A, STRONG_R },
110 { 0x081B, 0x0823, WEAK_NSM },
111 { 0x0824, 0x0824, STRONG_R },
112 { 0x0825, 0x0827, WEAK_NSM },
113 { 0x0828, 0x0828, STRONG_R },
114 { 0x0829, 0x082D, WEAK_NSM },
115 { 0x0830, 0x0858, STRONG_R },
116 { 0x0859, 0x085B, WEAK_NSM },
117 { 0x085E, 0x085E, STRONG_R },
118 { 0x0900, 0x0902, WEAK_NSM },
119 { 0x093A, 0x093A, WEAK_NSM },
120 { 0x093C, 0x093C, WEAK_NSM },
121 { 0x0941, 0x0948, WEAK_NSM },
122 { 0x094D, 0x094D, WEAK_NSM },
123 { 0x0951, 0x0957, WEAK_NSM },
124 { 0x0962, 0x0963, WEAK_NSM },
125 { 0x0981, 0x0981, WEAK_NSM },
126 { 0x09BC, 0x09BC, WEAK_NSM },
127 { 0x09C1, 0x09C4, WEAK_NSM },
128 { 0x09CD, 0x09CD, WEAK_NSM },
129 { 0x09E2, 0x09E3, WEAK_NSM },
130 { 0x09F2, 0x09F3, WEAK_ET },
131 { 0x09FB, 0x09FB, WEAK_ET },
132 { 0x0A01, 0x0A02, WEAK_NSM },
133 { 0x0A3C, 0x0A3C, WEAK_NSM },
134 { 0x0A41, 0x0A51, WEAK_NSM },
135 { 0x0A70, 0x0A71, WEAK_NSM },
136 { 0x0A75, 0x0A82, WEAK_NSM },
137 { 0x0ABC, 0x0ABC, WEAK_NSM },
138 { 0x0AC1, 0x0AC8, WEAK_NSM },
139 { 0x0ACD, 0x0ACD, WEAK_NSM },
140 { 0x0AE2, 0x0AE3, WEAK_NSM },
141 { 0x0AF1, 0x0AF1, WEAK_ET },
142 { 0x0B01, 0x0B01, WEAK_NSM },
143 { 0x0B3C, 0x0B3C, WEAK_NSM },
144 { 0x0B3F, 0x0B3F, WEAK_NSM },
145 { 0x0B41, 0x0B44, WEAK_NSM },
146 { 0x0B4D, 0x0B56, WEAK_NSM },
147 { 0x0B62, 0x0B63, WEAK_NSM },
148 { 0x0B82, 0x0B82, WEAK_NSM },
149 { 0x0BC0, 0x0BC0, WEAK_NSM },
150 { 0x0BCD, 0x0BCD, WEAK_NSM },
151 { 0x0BF3, 0x0BF8, NEUTRAL_ON },
152 { 0x0BF9, 0x0BF9, WEAK_ET },
153 { 0x0BFA, 0x0BFA, NEUTRAL_ON },
154 { 0x0C3E, 0x0C40, WEAK_NSM },
155 { 0x0C46, 0x0C56, WEAK_NSM },
156 { 0x0C62, 0x0C63, WEAK_NSM },
157 { 0x0C78, 0x0C7E, NEUTRAL_ON },
158 { 0x0CBC, 0x0CBC, WEAK_NSM },
159 { 0x0CCC, 0x0CCD, WEAK_NSM },
160 { 0x0CE2, 0x0CE3, WEAK_NSM },
161 { 0x0D41, 0x0D44, WEAK_NSM },
162 { 0x0D4D, 0x0D4D, WEAK_NSM },
163 { 0x0D62, 0x0D63, WEAK_NSM },
164 { 0x0DCA, 0x0DCA, WEAK_NSM },
165 { 0x0DD2, 0x0DD6, WEAK_NSM },
166 { 0x0E31, 0x0E31, WEAK_NSM },
167 { 0x0E34, 0x0E3A, WEAK_NSM },
168 { 0x0E3F, 0x0E3F, WEAK_ET },
169 { 0x0E47, 0x0E4E, WEAK_NSM },
170 { 0x0EB1, 0x0EB1, WEAK_NSM },
171 { 0x0EB4, 0x0EBC, WEAK_NSM },
172 { 0x0EC8, 0x0ECD, WEAK_NSM },
173 { 0x0F18, 0x0F19, WEAK_NSM },
174 { 0x0F35, 0x0F35, WEAK_NSM },
175 { 0x0F37, 0x0F37, WEAK_NSM },
176 { 0x0F39, 0x0F39, WEAK_NSM },
177 { 0x0F3A, 0x0F3D, NEUTRAL_ON },
178 { 0x0F71, 0x0F7E, WEAK_NSM },
179 { 0x0F80, 0x0F84, WEAK_NSM },
180 { 0x0F86, 0x0F87, WEAK_NSM },
181 { 0x0F8D, 0x0FBC, WEAK_NSM },
182 { 0x0FC6, 0x0FC6, WEAK_NSM },
183 { 0x102D, 0x1030, WEAK_NSM },
184 { 0x1032, 0x1037, WEAK_NSM },
185 { 0x1039, 0x103A, WEAK_NSM },
186 { 0x103D, 0x103E, WEAK_NSM },
187 { 0x1058, 0x1059, WEAK_NSM },
188 { 0x105E, 0x1060, WEAK_NSM },
189 { 0x1071, 0x1074, WEAK_NSM },
190 { 0x1082, 0x1082, WEAK_NSM },
191 { 0x1085, 0x1086, WEAK_NSM },
192 { 0x108D, 0x108D, WEAK_NSM },
193 { 0x109D, 0x109D, WEAK_NSM },
194 { 0x135D, 0x135F, WEAK_NSM },
195 { 0x1390, 0x1399, NEUTRAL_ON },
196 { 0x1400, 0x1400, NEUTRAL_ON },
197 { 0x1680, 0x1680, NEUTRAL_WS },
198 { 0x169B, 0x169C, NEUTRAL_ON },
199 { 0x1712, 0x1714, WEAK_NSM },
200 { 0x1732, 0x1734, WEAK_NSM },
201 { 0x1752, 0x1753, WEAK_NSM },
202 { 0x1772, 0x1773, WEAK_NSM },
203 { 0x17B7, 0x17BD, WEAK_NSM },
204 { 0x17C6, 0x17C6, WEAK_NSM },
205 { 0x17C9, 0x17D3, WEAK_NSM },
206 { 0x17DB, 0x17DB, WEAK_ET },
207 { 0x17DD, 0x17DD, WEAK_NSM },
208 { 0x17F0, 0x180A, NEUTRAL_ON },
209 { 0x180B, 0x180D, WEAK_NSM },
210 { 0x180E, 0x180E, NEUTRAL_WS },
211 { 0x18A9, 0x18A9, WEAK_NSM },
212 { 0x1920, 0x1922, WEAK_NSM },
213 { 0x1927, 0x1928, WEAK_NSM },
214 { 0x1932, 0x1932, WEAK_NSM },
215 { 0x1939, 0x193B, WEAK_NSM },
216 { 0x1940, 0x1945, NEUTRAL_ON },
217 { 0x19DE, 0x19FF, NEUTRAL_ON },
218 { 0x1A17, 0x1A18, WEAK_NSM },
219 { 0x1A56, 0x1A56, WEAK_NSM },
220 { 0x1A58, 0x1A60, WEAK_NSM },
221 { 0x1A62, 0x1A62, WEAK_NSM },
222 { 0x1A65, 0x1A6C, WEAK_NSM },
223 { 0x1A73, 0x1A7F, WEAK_NSM },
224 { 0x1B00, 0x1B03, WEAK_NSM },
225 { 0x1B34, 0x1B34, WEAK_NSM },
226 { 0x1B36, 0x1B3A, WEAK_NSM },
227 { 0x1B3C, 0x1B3C, WEAK_NSM },
228 { 0x1B42, 0x1B42, WEAK_NSM },
229 { 0x1B6B, 0x1B73, WEAK_NSM },
230 { 0x1B80, 0x1B81, WEAK_NSM },
231 { 0x1BA2, 0x1BA5, WEAK_NSM },
232 { 0x1BA8, 0x1BA9, WEAK_NSM },
233 { 0x1BE6, 0x1BE6, WEAK_NSM },
234 { 0x1BE8, 0x1BE9, WEAK_NSM },
235 { 0x1BED, 0x1BED, WEAK_NSM },
236 { 0x1BEF, 0x1BF1, WEAK_NSM },
237 { 0x1C2C, 0x1C33, WEAK_NSM },
238 { 0x1C36, 0x1C37, WEAK_NSM },
239 { 0x1CD0, 0x1CD2, WEAK_NSM },
240 { 0x1CD4, 0x1CE0, WEAK_NSM },
241 { 0x1CE2, 0x1CE8, WEAK_NSM },
242 { 0x1CED, 0x1CED, WEAK_NSM },
243 { 0x1DC0, 0x1DFF, WEAK_NSM },
244 { 0x1FBD, 0x1FBD, NEUTRAL_ON },
245 { 0x1FBF, 0x1FC1, NEUTRAL_ON },
246 { 0x1FCD, 0x1FCF, NEUTRAL_ON },
247 { 0x1FDD, 0x1FDF, NEUTRAL_ON },
248 { 0x1FED, 0x1FEF, NEUTRAL_ON },
249 { 0x1FFD, 0x1FFE, NEUTRAL_ON },
250 { 0x2000, 0x200A, NEUTRAL_WS },
251 { 0x200B, 0x200D, WEAK_BN },
252 { 0x200F, 0x200F, STRONG_R },
253 { 0x2010, 0x2027, NEUTRAL_ON },
254 { 0x2028, 0x2028, NEUTRAL_WS },
255 { 0x2029, 0x2029, NEUTRAL_B },
256 { 0x202A, 0x202A, LRE },
257 { 0x202B, 0x202B, RLE },
258 { 0x202C, 0x202C, PDF },
259 { 0x202D, 0x202D, LRO },
260 { 0x202E, 0x202E, RLO },
261 { 0x202F, 0x202F, WEAK_CS },
262 { 0x2030, 0x2034, WEAK_ET },
263 { 0x2035, 0x2043, NEUTRAL_ON },
264 { 0x2044, 0x2044, WEAK_CS },
265 { 0x2045, 0x205E, NEUTRAL_ON },
266 { 0x205F, 0x205F, NEUTRAL_WS },
267 { 0x2060, 0x206F, WEAK_BN },
268 { 0x2070, 0x2070, WEAK_EN },
269 { 0x2074, 0x2079, WEAK_EN },
270 { 0x207A, 0x207B, WEAK_ES },
271 { 0x207C, 0x207E, NEUTRAL_ON },
272 { 0x2080, 0x2089, WEAK_EN },
273 { 0x208A, 0x208B, WEAK_ES },
274 { 0x208C, 0x208E, NEUTRAL_ON },
275 { 0x20A0, 0x20B9, WEAK_ET },
276 { 0x20D0, 0x20F0, WEAK_NSM },
277 { 0x2100, 0x2101, NEUTRAL_ON },
278 { 0x2103, 0x2106, NEUTRAL_ON },
279 { 0x2108, 0x2109, NEUTRAL_ON },
280 { 0x2114, 0x2114, NEUTRAL_ON },
281 { 0x2116, 0x2118, NEUTRAL_ON },
282 { 0x211E, 0x2123, NEUTRAL_ON },
283 { 0x2125, 0x2125, NEUTRAL_ON },
284 { 0x2127, 0x2127, NEUTRAL_ON },
285 { 0x2129, 0x2129, NEUTRAL_ON },
286 { 0x212E, 0x212E, WEAK_ET },
287 { 0x213A, 0x213B, NEUTRAL_ON },
288 { 0x2140, 0x2144, NEUTRAL_ON },
289 { 0x214A, 0x214D, NEUTRAL_ON },
290 { 0x2150, 0x215F, NEUTRAL_ON },
291 { 0x2189, 0x2211, NEUTRAL_ON },
292 { 0x2212, 0x2212, WEAK_ES },
293 { 0x2213, 0x2213, WEAK_ET },
294 { 0x2214, 0x2335, NEUTRAL_ON },
295 { 0x237B, 0x2394, NEUTRAL_ON },
296 { 0x2396, 0x2487, NEUTRAL_ON },
297 { 0x2488, 0x249B, WEAK_EN },
298 { 0x24EA, 0x26AB, NEUTRAL_ON },
299 { 0x26AD, 0x27FF, NEUTRAL_ON },
300 { 0x2900, 0x2B59, NEUTRAL_ON },
301 { 0x2CE5, 0x2CEA, NEUTRAL_ON },
302 { 0x2CEF, 0x2CF1, WEAK_NSM },
303 { 0x2CF9, 0x2CFF, NEUTRAL_ON },
304 { 0x2D7F, 0x2D7F, WEAK_NSM },
305 { 0x2DE0, 0x2DFF, WEAK_NSM },
306 { 0x2E00, 0x2FFB, NEUTRAL_ON },
307 { 0x3000, 0x3000, NEUTRAL_WS },
308 { 0x3001, 0x3004, NEUTRAL_ON },
309 { 0x3008, 0x3020, NEUTRAL_ON },
310 { 0x302A, 0x302F, WEAK_NSM },
311 { 0x3030, 0x3030, NEUTRAL_ON },
312 { 0x3036, 0x3037, NEUTRAL_ON },
313 { 0x303D, 0x303F, NEUTRAL_ON },
314 { 0x3099, 0x309A, WEAK_NSM },
315 { 0x309B, 0x309C, NEUTRAL_ON },
316 { 0x30A0, 0x30A0, NEUTRAL_ON },
317 { 0x30FB, 0x30FB, NEUTRAL_ON },
318 { 0x31C0, 0x31E3, NEUTRAL_ON },
319 { 0x321D, 0x321E, NEUTRAL_ON },
320 { 0x3250, 0x325F, NEUTRAL_ON },
321 { 0x327C, 0x327E, NEUTRAL_ON },
322 { 0x32B1, 0x32BF, NEUTRAL_ON },
323 { 0x32CC, 0x32CF, NEUTRAL_ON },
324 { 0x3377, 0x337A, NEUTRAL_ON },
325 { 0x33DE, 0x33DF, NEUTRAL_ON },
326 { 0x33FF, 0x33FF, NEUTRAL_ON },
327 { 0x4DC0, 0x4DFF, NEUTRAL_ON },
328 { 0xA490, 0xA4C6, NEUTRAL_ON },
329 { 0xA60D, 0xA60F, NEUTRAL_ON },
330 { 0xA66F, 0xA672, WEAK_NSM },
331 { 0xA673, 0xA673, NEUTRAL_ON },
332 { 0xA67C, 0xA67D, WEAK_NSM },
333 { 0xA67E, 0xA67F, NEUTRAL_ON },
334 { 0xA6F0, 0xA6F1, WEAK_NSM },
335 { 0xA700, 0xA721, NEUTRAL_ON },
336 { 0xA788, 0xA788, NEUTRAL_ON },
337 { 0xA802, 0xA802, WEAK_NSM },
338 { 0xA806, 0xA806, WEAK_NSM },
339 { 0xA80B, 0xA80B, WEAK_NSM },
340 { 0xA825, 0xA826, WEAK_NSM },
341 { 0xA828, 0xA82B, NEUTRAL_ON },
342 { 0xA838, 0xA839, WEAK_ET },
343 { 0xA874, 0xA877, NEUTRAL_ON },
344 { 0xA8C4, 0xA8C4, WEAK_NSM },
345 { 0xA8E0, 0xA8F1, WEAK_NSM },
346 { 0xA926, 0xA92D, WEAK_NSM },
347 { 0xA947, 0xA951, WEAK_NSM },
348 { 0xA980, 0xA982, WEAK_NSM },
349 { 0xA9B3, 0xA9B3, WEAK_NSM },
350 { 0xA9B6, 0xA9B9, WEAK_NSM },
351 { 0xA9BC, 0xA9BC, WEAK_NSM },
352 { 0xAA29, 0xAA2E, WEAK_NSM },
353 { 0xAA31, 0xAA32, WEAK_NSM },
354 { 0xAA35, 0xAA36, WEAK_NSM },
355 { 0xAA43, 0xAA43, WEAK_NSM },
356 { 0xAA4C, 0xAA4C, WEAK_NSM },
357 { 0xAAB0, 0xAAB0, WEAK_NSM },
358 { 0xAAB2, 0xAAB4, WEAK_NSM },
359 { 0xAAB7, 0xAAB8, WEAK_NSM },
360 { 0xAABE, 0xAABF, WEAK_NSM },
361 { 0xAAC1, 0xAAC1, WEAK_NSM },
362 { 0xABE5, 0xABE5, WEAK_NSM },
363 { 0xABE8, 0xABE8, WEAK_NSM },
364 { 0xABED, 0xABED, WEAK_NSM },
365 { 0xFB1D, 0xFB1D, STRONG_R },
366 { 0xFB1E, 0xFB1E, WEAK_NSM },
367 { 0xFB1F, 0xFB28, STRONG_R },
368 { 0xFB29, 0xFB29, WEAK_ES },
369 { 0xFB2A, 0xFB4F, STRONG_R },
370 { 0xFB50, 0xFD3D, STRONG_AL },
371 { 0xFD3E, 0xFD3F, NEUTRAL_ON },
372 { 0xFD50, 0xFDFC, STRONG_AL },
373 { 0xFDFD, 0xFDFD, NEUTRAL_ON },
374 { 0xFE00, 0xFE0F, WEAK_NSM },
375 { 0xFE10, 0xFE19, NEUTRAL_ON },
376 { 0xFE20, 0xFE26, WEAK_NSM },
377 { 0xFE30, 0xFE4F, NEUTRAL_ON },
378 { 0xFE50, 0xFE50, WEAK_CS },
379 { 0xFE51, 0xFE51, NEUTRAL_ON },
380 { 0xFE52, 0xFE52, WEAK_CS },
381 { 0xFE54, 0xFE54, NEUTRAL_ON },
382 { 0xFE55, 0xFE55, WEAK_CS },
383 { 0xFE56, 0xFE5E, NEUTRAL_ON },
384 { 0xFE5F, 0xFE5F, WEAK_ET },
385 { 0xFE60, 0xFE61, NEUTRAL_ON },
386 { 0xFE62, 0xFE63, WEAK_ES },
387 { 0xFE64, 0xFE68, NEUTRAL_ON },
388 { 0xFE69, 0xFE6A, WEAK_ET },
389 { 0xFE6B, 0xFE6B, NEUTRAL_ON },
390 { 0xFE70, 0xFEFC, STRONG_AL },
391 { 0xFEFF, 0xFEFF, WEAK_BN },
392 { 0xFF01, 0xFF02, NEUTRAL_ON },
393 { 0xFF03, 0xFF05, WEAK_ET },
394 { 0xFF06, 0xFF0A, NEUTRAL_ON },
395 { 0xFF0B, 0xFF0B, WEAK_ES },
396 { 0xFF0C, 0xFF0C, WEAK_CS },
397 { 0xFF0D, 0xFF0D, WEAK_ES },
398 { 0xFF0E, 0xFF0F, WEAK_CS },
399 { 0xFF10, 0xFF19, WEAK_EN },
400 { 0xFF1A, 0xFF1A, WEAK_CS },
401 { 0xFF1B, 0xFF20, NEUTRAL_ON },
402 { 0xFF3B, 0xFF40, NEUTRAL_ON },
403 { 0xFF5B, 0xFF65, NEUTRAL_ON },
404 { 0xFFE0, 0xFFE1, WEAK_ET },
405 { 0xFFE2, 0xFFE4, NEUTRAL_ON },
406 { 0xFFE5, 0xFFE6, WEAK_ET },
407 { 0xFFE8, 0xFFFD, NEUTRAL_ON },
408 { 0x10101, 0x10101, NEUTRAL_ON },
409 { 0x10140, 0x1019B, NEUTRAL_ON },
410 { 0x101FD, 0x101FD, WEAK_NSM },
411 { 0x10800, 0x1091B, STRONG_R },
412 { 0x1091F, 0x1091F, NEUTRAL_ON },
413 { 0x10920, 0x10A00, STRONG_R },
414 { 0x10A01, 0x10A0F, WEAK_NSM },
415 { 0x10A10, 0x10A33, STRONG_R },
416 { 0x10A38, 0x10A3F, WEAK_NSM },
417 { 0x10A40, 0x10B35, STRONG_R },
418 { 0x10B39, 0x10B3F, NEUTRAL_ON },
419 { 0x10B40, 0x10C48, STRONG_R },
420 { 0x10E60, 0x10E7E, WEAK_AN },
421 { 0x11001, 0x11001, WEAK_NSM },
422 { 0x11038, 0x11046, WEAK_NSM },
423 { 0x11052, 0x11065, NEUTRAL_ON },
424 { 0x11080, 0x11081, WEAK_NSM },
425 { 0x110B3, 0x110B6, WEAK_NSM },
426 { 0x110B9, 0x110BA, WEAK_NSM },
427 { 0x1D167, 0x1D169, WEAK_NSM },
428 { 0x1D173, 0x1D17A, WEAK_BN },
429 { 0x1D17B, 0x1D182, WEAK_NSM },
430 { 0x1D185, 0x1D18B, WEAK_NSM },
431 { 0x1D1AA, 0x1D1AD, WEAK_NSM },
432 { 0x1D200, 0x1D241, NEUTRAL_ON },
433 { 0x1D242, 0x1D244, WEAK_NSM },
434 { 0x1D245, 0x1D356, NEUTRAL_ON },
435 { 0x1D6DB, 0x1D6DB, NEUTRAL_ON },
436 { 0x1D715, 0x1D715, NEUTRAL_ON },
437 { 0x1D74F, 0x1D74F, NEUTRAL_ON },
438 { 0x1D789, 0x1D789, NEUTRAL_ON },
439 { 0x1D7C3, 0x1D7C3, NEUTRAL_ON },
440 { 0x1D7CE, 0x1D7FF, WEAK_EN },
441 { 0x1F000, 0x1F0DF, NEUTRAL_ON },
442 { 0x1F100, 0x1F10A, WEAK_EN },
443 { 0x1F300, 0x1F48B, NEUTRAL_ON },
444 { 0x1F48D, 0x1F523, NEUTRAL_ON },
445 { 0x1F525, 0x1F773, NEUTRAL_ON },
446 { 0xE0001, 0xE007F, WEAK_BN },
447 { 0xE0100, 0xE01EF, WEAK_NSM } };
diff --git a/src/chartab.c b/src/chartab.c
index fb72004356e..0cabaac4cf5 100644
--- a/src/chartab.c
+++ b/src/chartab.c
@@ -1095,22 +1095,31 @@ map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object),
1095 1095
1096/* Unicode character property tables. 1096/* Unicode character property tables.
1097 1097
1098 This section provides a convenient and efficient way to get a 1098 This section provides a convenient and efficient way to get Unicode
1099 Unicode character property from C code (from Lisp, you must use 1099 character properties of characters from C code (from Lisp, you must
1100 get-char-code-property). 1100 use get-char-code-property).
1101 1101
1102 The typical usage is to get a char-table for a specific property at 1102 The typical usage is to get a char-table object for a specific
1103 a proper initialization time as this: 1103 property like this (use of the "bidi-class" property below is just
1104 an example):
1104 1105
1105 Lisp_Object bidi_class_table = uniprop_table (intern ("bidi-class")); 1106 Lisp_Object bidi_class_table = uniprop_table (intern ("bidi-class"));
1106 1107
1107 and get a property value for character CH as this: 1108 (uniprop_table can return nil if it fails to find data for the
1109 named property, or if it fails to load the appropriate Lisp support
1110 file, so the return value should be tested to be non-nil, before it
1111 is used.)
1108 1112
1109 Lisp_Object bidi_class = CHAR_TABLE_REF (CH, bidi_class_table); 1113 To get a property value for character CH use CHAR_TABLE_REF:
1114
1115 Lisp_Object bidi_class = CHAR_TABLE_REF (bidi_class_table, CH);
1110 1116
1111 In this case, what you actually get is an index number to the 1117 In this case, what you actually get is an index number to the
1112 vector of property values (symbols nil, L, R, etc). 1118 vector of property values (symbols nil, L, R, etc).
1113 1119
1120 The full list of Unicode character properties supported by Emacs is
1121 documented in the ELisp manual, in the node "Character Properties".
1122
1114 A table for Unicode character property has these characteristics: 1123 A table for Unicode character property has these characteristics:
1115 1124
1116 o The purpose is `char-code-property-table', which implies that the 1125 o The purpose is `char-code-property-table', which implies that the
@@ -1122,7 +1131,7 @@ map_char_table_for_charset (void (*c_function) (Lisp_Object, Lisp_Object),
1122 means that we don't have to decode values. 1131 means that we don't have to decode values.
1123 1132
1124 o The third extra slot is a Lisp function, an index (integer) to 1133 o The third extra slot is a Lisp function, an index (integer) to
1125 the array uniprop_enncoder[], or nil. If it is a Lisp function, we 1134 the array uniprop_encoder[], or nil. If it is a Lisp function, we
1126 can't use such a table from C (at the moment). If it is nil, it 1135 can't use such a table from C (at the moment). If it is nil, it
1127 means that we don't have to encode values. */ 1136 means that we don't have to encode values. */
1128 1137
diff --git a/src/deps.mk b/src/deps.mk
index 080144ae1e5..c61b01a95c4 100644
--- a/src/deps.mk
+++ b/src/deps.mk
@@ -39,7 +39,7 @@
39atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \ 39atimer.o: atimer.c atimer.h syssignal.h systime.h lisp.h blockinput.h \
40 globals.h ../lib/unistd.h $(config_h) 40 globals.h ../lib/unistd.h $(config_h)
41bidi.o: bidi.c buffer.h character.h dispextern.h msdos.h lisp.h \ 41bidi.o: bidi.c buffer.h character.h dispextern.h msdos.h lisp.h \
42 biditype.h bidimirror.h globals.h $(config_h) 42 globals.h $(config_h)
43buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \ 43buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
44 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h ../lib/unistd.h \ 44 $(INTERVALS_H) blockinput.h atimer.h systime.h character.h ../lib/unistd.h \
45 indent.h keyboard.h coding.h keymap.h frame.h lisp.h globals.h $(config_h) 45 indent.h keyboard.h coding.h keymap.h frame.h lisp.h globals.h $(config_h)
diff --git a/src/dispextern.h b/src/dispextern.h
index 83c3ba713b6..14f2b3ac631 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1777,7 +1777,7 @@ extern int face_change_count;
1777 3 bits for it, so we cannot use there values larger than 7. 1777 3 bits for it, so we cannot use there values larger than 7.
1778 1778
1779 The order of members must be in sync with the 8th element of the 1779 The order of members must be in sync with the 8th element of the
1780 member of unidata-prop-alist (in admin/unidata/unidata-getn.el) for 1780 member of unidata-prop-alist (in admin/unidata/unidata-gen.el) for
1781 Unicode character property `bidi-class'. */ 1781 Unicode character property `bidi-class'. */
1782typedef enum { 1782typedef enum {
1783 UNKNOWN_BT = 0, 1783 UNKNOWN_BT = 0,
diff --git a/src/makefile.w32-in b/src/makefile.w32-in
index fd29dec9096..792b66b0e4f 100644
--- a/src/makefile.w32-in
+++ b/src/makefile.w32-in
@@ -493,8 +493,6 @@ $(BLD)/atimer.$(O) : \
493 493
494$(BLD)/bidi.$(O) : \ 494$(BLD)/bidi.$(O) : \
495 $(SRC)/bidi.c \ 495 $(SRC)/bidi.c \
496 $(SRC)/bidimirror.h \
497 $(SRC)/biditype.h \
498 $(SRC)/buffer.h \ 496 $(SRC)/buffer.h \
499 $(CHARACTER_H) \ 497 $(CHARACTER_H) \
500 $(CONFIG_H) \ 498 $(CONFIG_H) \
diff --git a/src/xdisp.c b/src/xdisp.c
index 124c3179a18..5cbdee41009 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -8090,7 +8090,8 @@ move_it_in_display_line_to (struct it *it,
8090 { 8090 {
8091 if (!at_eob_p && IT_CHARPOS (ppos_it) < ZV) 8091 if (!at_eob_p && IT_CHARPOS (ppos_it) < ZV)
8092 RESTORE_IT (it, &ppos_it, ppos_data); 8092 RESTORE_IT (it, &ppos_it, ppos_data);
8093 goto buffer_pos_reached; 8093 result = MOVE_POS_MATCH_OR_ZV;
8094 break;
8094 } 8095 }
8095 if (ITERATOR_AT_END_OF_LINE_P (it)) 8096 if (ITERATOR_AT_END_OF_LINE_P (it))
8096 { 8097 {
@@ -8104,7 +8105,8 @@ move_it_in_display_line_to (struct it *it,
8104 { 8105 {
8105 if (IT_CHARPOS (ppos_it) < ZV) 8106 if (IT_CHARPOS (ppos_it) < ZV)
8106 RESTORE_IT (it, &ppos_it, ppos_data); 8107 RESTORE_IT (it, &ppos_it, ppos_data);
8107 goto buffer_pos_reached; 8108 result = MOVE_POS_MATCH_OR_ZV;
8109 break;
8108 } 8110 }
8109 result = MOVE_LINE_TRUNCATED; 8111 result = MOVE_LINE_TRUNCATED;
8110 break; 8112 break;