aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Zaretskii2011-08-15 20:47:25 +0300
committerEli Zaretskii2011-08-15 20:47:25 +0300
commit474a84653b4aa5a10b49af751c3008a4c582422c (patch)
tree352c73a638573275b43ddd941bad2c6e6c7e9d9b
parent934eacb93d0b8340a3a8b478deaa6110a3de083f (diff)
downloademacs-474a84653b4aa5a10b49af751c3008a4c582422c.tar.gz
emacs-474a84653b4aa5a10b49af751c3008a4c582422c.zip
Use uniprop tables instead of biditype.h and bidimirror.h.
src/bidi.c (bidi_initialize): Use uniprop_table instead of including biditype.h and bidimirror.h. src/biditype.h: File removed. src/bidimirror.h: File removed. src/deps.mk (bidi.o): Remove biditype.h and bidimirror.h. src/makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and bidimirror.h. src/dispextern.h: Fix a typo in the comment to bidi_type_t. src/chartab.c: Improve commentary for the uniprop_table API. admin/unidata/bidimirror.awk: File removed. admin/unidata/biditype.awk: File removed. admin/unidata/makefile.w32-in (all): Remove src/biditype.h and src/bidimirror.h. (../../src/biditype.h, ../../src/bidimirror.h): Deleted. admin/unidata/Makefile.in (all): Remove src/biditype.h and src/bidimirror.h. (../../src/biditype.h, ../../src/bidimirror.h): Deleted.
-rw-r--r--admin/ChangeLog14
-rw-r--r--admin/unidata/Makefile.in8
-rw-r--r--admin/unidata/bidimirror.awk37
-rw-r--r--admin/unidata/biditype.awk93
-rw-r--r--admin/unidata/makefile.w32-in12
-rw-r--r--src/ChangeLog16
-rw-r--r--src/bidi.c20
-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
13 files changed, 57 insertions, 986 deletions
diff --git a/admin/ChangeLog b/admin/ChangeLog
index dbbe38ce617..bc38edfc8d4 100644
--- a/admin/ChangeLog
+++ b/admin/ChangeLog
@@ -1,3 +1,17 @@
12011-08-15 Eli Zaretskii <eliz@gnu.org>
2
3 * unidata/bidimirror.awk: File removed.
4
5 * unidata/biditype.awk: File removed.
6
7 * unidata/makefile.w32-in (all): Remove src/biditype.h and
8 src/bidimirror.h.
9 (../../src/biditype.h, ../../src/bidimirror.h): Deleted.
10
11 * unidata/Makefile.in (all): Remove src/biditype.h and
12 src/bidimirror.h.
13 (../../src/biditype.h, ../../src/bidimirror.h): Deleted.
14
12011-07-07 Juanma Barranquero <lekktu@gmail.com> 152011-07-07 Juanma Barranquero <lekktu@gmail.com>
2 16
3 * unidata/makefile.w32-in (charprop-SH, charprop-CMD): 17 * unidata/makefile.w32-in (charprop-SH, charprop-CMD):
diff --git a/admin/unidata/Makefile.in b/admin/unidata/Makefile.in
index e1fe247631f..c890dad8903 100644
--- a/admin/unidata/Makefile.in
+++ b/admin/unidata/Makefile.in
@@ -23,7 +23,7 @@ EMACS = ../../src/emacs
23DSTDIR = ../../lisp/international 23DSTDIR = ../../lisp/international
24RUNEMACS = ${EMACS} -Q -batch 24RUNEMACS = ${EMACS} -Q -batch
25 25
26all: ${DSTDIR}/charprop.el ../../src/biditype.h ../../src/bidimirror.h 26all: ${DSTDIR}/charprop.el
27 27
28.el.elc: 28.el.elc:
29 ${RUNEMACS} -batch -f batch-byte-compile $< 29 ${RUNEMACS} -batch -f batch-byte-compile $<
@@ -38,12 +38,6 @@ ${DSTDIR}/charprop.el: unidata-gen.elc unidata.txt
38 cd ${DSTDIR}; \ 38 cd ${DSTDIR}; \
39 ${RUNEMACS} -batch --load $${ELC} -f unidata-gen-files $${DATADIR} $${DATA} 39 ${RUNEMACS} -batch --load $${ELC} -f unidata-gen-files $${DATADIR} $${DATA}
40 40
41../../src/biditype.h: UnicodeData.txt
42 gawk -F";" -f biditype.awk $< > $@
43
44../../src/bidimirror.h: BidiMirroring.txt
45 gawk -F"[; ]+" -f bidimirror.awk $< > $@
46
47install: charprop.el 41install: charprop.el
48 cp charprop.el ${DSTDIR} 42 cp charprop.el ${DSTDIR}
49 cp `sed -n 's/^;; FILE: //p' < charprop.el` ${DSTDIR} 43 cp `sed -n 's/^;; FILE: //p' < charprop.el` ${DSTDIR}
diff --git a/admin/unidata/bidimirror.awk b/admin/unidata/bidimirror.awk
deleted file mode 100644
index fc3e8afaace..00000000000
--- a/admin/unidata/bidimirror.awk
+++ /dev/null
@@ -1,37 +0,0 @@
1# Generate data for bidi_mirroring_table, see src/bidi.c:bidi_initialize.
2
3# Copyright (C) 2010-2011 Free Software Foundation, Inc.
4
5# This file is part of GNU Emacs.
6
7# GNU Emacs is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
19
20# Written by Eli Zaretskii <eliz@gnu.org>
21
22BEGIN {
23 printf " struct {\n int from, to;\n } bidi_mirror[] = {\n";
24 first = 1;
25 }
26
27$1 !~ /^#/ && NF >= 2 {
28 if (!first)
29 printf ",\n";
30 else
31 first = 0;
32 printf "\t{ 0x%s, 0x%s }", $1, $2;
33 }
34
35END {
36 printf " };\n";
37 }
diff --git a/admin/unidata/biditype.awk b/admin/unidata/biditype.awk
deleted file mode 100644
index bb1aaad1973..00000000000
--- a/admin/unidata/biditype.awk
+++ /dev/null
@@ -1,93 +0,0 @@
1# Generate data for filling bidi_type_table, see src/bidi.c:bidi_initialize.
2
3# Copyright (C) 2010-2011 Free Software Foundation, Inc.
4
5# This file is part of GNU Emacs.
6
7# GNU Emacs is free software: you can redistribute it and/or modify
8# it under the terms of the GNU General Public License as published by
9# the Free Software Foundation, either version 3 of the License, or
10# (at your option) any later version.
11
12# GNU Emacs is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16
17# You should have received a copy of the GNU General Public License
18# along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
19
20# Written by Eli Zaretskii <eliz@gnu.org>
21
22function trtype(type)
23{
24 # Types are listed in the order of decresing use in UnicodeData.txt:
25 if (type == "ON")
26 return "NEUTRAL_ON";
27 else if (type == "NSM")
28 return "WEAK_NSM";
29 else if (type == "AL")
30 return "STRONG_AL";
31 else if (type == "R")
32 return "STRONG_R";
33 else if (type == "BN")
34 return "WEAK_BN";
35 else if (type == "EN")
36 return "WEAK_EN";
37 else if (type == "ET")
38 return "WEAK_ET";
39 else if (type == "AN")
40 return "WEAK_AN";
41 else if (type == "WS")
42 return "NEUTRAL_WS";
43 else if (type == "CS")
44 return "WEAK_CS";
45 else if (type == "ES")
46 return "WEAK_ES";
47 else if (type == "B")
48 return "NEUTRAL_B";
49 else if (type == "S")
50 return "NEUTRAL_S";
51 else if (type == "LRE" || type == "RLE" || type == "LRO" || type == "RLO" || type == "PDF")
52 return type;
53 else if (type == "L")
54 return "STRONG_L";
55 else
56 {
57 printf "Unknown type: %s\n", type > "/dev/stderr";
58 exit 1;
59 }
60}
61
62BEGIN {
63 otype = "";
64 startcode = "";
65 endcode = "";
66 printf " struct {\n int from, to;\n bidi_type_t type;\n } bidi_type[] = {\n";
67 first = 1;
68 }
69
70 { code = $1;
71 ntype = $5;
72 if (ntype != otype)
73 {
74 # Don't output data for L, as that's the default value, see bidi.c.
75 if (otype != "L" && startcode != "")
76 {
77 if (!first)
78 printf ",\n";
79 else
80 first = 0;
81 printf "\t{ 0x%s, 0x%s, %s }", startcode, endcode, trtype(otype);
82 }
83 otype = ntype;
84 startcode = code;
85 endcode = code;
86 }
87 else
88 endcode = code;
89 }
90
91END {
92 printf " };\n";
93 }
diff --git a/admin/unidata/makefile.w32-in b/admin/unidata/makefile.w32-in
index 6a877e0c1d0..96a1f5b86fd 100644
--- a/admin/unidata/makefile.w32-in
+++ b/admin/unidata/makefile.w32-in
@@ -29,7 +29,7 @@ EMACSLOADPATH = $(lisp);$(lisp)/international;$(lisp)/emacs-lisp
29# Quote EMACS so it could be a file name with embedded whitespace 29# Quote EMACS so it could be a file name with embedded whitespace
30RUNEMACS = "$(EMACS)" -Q -batch 30RUNEMACS = "$(EMACS)" -Q -batch
31 31
32all: $(DSTDIR)/charprop.el ../../src/biditype.h ../../src/bidimirror.h 32all: $(DSTDIR)/charprop.el
33 33
34.el.elc: 34.el.elc:
35 $(RUNEMACS) -f batch-byte-compile $< 35 $(RUNEMACS) -f batch-byte-compile $<
@@ -51,16 +51,6 @@ charprop-CMD: unidata-gen.elc unidata.txt
51 51
52${DSTDIR}/charprop.el: charprop-$(SHELLTYPE) 52${DSTDIR}/charprop.el: charprop-$(SHELLTYPE)
53 53
54../../src/biditype.h: UnicodeData.txt
55 gawk -F";" -f biditype.awk -v BINMODE=2 $< > biditype.h
56 $(CP) biditype.h $@
57 $(DEL) biditype.h
58
59../../src/bidimirror.h: BidiMirroring.txt
60 gawk -F"[; ]+" -f bidimirror.awk -v BINMODE=2 $< > bidimirror.h
61 $(CP) bidimirror.h $@
62 $(DEL) bidimirror.h
63
64clean: 54clean:
65 - $(DEL) unidata-gen.elc unidata.txt biditype.h bidimirror.h 55 - $(DEL) unidata-gen.elc unidata.txt biditype.h bidimirror.h
66 56
diff --git a/src/ChangeLog b/src/ChangeLog
index fa94aed1383..a2256cff9f0 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,7 +1,23 @@
12011-08-15 Eli Zaretskii <eliz@gnu.org> 12011-08-15 Eli Zaretskii <eliz@gnu.org>
2 2
3 * biditype.h: File removed.
4
5 * bidimirror.h: File removed.
6
7 * deps.mk (bidi.o): Remove biditype.h and
8 bidimirror.h.
9
10 * makefile.w32-in ($(BLD)/bidi.$(O)): Remove biditype.h and
11 bidimirror.h.
12
13 * dispextern.h: Fix a typo in the comment to bidi_type_t.
14
15 * chartab.c: Improve commentary for the uniprop_table API.
16
3 * bidi.c (bidi_paragraph_init): Support zero value of 17 * bidi.c (bidi_paragraph_init): Support zero value of
4 bidi_ignore_explicit_marks_for_paragraph_level. 18 bidi_ignore_explicit_marks_for_paragraph_level.
19 (bidi_initialize): Use uniprop_table instead of including
20 biditype.h and bidimirror.h.
5 21
6 * xdisp.c (move_it_in_display_line_to): Don't reset pixel 22 * xdisp.c (move_it_in_display_line_to): Don't reset pixel
7 coordinates of the iterator when restoring from ppos_it. 23 coordinates of the iterator when restoring from ppos_it.
diff --git a/src/bidi.c b/src/bidi.c
index 383553f6d91..280c9d15769 100644
--- a/src/bidi.c
+++ b/src/bidi.c
@@ -746,26 +746,18 @@ bidi_unshelve_cache (void *databuf, int just_free)
746static void 746static void
747bidi_initialize (void) 747bidi_initialize (void)
748{ 748{
749
750#include "biditype.h"
751#include "bidimirror.h"
752
753 int i; 749 int i;
754 750
755 bidi_type_table = Fmake_char_table (Qnil, make_number (STRONG_L)); 751 bidi_type_table = uniprop_table (intern ("bidi-class"));
752 if (NILP (bidi_type_table))
753 abort ();
756 staticpro (&bidi_type_table); 754 staticpro (&bidi_type_table);
757 755
758 for (i = 0; i < sizeof bidi_type / sizeof bidi_type[0]; i++) 756 bidi_mirror_table = uniprop_table (intern ("mirroring"));
759 char_table_set_range (bidi_type_table, bidi_type[i].from, bidi_type[i].to, 757 if (NILP (bidi_mirror_table))
760 make_number (bidi_type[i].type)); 758 abort ();
761
762 bidi_mirror_table = Fmake_char_table (Qnil, Qnil);
763 staticpro (&bidi_mirror_table); 759 staticpro (&bidi_mirror_table);
764 760
765 for (i = 0; i < sizeof bidi_mirror / sizeof bidi_mirror[0]; i++)
766 char_table_set (bidi_mirror_table, bidi_mirror[i].from,
767 make_number (bidi_mirror[i].to));
768
769 Qparagraph_start = intern ("paragraph-start"); 761 Qparagraph_start = intern ("paragraph-start");
770 staticpro (&Qparagraph_start); 762 staticpro (&Qparagraph_start);
771 paragraph_start_re = Fsymbol_value (Qparagraph_start); 763 paragraph_start_re = Fsymbol_value (Qparagraph_start);
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 9bd43c5255b..fd408c713c6 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1776,7 +1776,7 @@ extern int face_change_count;
1776 3 bits for it, so we cannot use there values larger than 7. 1776 3 bits for it, so we cannot use there values larger than 7.
1777 1777
1778 The order of members must be in sync with the 8th element of the 1778 The order of members must be in sync with the 8th element of the
1779 member of unidata-prop-alist (in admin/unidata/unidata-getn.el) for 1779 member of unidata-prop-alist (in admin/unidata/unidata-gen.el) for
1780 Unicode character property `bidi-class'. */ 1780 Unicode character property `bidi-class'. */
1781typedef enum { 1781typedef enum {
1782 UNKNOWN_BT = 0, 1782 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) \