summaryrefslogtreecommitdiff
path: root/src/static_libs
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2016-12-06 12:45:40 +0000
committerTom Hacohen <tom@stosb.com>2016-12-06 12:46:34 +0000
commitabb7310506ce825404788b7674f2bf3961c9df45 (patch)
treeabf6c5733cd473f051b4c61c55b3d447d8cefbd1 /src/static_libs
parent8be045612bc4901ba5322ae589796b23867fc4a4 (diff)
Static deps unibreak: Update to latest version.
This version supports Unicode 9.0 and includes many fixes. Reference git hash: fe1ce2e78c19fa2b4b7a92b1864a12b432da6ec6 This version is not yet released, but now is a better time to sync it, and there are no code changes expected, only "admin" work. Main changes: Unicode 9.0 support Many fixes in the lineberaking algorithm to now pass the Unicode reference test data. @feature
Diffstat (limited to 'src/static_libs')
-rw-r--r--src/static_libs/libunibreak/AUTHORS2
-rw-r--r--src/static_libs/libunibreak/ChangeLog165
-rw-r--r--src/static_libs/libunibreak/linebreak.c192
-rw-r--r--src/static_libs/libunibreak/linebreak.h10
-rw-r--r--src/static_libs/libunibreak/linebreakdata.c176
-rw-r--r--src/static_libs/libunibreak/linebreakdef.c10
-rw-r--r--src/static_libs/libunibreak/linebreakdef.h25
-rw-r--r--src/static_libs/libunibreak/wordbreak.c71
-rw-r--r--src/static_libs/libunibreak/wordbreakdata.c97
-rw-r--r--src/static_libs/libunibreak/wordbreakdef.h5
10 files changed, 627 insertions, 126 deletions
diff --git a/src/static_libs/libunibreak/AUTHORS b/src/static_libs/libunibreak/AUTHORS
index 1b4f4b4..34b5c9a 100644
--- a/src/static_libs/libunibreak/AUTHORS
+++ b/src/static_libs/libunibreak/AUTHORS
@@ -9,3 +9,5 @@ Thomas Klausner. Autoconfiscated and libtoolized liblinebreak.
9Tom Hacohen. Added word boundaries support. 9Tom Hacohen. Added word boundaries support.
10 10
11Petr Filipsky. Added incremental processing for line-breaking. 11Petr Filipsky. Added incremental processing for line-breaking.
12
13Andreas Röver. Added grapheme boundaries support.
diff --git a/src/static_libs/libunibreak/ChangeLog b/src/static_libs/libunibreak/ChangeLog
index f6c4a3d..cad33cf 100644
--- a/src/static_libs/libunibreak/ChangeLog
+++ b/src/static_libs/libunibreak/ChangeLog
@@ -1,3 +1,168 @@
12016-12-04 Wu Yongwei <wuyongwei@gmail.com>
2
3 Simpify implementation about RI pairing.
4 * src/linebreak.c (treat_first_char): Get rid of the special
5 processing in the first character.
6 (get_lb_result_lookup): Refactor implementation.
7
82016-12-03 Wu Yongwei <wuyongwei@gmail.com>
9
10 * tools/test.txt: Make a statement more precise.
11
122016-12-03 Wu Yongwei <wuyongwei@gmail.com>
13
14 * src/linebreak.c (get_lb_result_lookup): Simplify code and fix a
15 corner case about LB21a.
16 (treat_first_char): There is no need to treat first character of
17 Hebrew specially now.
18
192016-12-03 Wu Yongwei <wuyongwei@gmail.com>
20
21 * src/linebreakdef.h (struct LineBreakContext): Add new field
22 cLb30aRI.
23 * src/linebreak.c (lb_init_break_context): Initialize cLb30aRI.
24 (treat_first_char): Deal with leading RI.
25 (get_lb_result_lookup): Count RI characters and allow breaking
26 between each pair occurrence.
27
282016-12-03 Wu Yongwei <wuyongwei@gmail.com>
29
30 * src/linebreak.c (baTable): Fix a few missing entries.
31
322016-12-03 Wu Yongwei <wuyongwei@gmail.com>
33
34 Fix test failure regarding Object Replacement Character (U+FFFC).
35 * src/linebreakdef.h (enum LineBreakClass): Move LBP_CB so that it
36 can be included in the pair table.
37 * src/linebreak.c (baTable): Add break action about LBP_CB.
38 (treat_first_char): Remove customization about LBP_CB.
39 (get_lb_result_simple): Ditto.
40 (get_lb_result_lookup): Change assertion about the maximum valid
41 baTable index.
42
432016-11-29 Wu Yongwei <wuyongwei@gmail.com>
44
45 * src/linebreak.c (ends_with): New static function.
46 (ENDS_WITH): New macro.
47 (resolve_lb_class): Use ENDS_WITH to make the code cleaner.
48
492016-11-28 Wu Yongwei <wuyongwei@gmail.com>
50
51 * src/linebreak.c (resolve_lb_class): Resolve LBP_CJ to LBP_NS if
52 lang ends with "-strict".
53 * src/tests.c: Use "-strict" in line breaking test.
54
552016-11-26 Wu Yongwei <wuyongwei@gmail.com>
56
57 * .clang-format: `Modernize' the clang-format configuration with
58 Clang 3.8.
59
602016-11-26 Wu Yongwei <wuyongwei@gmail.com>
61
62 * src/linebreak.c (get_lb_result_lookup): Fix an issue that
63 combining marks are not correctly dealt with.
64
652016-11-23 Tom Hacohen <tom@stosb.com>
66
67 * src/wordbreak.c (set_wordbreaks): Fix to pass the test suite.
68
692016-11-22 Andreas Röver <roever@users.sf.net>
70
71 Add grapheme breaking support.
72 * AUTHORS: Add `Andreas Röver'.
73 * src/Makefile.am (include_HEADERS): Add header files for grapheme
74 breaking.
75 (libunibreak_la_SOURCES): Add source files for grapheme breaking.
76 (distclean-local): Clean also `GraphemeBreakData.txt'.
77 (GraphemeBreakProperty.txt): New target.
78 (graphemebreakdata): New target.
79 * src/graphemebreak.c: New file.
80 * src/graphemebreak.h: New file.
81 * src/graphemebreakdef.h: New file.
82 * src/graphemebreakdata.c: New file.
83 * src/graphemebreakdata1.tmpl: New file.
84 * src/graphemebreakdata2.tmpl: New file.
85 * tools/graphemebreak_test.c: New file.
86
872016-11-22 Wu Yongwei <wuyongwei@gmail.com>
88
89 * src/tests.c: Adjust code style.
90
912016-11-22 Wu Yongwei <wuyongwei@gmail.com>
92
93 * .clang-format: New file.
94
952016-11-22 Tom Hacohen <tom@stosb.com>
96
97 * src/tests.c: Add a test suite (make check).
98 * Makefile.am: Ditto.
99 * src/Makefile.am: Ditto.
100
1012016-11-17 Tom Hacohen <tom@stosb.com>
102
103 * src/wordbreak.c: Update to Unicode 9.0.0.
104 * src/wordbreakdata.c: Ditto.
105 * src/wordbreakdef.h: Ditto.
106
1072016-11-16 Tom Hacohen <tom@stosb.com>
108
109 * src/wordbreak.c (set_wordbreaks): Fix handling of regional
110 indicators with utf-8/16.
111
1122016-11-03 Mikhail Polubisok <m_polubisok@wargaming.net>
113
114 * src/linebreak.c (get_lb_result_lookup): Fix assertion test of max
115 available indices.
116
1172016-09-10 Wu Yongwei <wuyongwei@gmail.com>
118
119 Update to Unicode 9.0.0.
120 * src/linebreak.c (baTable): Update according to Unicode 9.0.0.
121 * src/linebreakdef.h (enum LineBreakClass): Ditto.
122 * src/linebreakdata.c: Regenerate from LineBreak-9.0.0.txt.
123 * src/linebreak.h: Update comments.
124 * src/linebreakdef.c: Ditto.
125
1262016-08-24 Tom Hacohen <tom@stosb.com>
127
128 Make many structures const.
129
130 These structures should never be changed on runtime so they should
131 be marked as constant. This means the compiler can now warn us if we
132 make the mistake of trying to change any of them, but more
133 importantly, it gives the compiler more information about the nature
134 of these and therefor lets the linker map these structures to
135 read-only memory instead of read-write, which should improve page
136 deduplication in many cases and reduce overall system memory usage.
137
138 This has reduced the number of dirty memory pages from 10 to 2,
139 which translates to 32KiB of memory saved per process linking to
140 libunibreak starting from the second process.
141 * src/linebreak.c (struct LineBreakPropertiesIndex): Mark member
142 variable lbp as const pointer.
143 (get_lb_prop_lang): Mark return value as const pointer.
144 (get_char_lb_class): Mark second parameter as const pointer.
145 (get_char_lb_class_lang): Ditto.
146 * src/linebreakdata.c (lb_prop_default): Mark as const.
147 * src/linebreakdata2.tmpl (lb_prop_default): Ditto.
148 * src/linebreakdef.c (lb_prop_English): Ditto.
149 (lb_prop_German): Ditto.
150 (lb_prop_Spanish): Ditto.
151 (lb_prop_French): Ditto.
152 (lb_prop_Russian): Ditto.
153 (lb_prop_Chinese): Ditto.
154 (lb_prop_lang_map): Ditto.
155 * src/linebreakdef.h (struct LineBreakPropertiesLang): Mark member
156 variable lbp as const pointer.
157 (struct LineBreakContext): Mark member variable lbpLang as const
158 pointer.
159 (lb_prop_default): Declare as const.
160 (lb_prop_lang_map): Ditto.
161 * src/wordbreak.c (get_char_wb_class): Mark second parameter as
162 const pointer.
163 * src/wordbreakdata.c (wb_prop_default): Mark as const.
164 * src/wordbreakdata1.tmpl (wb_prop_default): Ditto.
165
12015-12-20 Wu Yongwei <wuyongwei@gmail.com> 1662015-12-20 Wu Yongwei <wuyongwei@gmail.com>
2 167
3 Fix the issue that U+FFFC (Object Replacement Character) does not 168 Fix the issue that U+FFFC (Object Replacement Character) does not
diff --git a/src/static_libs/libunibreak/linebreak.c b/src/static_libs/libunibreak/linebreak.c
index e3b1ca1..3d87a04 100644
--- a/src/static_libs/libunibreak/linebreak.c
+++ b/src/static_libs/libunibreak/linebreak.c
@@ -4,7 +4,7 @@
4 * Line breaking in a Unicode sequence. Designed to be used in a 4 * Line breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2008-2015 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2016 Wu Yongwei <wuyongwei at gmail dot com>
8 * Copyright (C) 2013 Petr Filipsky <philodej at gmail dot com> 8 * Copyright (C) 2013 Petr Filipsky <philodej at gmail dot com>
9 * 9 *
10 * This software is provided 'as-is', without any express or implied 10 * This software is provided 'as-is', without any express or implied
@@ -31,9 +31,9 @@
31 * Unicode 5.0.0: 31 * Unicode 5.0.0:
32 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html> 32 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
33 * 33 *
34 * This library has been updated according to Revision 35, for 34 * This library has been updated according to Revision 37, for
35 * Unicode 8.0.0: 35 * Unicode 9.0.0:
36 * <URL:http://www.unicode.org/reports/tr14/tr14-35.html> 36 * <URL:http://www.unicode.org/reports/tr14/tr14-37.html>
37 * 37 *
38 * The Unicode Terms of Use are available at 38 * The Unicode Terms of Use are available at
39 * <URL:http://www.unicode.org/copyright.html> 39 * <URL:http://www.unicode.org/copyright.html>
@@ -45,7 +45,7 @@
45 * Implementation of the line breaking algorithm as described in Unicode 45 * Implementation of the line breaking algorithm as described in Unicode
46 * Standard Annex 14. 46 * Standard Annex 14.
47 * 47 *
48 * @version 3.0, 2015/05/10 48 * @version 3.2, 2016/12/04
49 * @author Wu Yongwei 49 * @author Wu Yongwei
50 * @author Petr Filipsky 50 * @author Petr Filipsky
51 */ 51 */
@@ -81,183 +81,207 @@ enum BreakAction
81 81
82/** 82/**
83 * Break action pair table. This is a direct mapping of Table 2 of 83 * Break action pair table. This is a direct mapping of Table 2 of
84 * Unicode Standard Annex 14, Revision 30. 84 * Unicode Standard Annex 14, Revision 37.
85 */ 85 */
86static enum BreakAction baTable[LBP_RI][LBP_RI] = { 86static enum BreakAction baTable[LBP_CB][LBP_CB] = {
87 { /* OP */ 87 { /* OP */
88 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 88 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
89 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 89 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
90 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 90 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
91 CMP_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 91 CMP_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
92 PRH_BRK }, 92 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK },
93 { /* CL */ 93 { /* CL */
94 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK, 94 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK,
95 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 95 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
96 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 96 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
97 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 97 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
98 DIR_BRK }, 98 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
99 { /* CP */ 99 { /* CP */
100 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK, 100 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK,
101 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 101 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
102 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 102 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
103 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 103 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
104 DIR_BRK }, 104 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
105 { /* QU */ 105 { /* QU */
106 PRH_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 106 PRH_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
107 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 107 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
108 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 108 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
109 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 109 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
110 IND_BRK }, 110 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK },
111 { /* GL */ 111 { /* GL */
112 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 112 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
113 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 113 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
114 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 114 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
115 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 115 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
116 IND_BRK }, 116 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK },
117 { /* NS */ 117 { /* NS */
118 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 118 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
119 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 119 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
120 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 120 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
121 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 121 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
122 DIR_BRK }, 122 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
123 { /* EX */ 123 { /* EX */
124 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 124 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
125 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 125 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
126 DIR_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 126 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
127 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 127 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
128 DIR_BRK }, 128 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
129 { /* SY */ 129 { /* SY */
130 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 130 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
131 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, PRH_BRK, 131 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, IND_BRK,
132 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 132 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
133 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 133 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
134 DIR_BRK }, 134 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
135 { /* IS */ 135 { /* IS */
136 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 136 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
137 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 137 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
138 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 138 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
139 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 139 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
140 DIR_BRK }, 140 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
141 { /* PR */ 141 { /* PR */
142 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 142 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
143 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 143 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
144 IND_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 144 IND_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
145 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 145 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
146 DIR_BRK }, 146 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK },
147 { /* PO */ 147 { /* PO */
148 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 148 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
149 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 149 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
150 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 150 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
151 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 151 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
152 DIR_BRK }, 152 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
153 { /* NU */ 153 { /* NU */
154 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 154 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
155 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 155 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
156 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 156 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
157 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 157 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
158 DIR_BRK }, 158 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
159 { /* AL */ 159 { /* AL */
160 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 160 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
161 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 161 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
162 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 162 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
163 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 163 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
164 DIR_BRK }, 164 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
165 { /* HL */ 165 { /* HL */
166 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 166 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
167 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 167 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
168 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 168 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
169 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 169 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
170 DIR_BRK }, 170 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
171 { /* ID */ 171 { /* ID */
172 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 172 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
173 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 173 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
174 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 174 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
175 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 175 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
176 DIR_BRK }, 176 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
177 { /* IN */ 177 { /* IN */
178 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 178 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
179 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 179 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
180 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 180 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
181 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 181 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
182 DIR_BRK }, 182 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
183 { /* HY */ 183 { /* HY */
184 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK, 184 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK,
185 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, 185 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK,
186 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 186 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
187 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 187 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
188 DIR_BRK }, 188 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
189 { /* BA */ 189 { /* BA */
190 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK, 190 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK,
191 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 191 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
192 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 192 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
193 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 193 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
194 DIR_BRK }, 194 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
195 { /* BB */ 195 { /* BB */
196 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 196 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
197 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 197 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
198 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 198 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
199 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 199 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
200 IND_BRK }, 200 IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK },
201 { /* B2 */ 201 { /* B2 */
202 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 202 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
203 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 203 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
204 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, PRH_BRK, PRH_BRK, 204 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, PRH_BRK, PRH_BRK,
205 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 205 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
206 DIR_BRK }, 206 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
207 { /* ZW */ 207 { /* ZW */
208 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 208 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
209 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 209 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
210 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 210 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
211 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 211 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
212 DIR_BRK }, 212 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK },
213 { /* CM */ 213 { /* CM */
214 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 214 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
215 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 215 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
216 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 216 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
217 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 217 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
218 DIR_BRK }, 218 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
219 { /* WJ */ 219 { /* WJ */
220 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 220 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
221 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 221 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
222 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 222 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
223 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 223 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
224 IND_BRK }, 224 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK },
225 { /* H2 */ 225 { /* H2 */
226 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 226 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
227 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 227 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
228 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 228 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
229 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, 229 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK,
230 DIR_BRK }, 230 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
231 { /* H3 */ 231 { /* H3 */
232 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 232 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
233 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 233 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
234 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 234 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
235 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, 235 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK,
236 DIR_BRK }, 236 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
237 { /* JL */ 237 { /* JL */
238 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 238 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
239 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 239 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
240 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 240 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
241 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, 241 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK,
242 DIR_BRK }, 242 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
243 { /* JV */ 243 { /* JV */
244 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 244 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
245 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 245 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
246 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 246 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
247 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, 247 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK,
248 DIR_BRK }, 248 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
249 { /* JT */ 249 { /* JT */
250 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 250 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
251 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 251 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
252 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 252 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
253 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, 253 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK,
254 DIR_BRK }, 254 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
255 { /* RI */ 255 { /* RI */
256 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 256 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
257 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 257 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
258 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, 258 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
259 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 259 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
260 IND_BRK }, 260 IND_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
261 { /* EB */
262 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
263 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
264 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
265 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
266 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK },
267 { /* EM */
268 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
269 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
270 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
271 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
272 DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK },
273 { /* ZWJ */
274 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
275 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
276 IND_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
277 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
278 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK },
279 { /* CB */
280 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, PRH_BRK,
281 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
282 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
283 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
284 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK },
261}; 285};
262 286
263/** 287/**
@@ -265,7 +289,7 @@ static enum BreakAction baTable[LBP_RI][LBP_RI] = {
265 */ 289 */
266struct LineBreakPropertiesIndex 290struct LineBreakPropertiesIndex
267{ 291{
268 utf32_t end; /**< End coding point */ 292 utf32_t end; /**< End coding point */
269 const struct LineBreakProperties *lbp;/**< Pointer to line breaking properties */ 293 const struct LineBreakProperties *lbp;/**< Pointer to line breaking properties */
270}; 294};
271 295
@@ -278,6 +302,36 @@ static struct LineBreakPropertiesIndex lb_prop_index[LINEBREAK_INDEX_SIZE] =
278}; 302};
279 303
280/** 304/**
305 * Checks whether the \a str ends with \a suffix, which has length
306 * \a suffix_len.
307 *
308 * @param str string whose ending is to be checked
309 * @param suffix string to check
310 * @param suffixLen length of \a suffix
311 * @return non-zero if true; zero otherwise
312 */
313static __inline int ends_with(const char *str, const char *suffix,
314 unsigned suffixLen)
315{
316 if (str == NULL)
317 {
318 return 0;
319 }
320 unsigned len = strlen(str);
321 if (len >= suffixLen &&
322 memcmp(str + len - suffixLen, suffix, suffixLen) == 0)
323 {
324 return 1;
325 }
326 else
327 {
328 return 0;
329 }
330}
331
332#define ENDS_WITH(str, suffix) ends_with((str), (suffix), sizeof(suffix) - 1)
333
334/**
281 * Initializes the second-level index to the line breaking properties. 335 * Initializes the second-level index to the line breaking properties.
282 * If it is not called, the performance of #get_char_lb_class_lang (and 336 * If it is not called, the performance of #get_char_lb_class_lang (and
283 * thus the main functionality) can be pretty bad, especially for big 337 * thus the main functionality) can be pretty bad, especially for big
@@ -425,10 +479,17 @@ static enum LineBreakClass resolve_lb_class(
425 return LBP_AL; 479 return LBP_AL;
426 } 480 }
427 case LBP_CJ: 481 case LBP_CJ:
428 /* Simplified for `normal' line breaking. See 482 /* `Strict' and `normal' line breaking. See
429 * <url:http://www.unicode.org/reports/tr14/tr14-30.html#CJ> 483 * <url:http://www.unicode.org/reports/tr14/#CJ>
430 * for details. */ 484 * for details. */
431 return LBP_ID; 485 if (ENDS_WITH(lang, "-strict"))
486 {
487 return LBP_NS;
488 }
489 else
490 {
491 return LBP_ID;
492 }
432 case LBP_SA: 493 case LBP_SA:
433 case LBP_SG: 494 case LBP_SG:
434 case LBP_XX: 495 case LBP_XX:
@@ -454,14 +515,9 @@ static void treat_first_char(
454 case LBP_NL: 515 case LBP_NL:
455 lbpCtx->lbcCur = LBP_BK; /* Rule LB5 */ 516 lbpCtx->lbcCur = LBP_BK; /* Rule LB5 */
456 break; 517 break;
457 case LBP_CB:
458 lbpCtx->lbcCur = LBP_BA; /* Rule LB20 */
459 break;
460 case LBP_SP: 518 case LBP_SP:
461 lbpCtx->lbcCur = LBP_WJ; /* Leading space treated as WJ */ 519 lbpCtx->lbcCur = LBP_WJ; /* Leading space treated as WJ */
462 break; 520 break;
463 case LBP_HL:
464 lbpCtx->fLb21aHebrew = 1; /* Rule LB21a */
465 default: 521 default:
466 break; 522 break;
467 } 523 }
@@ -502,9 +558,6 @@ static int get_lb_result_simple(
502 case LBP_CR: 558 case LBP_CR:
503 lbpCtx->lbcCur = LBP_CR; 559 lbpCtx->lbcCur = LBP_CR;
504 return LINEBREAK_NOBREAK; /* Rule LB6 */ 560 return LINEBREAK_NOBREAK; /* Rule LB6 */
505 case LBP_CB:
506 lbpCtx->lbcCur = LBP_B2;
507 return LINEBREAK_ALLOWBREAK; /* Rule LB20 */
508 default: 561 default:
509 return LINEBREAK_UNDEFINED; /* Table lookup is needed */ 562 return LINEBREAK_UNDEFINED; /* Table lookup is needed */
510 } 563 }
@@ -529,19 +582,26 @@ static int get_lb_result_lookup(
529{ 582{
530 int brk = LINEBREAK_UNDEFINED; 583 int brk = LINEBREAK_UNDEFINED;
531 584
532 assert(lbpCtx->lbcCur <= LBP_RI); 585 assert(lbpCtx->lbcCur <= LBP_CB);
533 assert(lbpCtx->lbcNew <= LBP_RI); 586 assert(lbpCtx->lbcNew <= LBP_CB);
534 switch (baTable[lbpCtx->lbcCur - 1][lbpCtx->lbcNew - 1]) 587 switch (baTable[lbpCtx->lbcCur - 1][lbpCtx->lbcNew - 1])
535 { 588 {
536 case DIR_BRK: 589 case DIR_BRK:
537 brk = LINEBREAK_ALLOWBREAK; 590 brk = LINEBREAK_ALLOWBREAK;
538 break; 591 break;
539 case CMI_BRK:
540 case IND_BRK: 592 case IND_BRK:
541 brk = (lbpCtx->lbcLast == LBP_SP) 593 brk = (lbpCtx->lbcLast == LBP_SP)
542 ? LINEBREAK_ALLOWBREAK 594 ? LINEBREAK_ALLOWBREAK
543 : LINEBREAK_NOBREAK; 595 : LINEBREAK_NOBREAK;
544 break; 596 break;
597 case CMI_BRK:
598 brk = LINEBREAK_ALLOWBREAK;
599 if (lbpCtx->lbcLast != LBP_SP)
600 {
601 brk = LINEBREAK_NOBREAK;
602 return brk; /* Do not update lbcCur */
603 }
604 break;
545 case CMP_BRK: 605 case CMP_BRK:
546 brk = LINEBREAK_NOBREAK; 606 brk = LINEBREAK_NOBREAK;
547 if (lbpCtx->lbcLast != LBP_SP) 607 if (lbpCtx->lbcLast != LBP_SP)
@@ -559,9 +619,24 @@ static int get_lb_result_lookup(
559 brk = LINEBREAK_NOBREAK; 619 brk = LINEBREAK_NOBREAK;
560 lbpCtx->fLb21aHebrew = 0; 620 lbpCtx->fLb21aHebrew = 0;
561 } 621 }
562 else if (!(lbpCtx->lbcNew == LBP_HY || lbpCtx->lbcNew == LBP_BA)) 622 else
623 {
624 lbpCtx->fLb21aHebrew = (lbpCtx->lbcCur == LBP_HL);
625 }
626
627 /* Special processing due to rule LB30a */
628 if (lbpCtx->lbcCur == LBP_RI)
629 {
630 lbpCtx->cLb30aRI++;
631 if (lbpCtx->cLb30aRI == 2 && lbpCtx->lbcNew == LBP_RI)
632 {
633 brk = LINEBREAK_ALLOWBREAK;
634 lbpCtx->cLb30aRI = 0;
635 }
636 }
637 else
563 { 638 {
564 lbpCtx->fLb21aHebrew = (lbpCtx->lbcNew == LBP_HL); 639 lbpCtx->cLb30aRI = 0;
565 } 640 }
566 641
567 lbpCtx->lbcCur = lbpCtx->lbcNew; 642 lbpCtx->lbcCur = lbpCtx->lbcNew;
@@ -589,6 +664,7 @@ void lb_init_break_context(
589 get_char_lb_class_lang(ch, lbpCtx->lbpLang), 664 get_char_lb_class_lang(ch, lbpCtx->lbpLang),
590 lbpCtx->lang); 665 lbpCtx->lang);
591 lbpCtx->fLb21aHebrew = 0; 666 lbpCtx->fLb21aHebrew = 0;
667 lbpCtx->cLb30aRI = 0;
592 treat_first_char(lbpCtx); 668 treat_first_char(lbpCtx);
593} 669}
594 670
diff --git a/src/static_libs/libunibreak/linebreak.h b/src/static_libs/libunibreak/linebreak.h
index 7d3b757..7753b3d 100644
--- a/src/static_libs/libunibreak/linebreak.h
+++ b/src/static_libs/libunibreak/linebreak.h
@@ -4,7 +4,7 @@
4 * Line breaking in a Unicode sequence. Designed to be used in a 4 * Line breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2008-2015 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2016 Wu Yongwei <wuyongwei at gmail dot com>
8 * 8 *
9 * This software is provided 'as-is', without any express or implied 9 * This software is provided 'as-is', without any express or implied
10 * warranty. In no event will the author be held liable for any damages 10 * warranty. In no event will the author be held liable for any damages
@@ -30,9 +30,9 @@
30 * Unicode 5.0.0: 30 * Unicode 5.0.0:
31 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html> 31 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
32 * 32 *
33 * This library has been updated according to Revision 33, for 33 * This library has been updated according to Revision 37, for
34 * Unicode 7.0.0: 34 * Unicode 9.0.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-33.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-37.html>
36 * 36 *
37 * The Unicode Terms of Use are available at 37 * The Unicode Terms of Use are available at
38 * <URL:http://www.unicode.org/copyright.html> 38 * <URL:http://www.unicode.org/copyright.html>
@@ -43,7 +43,7 @@
43 * 43 *
44 * Header file for the line breaking algorithm. 44 * Header file for the line breaking algorithm.
45 * 45 *
46 * @version 3.0, 2015/05/10 46 * @version 3.1, 2016/09/10
47 * @author Wu Yongwei 47 * @author Wu Yongwei
48 */ 48 */
49 49
diff --git a/src/static_libs/libunibreak/linebreakdata.c b/src/static_libs/libunibreak/linebreakdata.c
index dcf39dc..c571f2d 100644
--- a/src/static_libs/libunibreak/linebreakdata.c
+++ b/src/static_libs/libunibreak/linebreakdata.c
@@ -1,6 +1,6 @@
1/* The content of this file is generated from: 1/* The content of this file is generated from:
2# LineBreak-8.0.0.txt 2# LineBreak-9.0.0.txt
3# Date: 2015-02-13, 09:15:00 GMT [KW, LI] 3# Date: 2016-05-26, 01:00:00 GMT [KW, LI]
4*/ 4*/
5 5
6#include "linebreakdef.h" 6#include "linebreakdef.h"
@@ -159,7 +159,9 @@ const struct LineBreakProperties lb_prop_default[] = {
159 { 0x0829, 0x082D, LBP_CM }, 159 { 0x0829, 0x082D, LBP_CM },
160 { 0x0830, 0x0858, LBP_AL }, 160 { 0x0830, 0x0858, LBP_AL },
161 { 0x0859, 0x085B, LBP_CM }, 161 { 0x0859, 0x085B, LBP_CM },
162 { 0x085E, 0x08B4, LBP_AL }, 162 { 0x085E, 0x08BD, LBP_AL },
163 { 0x08D4, 0x08E1, LBP_CM },
164 { 0x08E2, 0x08E2, LBP_AL },
163 { 0x08E3, 0x0903, LBP_CM }, 165 { 0x08E3, 0x0903, LBP_CM },
164 { 0x0904, 0x0939, LBP_AL }, 166 { 0x0904, 0x0939, LBP_AL },
165 { 0x093A, 0x093C, LBP_CM }, 167 { 0x093A, 0x093C, LBP_CM },
@@ -230,7 +232,7 @@ const struct LineBreakProperties lb_prop_default[] = {
230 { 0x0C58, 0x0C61, LBP_AL }, 232 { 0x0C58, 0x0C61, LBP_AL },
231 { 0x0C62, 0x0C63, LBP_CM }, 233 { 0x0C62, 0x0C63, LBP_CM },
232 { 0x0C66, 0x0C6F, LBP_NU }, 234 { 0x0C66, 0x0C6F, LBP_NU },
233 { 0x0C78, 0x0C7F, LBP_AL }, 235 { 0x0C78, 0x0C80, LBP_AL },
234 { 0x0C81, 0x0C83, LBP_CM }, 236 { 0x0C81, 0x0C83, LBP_CM },
235 { 0x0C85, 0x0CB9, LBP_AL }, 237 { 0x0C85, 0x0CB9, LBP_AL },
236 { 0x0CBC, 0x0CBC, LBP_CM }, 238 { 0x0CBC, 0x0CBC, LBP_CM },
@@ -243,12 +245,12 @@ const struct LineBreakProperties lb_prop_default[] = {
243 { 0x0D01, 0x0D03, LBP_CM }, 245 { 0x0D01, 0x0D03, LBP_CM },
244 { 0x0D05, 0x0D3D, LBP_AL }, 246 { 0x0D05, 0x0D3D, LBP_AL },
245 { 0x0D3E, 0x0D4D, LBP_CM }, 247 { 0x0D3E, 0x0D4D, LBP_CM },
246 { 0x0D4E, 0x0D4E, LBP_AL }, 248 { 0x0D4E, 0x0D56, LBP_AL },
247 { 0x0D57, 0x0D57, LBP_CM }, 249 { 0x0D57, 0x0D57, LBP_CM },
248 { 0x0D5F, 0x0D61, LBP_AL }, 250 { 0x0D58, 0x0D61, LBP_AL },
249 { 0x0D62, 0x0D63, LBP_CM }, 251 { 0x0D62, 0x0D63, LBP_CM },
250 { 0x0D66, 0x0D6F, LBP_NU }, 252 { 0x0D66, 0x0D6F, LBP_NU },
251 { 0x0D70, 0x0D75, LBP_AL }, 253 { 0x0D70, 0x0D78, LBP_AL },
252 { 0x0D79, 0x0D79, LBP_PO }, 254 { 0x0D79, 0x0D79, LBP_PO },
253 { 0x0D7A, 0x0D7F, LBP_AL }, 255 { 0x0D7A, 0x0D7F, LBP_AL },
254 { 0x0D82, 0x0D83, LBP_CM }, 256 { 0x0D82, 0x0D83, LBP_CM },
@@ -364,7 +366,9 @@ const struct LineBreakProperties lb_prop_default[] = {
364 { 0x180B, 0x180D, LBP_CM }, 366 { 0x180B, 0x180D, LBP_CM },
365 { 0x180E, 0x180E, LBP_GL }, 367 { 0x180E, 0x180E, LBP_GL },
366 { 0x1810, 0x1819, LBP_NU }, 368 { 0x1810, 0x1819, LBP_NU },
367 { 0x1820, 0x18A8, LBP_AL }, 369 { 0x1820, 0x1884, LBP_AL },
370 { 0x1885, 0x1886, LBP_CM },
371 { 0x1887, 0x18A8, LBP_AL },
368 { 0x18A9, 0x18A9, LBP_CM }, 372 { 0x18A9, 0x18A9, LBP_CM },
369 { 0x18AA, 0x191E, LBP_AL }, 373 { 0x18AA, 0x191E, LBP_AL },
370 { 0x1920, 0x193B, LBP_CM }, 374 { 0x1920, 0x193B, LBP_CM },
@@ -407,7 +411,7 @@ const struct LineBreakProperties lb_prop_default[] = {
407 { 0x1C50, 0x1C59, LBP_NU }, 411 { 0x1C50, 0x1C59, LBP_NU },
408 { 0x1C5A, 0x1C7D, LBP_AL }, 412 { 0x1C5A, 0x1C7D, LBP_AL },
409 { 0x1C7E, 0x1C7F, LBP_BA }, 413 { 0x1C7E, 0x1C7F, LBP_BA },
410 { 0x1CC0, 0x1CC7, LBP_AL }, 414 { 0x1C80, 0x1CC7, LBP_AL },
411 { 0x1CD0, 0x1CD2, LBP_CM }, 415 { 0x1CD0, 0x1CD2, LBP_CM },
412 { 0x1CD3, 0x1CD3, LBP_AL }, 416 { 0x1CD3, 0x1CD3, LBP_AL },
413 { 0x1CD4, 0x1CE8, LBP_CM }, 417 { 0x1CD4, 0x1CE8, LBP_CM },
@@ -636,7 +640,9 @@ const struct LineBreakProperties lb_prop_default[] = {
636 { 0x2616, 0x2617, LBP_AI }, 640 { 0x2616, 0x2617, LBP_AI },
637 { 0x2618, 0x2618, LBP_ID }, 641 { 0x2618, 0x2618, LBP_ID },
638 { 0x2619, 0x2619, LBP_AL }, 642 { 0x2619, 0x2619, LBP_AL },
639 { 0x261A, 0x261F, LBP_ID }, 643 { 0x261A, 0x261C, LBP_ID },
644 { 0x261D, 0x261D, LBP_EB },
645 { 0x261E, 0x261F, LBP_ID },
640 { 0x2620, 0x2638, LBP_AL }, 646 { 0x2620, 0x2638, LBP_AL },
641 { 0x2639, 0x263B, LBP_ID }, 647 { 0x2639, 0x263B, LBP_ID },
642 { 0x263C, 0x263F, LBP_AL }, 648 { 0x263C, 0x263F, LBP_AL },
@@ -681,18 +687,22 @@ const struct LineBreakProperties lb_prop_default[] = {
681 { 0x26EB, 0x26F0, LBP_AI }, 687 { 0x26EB, 0x26F0, LBP_AI },
682 { 0x26F1, 0x26F5, LBP_ID }, 688 { 0x26F1, 0x26F5, LBP_ID },
683 { 0x26F6, 0x26F6, LBP_AI }, 689 { 0x26F6, 0x26F6, LBP_AI },
684 { 0x26F7, 0x26FA, LBP_ID }, 690 { 0x26F7, 0x26F8, LBP_ID },
691 { 0x26F9, 0x26F9, LBP_EB },
692 { 0x26FA, 0x26FA, LBP_ID },
685 { 0x26FB, 0x26FC, LBP_AI }, 693 { 0x26FB, 0x26FC, LBP_AI },
686 { 0x26FD, 0x2704, LBP_ID }, 694 { 0x26FD, 0x2704, LBP_ID },
687 { 0x2705, 0x2707, LBP_AL }, 695 { 0x2705, 0x2707, LBP_AL },
688 { 0x2708, 0x270D, LBP_ID }, 696 { 0x2708, 0x2709, LBP_ID },
697 { 0x270A, 0x270D, LBP_EB },
689 { 0x270E, 0x2756, LBP_AL }, 698 { 0x270E, 0x2756, LBP_AL },
690 { 0x2757, 0x2757, LBP_AI }, 699 { 0x2757, 0x2757, LBP_AI },
691 { 0x2758, 0x275A, LBP_AL }, 700 { 0x2758, 0x275A, LBP_AL },
692 { 0x275B, 0x2760, LBP_QU }, 701 { 0x275B, 0x2760, LBP_QU },
693 { 0x2761, 0x2761, LBP_AL }, 702 { 0x2761, 0x2761, LBP_AL },
694 { 0x2762, 0x2763, LBP_EX }, 703 { 0x2762, 0x2763, LBP_EX },
695 { 0x2764, 0x2767, LBP_AL }, 704 { 0x2764, 0x2764, LBP_ID },
705 { 0x2765, 0x2767, LBP_AL },
696 { 0x2768, 0x2768, LBP_OP }, 706 { 0x2768, 0x2768, LBP_OP },
697 { 0x2769, 0x2769, LBP_CL }, 707 { 0x2769, 0x2769, LBP_CL },
698 { 0x276A, 0x276A, LBP_OP }, 708 { 0x276A, 0x276A, LBP_OP },
@@ -798,6 +808,7 @@ const struct LineBreakProperties lb_prop_default[] = {
798 { 0x2E3F, 0x2E3F, LBP_AL }, 808 { 0x2E3F, 0x2E3F, LBP_AL },
799 { 0x2E40, 0x2E41, LBP_BA }, 809 { 0x2E40, 0x2E41, LBP_BA },
800 { 0x2E42, 0x2E42, LBP_OP }, 810 { 0x2E42, 0x2E42, LBP_OP },
811 { 0x2E43, 0x2E44, LBP_BA },
801 { 0x2E80, 0x2FFB, LBP_ID }, 812 { 0x2E80, 0x2FFB, LBP_ID },
802 { 0x3000, 0x3000, LBP_BA }, 813 { 0x3000, 0x3000, LBP_BA },
803 { 0x3001, 0x3002, LBP_CL }, 814 { 0x3001, 0x3002, LBP_CL },
@@ -925,7 +936,7 @@ const struct LineBreakProperties lb_prop_default[] = {
925 { 0xA876, 0xA877, LBP_EX }, 936 { 0xA876, 0xA877, LBP_EX },
926 { 0xA880, 0xA881, LBP_CM }, 937 { 0xA880, 0xA881, LBP_CM },
927 { 0xA882, 0xA8B3, LBP_AL }, 938 { 0xA882, 0xA8B3, LBP_AL },
928 { 0xA8B4, 0xA8C4, LBP_CM }, 939 { 0xA8B4, 0xA8C5, LBP_CM },
929 { 0xA8CE, 0xA8CF, LBP_BA }, 940 { 0xA8CE, 0xA8CF, LBP_BA },
930 { 0xA8D0, 0xA8D9, LBP_NU }, 941 { 0xA8D0, 0xA8D9, LBP_NU },
931 { 0xA8E0, 0xA8F1, LBP_CM }, 942 { 0xA8E0, 0xA8F1, LBP_CM },
@@ -1863,11 +1874,11 @@ const struct LineBreakProperties lb_prop_default[] = {
1863 { 0xFF62, 0xFF62, LBP_OP }, 1874 { 0xFF62, 0xFF62, LBP_OP },
1864 { 0xFF63, 0xFF64, LBP_CL }, 1875 { 0xFF63, 0xFF64, LBP_CL },
1865 { 0xFF65, 0xFF65, LBP_NS }, 1876 { 0xFF65, 0xFF65, LBP_NS },
1866 { 0xFF66, 0xFF66, LBP_AL }, 1877 { 0xFF66, 0xFF66, LBP_ID },
1867 { 0xFF67, 0xFF70, LBP_CJ }, 1878 { 0xFF67, 0xFF70, LBP_CJ },
1868 { 0xFF71, 0xFF9D, LBP_AL }, 1879 { 0xFF71, 0xFF9D, LBP_ID },
1869 { 0xFF9E, 0xFF9F, LBP_NS }, 1880 { 0xFF9E, 0xFF9F, LBP_NS },
1870 { 0xFFA0, 0xFFDC, LBP_AL }, 1881 { 0xFFA0, 0xFFDC, LBP_ID },
1871 { 0xFFE0, 0xFFE0, LBP_PO }, 1882 { 0xFFE0, 0xFFE0, LBP_PO },
1872 { 0xFFE1, 0xFFE1, LBP_PR }, 1883 { 0xFFE1, 0xFFE1, LBP_PR },
1873 { 0xFFE2, 0xFFE4, LBP_ID }, 1884 { 0xFFE2, 0xFFE4, LBP_ID },
@@ -1890,7 +1901,7 @@ const struct LineBreakProperties lb_prop_default[] = {
1890 { 0x103D0, 0x103D0, LBP_BA }, 1901 { 0x103D0, 0x103D0, LBP_BA },
1891 { 0x103D1, 0x1049D, LBP_AL }, 1902 { 0x103D1, 0x1049D, LBP_AL },
1892 { 0x104A0, 0x104A9, LBP_NU }, 1903 { 0x104A0, 0x104A9, LBP_NU },
1893 { 0x10500, 0x10855, LBP_AL }, 1904 { 0x104B0, 0x10855, LBP_AL },
1894 { 0x10857, 0x10857, LBP_BA }, 1905 { 0x10857, 0x10857, LBP_BA },
1895 { 0x10858, 0x1091B, LBP_AL }, 1906 { 0x10858, 0x1091B, LBP_AL },
1896 { 0x1091F, 0x1091F, LBP_BA }, 1907 { 0x1091F, 0x1091F, LBP_BA },
@@ -1951,7 +1962,9 @@ const struct LineBreakProperties lb_prop_default[] = {
1951 { 0x11238, 0x11239, LBP_BA }, 1962 { 0x11238, 0x11239, LBP_BA },
1952 { 0x1123A, 0x1123A, LBP_AL }, 1963 { 0x1123A, 0x1123A, LBP_AL },
1953 { 0x1123B, 0x1123C, LBP_BA }, 1964 { 0x1123B, 0x1123C, LBP_BA },
1954 { 0x1123D, 0x112A8, LBP_AL }, 1965 { 0x1123D, 0x1123D, LBP_AL },
1966 { 0x1123E, 0x1123E, LBP_CM },
1967 { 0x11280, 0x112A8, LBP_AL },
1955 { 0x112A9, 0x112A9, LBP_BA }, 1968 { 0x112A9, 0x112A9, LBP_BA },
1956 { 0x112B0, 0x112DE, LBP_AL }, 1969 { 0x112B0, 0x112DE, LBP_AL },
1957 { 0x112DF, 0x112EA, LBP_CM }, 1970 { 0x112DF, 0x112EA, LBP_CM },
@@ -1965,7 +1978,14 @@ const struct LineBreakProperties lb_prop_default[] = {
1965 { 0x11357, 0x11357, LBP_CM }, 1978 { 0x11357, 0x11357, LBP_CM },
1966 { 0x1135D, 0x11361, LBP_AL }, 1979 { 0x1135D, 0x11361, LBP_AL },
1967 { 0x11362, 0x11374, LBP_CM }, 1980 { 0x11362, 0x11374, LBP_CM },
1968 { 0x11480, 0x114AF, LBP_AL }, 1981 { 0x11400, 0x11434, LBP_AL },
1982 { 0x11435, 0x11446, LBP_CM },
1983 { 0x11447, 0x1144A, LBP_AL },
1984 { 0x1144B, 0x1144E, LBP_BA },
1985 { 0x1144F, 0x1144F, LBP_AL },
1986 { 0x11450, 0x11459, LBP_NU },
1987 { 0x1145B, 0x1145B, LBP_BA },
1988 { 0x1145D, 0x114AF, LBP_AL },
1969 { 0x114B0, 0x114C3, LBP_CM }, 1989 { 0x114B0, 0x114C3, LBP_CM },
1970 { 0x114C4, 0x114C7, LBP_AL }, 1990 { 0x114C4, 0x114C7, LBP_AL },
1971 { 0x114D0, 0x114D9, LBP_NU }, 1991 { 0x114D0, 0x114D9, LBP_NU },
@@ -1983,6 +2003,7 @@ const struct LineBreakProperties lb_prop_default[] = {
1983 { 0x11641, 0x11642, LBP_BA }, 2003 { 0x11641, 0x11642, LBP_BA },
1984 { 0x11643, 0x11644, LBP_AL }, 2004 { 0x11643, 0x11644, LBP_AL },
1985 { 0x11650, 0x11659, LBP_NU }, 2005 { 0x11650, 0x11659, LBP_NU },
2006 { 0x11660, 0x1166C, LBP_BB },
1986 { 0x11680, 0x116AA, LBP_AL }, 2007 { 0x11680, 0x116AA, LBP_AL },
1987 { 0x116AB, 0x116B7, LBP_CM }, 2008 { 0x116AB, 0x116B7, LBP_CM },
1988 { 0x116C0, 0x116C9, LBP_NU }, 2009 { 0x116C0, 0x116C9, LBP_NU },
@@ -1993,7 +2014,17 @@ const struct LineBreakProperties lb_prop_default[] = {
1993 { 0x1173F, 0x1173F, LBP_SA }, 2014 { 0x1173F, 0x1173F, LBP_SA },
1994 { 0x118A0, 0x118DF, LBP_AL }, 2015 { 0x118A0, 0x118DF, LBP_AL },
1995 { 0x118E0, 0x118E9, LBP_NU }, 2016 { 0x118E0, 0x118E9, LBP_NU },
1996 { 0x118EA, 0x1246E, LBP_AL }, 2017 { 0x118EA, 0x11C2E, LBP_AL },
2018 { 0x11C2F, 0x11C3F, LBP_CM },
2019 { 0x11C40, 0x11C40, LBP_AL },
2020 { 0x11C41, 0x11C45, LBP_BA },
2021 { 0x11C50, 0x11C59, LBP_NU },
2022 { 0x11C5A, 0x11C6C, LBP_AL },
2023 { 0x11C70, 0x11C70, LBP_BB },
2024 { 0x11C71, 0x11C71, LBP_EX },
2025 { 0x11C72, 0x11C8F, LBP_AL },
2026 { 0x11C92, 0x11CB6, LBP_CM },
2027 { 0x12000, 0x1246E, LBP_AL },
1997 { 0x12470, 0x12474, LBP_BA }, 2028 { 0x12470, 0x12474, LBP_BA },
1998 { 0x12480, 0x13257, LBP_AL }, 2029 { 0x12480, 0x13257, LBP_AL },
1999 { 0x13258, 0x1325A, LBP_OP }, 2030 { 0x13258, 0x1325A, LBP_OP },
@@ -2027,7 +2058,8 @@ const struct LineBreakProperties lb_prop_default[] = {
2027 { 0x16B5B, 0x16F50, LBP_AL }, 2058 { 0x16B5B, 0x16F50, LBP_AL },
2028 { 0x16F51, 0x16F92, LBP_CM }, 2059 { 0x16F51, 0x16F92, LBP_CM },
2029 { 0x16F93, 0x16F9F, LBP_AL }, 2060 { 0x16F93, 0x16F9F, LBP_AL },
2030 { 0x1B000, 0x1B001, LBP_ID }, 2061 { 0x16FE0, 0x16FE0, LBP_NS },
2062 { 0x17000, 0x1B001, LBP_ID },
2031 { 0x1BC00, 0x1BC9C, LBP_AL }, 2063 { 0x1BC00, 0x1BC9C, LBP_AL },
2032 { 0x1BC9D, 0x1BC9E, LBP_CM }, 2064 { 0x1BC9D, 0x1BC9E, LBP_CM },
2033 { 0x1BC9F, 0x1BC9F, LBP_BA }, 2065 { 0x1BC9F, 0x1BC9F, LBP_BA },
@@ -2055,32 +2087,65 @@ const struct LineBreakProperties lb_prop_default[] = {
2055 { 0x1DA85, 0x1DA86, LBP_AL }, 2087 { 0x1DA85, 0x1DA86, LBP_AL },
2056 { 0x1DA87, 0x1DA8A, LBP_BA }, 2088 { 0x1DA87, 0x1DA8A, LBP_BA },
2057 { 0x1DA8B, 0x1DA8B, LBP_AL }, 2089 { 0x1DA8B, 0x1DA8B, LBP_AL },
2058 { 0x1DA9B, 0x1DAAF, LBP_CM }, 2090 { 0x1DA9B, 0x1E02A, LBP_CM },
2059 { 0x1E800, 0x1E8CF, LBP_AL }, 2091 { 0x1E800, 0x1E8CF, LBP_AL },
2060 { 0x1E8D0, 0x1E8D6, LBP_CM }, 2092 { 0x1E8D0, 0x1E8D6, LBP_CM },
2093 { 0x1E900, 0x1E943, LBP_AL },
2094 { 0x1E944, 0x1E94A, LBP_CM },
2095 { 0x1E950, 0x1E959, LBP_NU },
2096 { 0x1E95E, 0x1E95F, LBP_OP },
2061 { 0x1EE00, 0x1EEF1, LBP_AL }, 2097 { 0x1EE00, 0x1EEF1, LBP_AL },
2062 { 0x1F000, 0x1F0F5, LBP_ID }, 2098 { 0x1F000, 0x1F0FF, LBP_ID },
2063 { 0x1F100, 0x1F12D, LBP_AI }, 2099 { 0x1F100, 0x1F10C, LBP_AI },
2100 { 0x1F10D, 0x1F10F, LBP_ID },
2101 { 0x1F110, 0x1F12D, LBP_AI },
2064 { 0x1F12E, 0x1F12E, LBP_AL }, 2102 { 0x1F12E, 0x1F12E, LBP_AL },
2103 { 0x1F12F, 0x1F12F, LBP_ID },
2065 { 0x1F130, 0x1F169, LBP_AI }, 2104 { 0x1F130, 0x1F169, LBP_AI },
2066 { 0x1F16A, 0x1F16B, LBP_AL }, 2105 { 0x1F16A, 0x1F16B, LBP_AL },
2067 { 0x1F170, 0x1F19A, LBP_AI }, 2106 { 0x1F16C, 0x1F16F, LBP_ID },
2107 { 0x1F170, 0x1F1AC, LBP_AI },
2108 { 0x1F1AD, 0x1F1E5, LBP_ID },
2068 { 0x1F1E6, 0x1F1FF, LBP_RI }, 2109 { 0x1F1E6, 0x1F1FF, LBP_RI },
2069 { 0x1F200, 0x1F39B, LBP_ID }, 2110 { 0x1F200, 0x1F384, LBP_ID },
2111 { 0x1F385, 0x1F385, LBP_EB },
2112 { 0x1F386, 0x1F39B, LBP_ID },
2070 { 0x1F39C, 0x1F39D, LBP_AL }, 2113 { 0x1F39C, 0x1F39D, LBP_AL },
2071 { 0x1F39E, 0x1F3B4, LBP_ID }, 2114 { 0x1F39E, 0x1F3B4, LBP_ID },
2072 { 0x1F3B5, 0x1F3B6, LBP_AL }, 2115 { 0x1F3B5, 0x1F3B6, LBP_AL },
2073 { 0x1F3B7, 0x1F3BB, LBP_ID }, 2116 { 0x1F3B7, 0x1F3BB, LBP_ID },
2074 { 0x1F3BC, 0x1F3BC, LBP_AL }, 2117 { 0x1F3BC, 0x1F3BC, LBP_AL },
2075 { 0x1F3BD, 0x1F3FA, LBP_ID }, 2118 { 0x1F3BD, 0x1F3C2, LBP_ID },
2076 { 0x1F3FB, 0x1F3FF, LBP_AL }, 2119 { 0x1F3C3, 0x1F3C4, LBP_EB },
2077 { 0x1F400, 0x1F49F, LBP_ID }, 2120 { 0x1F3C5, 0x1F3C9, LBP_ID },
2121 { 0x1F3CA, 0x1F3CB, LBP_EB },
2122 { 0x1F3CC, 0x1F3FA, LBP_ID },
2123 { 0x1F3FB, 0x1F3FF, LBP_EM },
2124 { 0x1F400, 0x1F441, LBP_ID },
2125 { 0x1F442, 0x1F443, LBP_EB },
2126 { 0x1F444, 0x1F445, LBP_ID },
2127 { 0x1F446, 0x1F450, LBP_EB },
2128 { 0x1F451, 0x1F465, LBP_ID },
2129 { 0x1F466, 0x1F469, LBP_EB },
2130 { 0x1F46A, 0x1F46D, LBP_ID },
2131 { 0x1F46E, 0x1F46E, LBP_EB },
2132 { 0x1F46F, 0x1F46F, LBP_ID },
2133 { 0x1F470, 0x1F478, LBP_EB },
2134 { 0x1F479, 0x1F47B, LBP_ID },
2135 { 0x1F47C, 0x1F47C, LBP_EB },
2136 { 0x1F47D, 0x1F480, LBP_ID },
2137 { 0x1F481, 0x1F483, LBP_EB },
2138 { 0x1F484, 0x1F484, LBP_ID },
2139 { 0x1F485, 0x1F487, LBP_EB },
2140 { 0x1F488, 0x1F49F, LBP_ID },
2078 { 0x1F4A0, 0x1F4A0, LBP_AL }, 2141 { 0x1F4A0, 0x1F4A0, LBP_AL },
2079 { 0x1F4A1, 0x1F4A1, LBP_ID }, 2142 { 0x1F4A1, 0x1F4A1, LBP_ID },
2080 { 0x1F4A2, 0x1F4A2, LBP_AL }, 2143 { 0x1F4A2, 0x1F4A2, LBP_AL },
2081 { 0x1F4A3, 0x1F4A3, LBP_ID }, 2144 { 0x1F4A3, 0x1F4A3, LBP_ID },
2082 { 0x1F4A4, 0x1F4A4, LBP_AL }, 2145 { 0x1F4A4, 0x1F4A4, LBP_AL },
2083 { 0x1F4A5, 0x1F4AE, LBP_ID }, 2146 { 0x1F4A5, 0x1F4A9, LBP_ID },
2147 { 0x1F4AA, 0x1F4AA, LBP_EB },
2148 { 0x1F4AB, 0x1F4AE, LBP_ID },
2084 { 0x1F4AF, 0x1F4AF, LBP_AL }, 2149 { 0x1F4AF, 0x1F4AF, LBP_AL },
2085 { 0x1F4B0, 0x1F4B0, LBP_ID }, 2150 { 0x1F4B0, 0x1F4B0, LBP_ID },
2086 { 0x1F4B1, 0x1F4B2, LBP_AL }, 2151 { 0x1F4B1, 0x1F4B2, LBP_AL },
@@ -2090,18 +2155,57 @@ const struct LineBreakProperties lb_prop_default[] = {
2090 { 0x1F517, 0x1F524, LBP_AL }, 2155 { 0x1F517, 0x1F524, LBP_AL },
2091 { 0x1F525, 0x1F531, LBP_ID }, 2156 { 0x1F525, 0x1F531, LBP_ID },
2092 { 0x1F532, 0x1F549, LBP_AL }, 2157 { 0x1F532, 0x1F549, LBP_AL },
2093 { 0x1F54A, 0x1F5D3, LBP_ID }, 2158 { 0x1F54A, 0x1F574, LBP_ID },
2159 { 0x1F575, 0x1F575, LBP_EB },
2160 { 0x1F576, 0x1F579, LBP_ID },
2161 { 0x1F57A, 0x1F57A, LBP_EB },
2162 { 0x1F57B, 0x1F58F, LBP_ID },
2163 { 0x1F590, 0x1F590, LBP_EB },
2164 { 0x1F591, 0x1F594, LBP_ID },
2165 { 0x1F595, 0x1F596, LBP_EB },
2166 { 0x1F597, 0x1F5D3, LBP_ID },
2094 { 0x1F5D4, 0x1F5DB, LBP_AL }, 2167 { 0x1F5D4, 0x1F5DB, LBP_AL },
2095 { 0x1F5DC, 0x1F5F3, LBP_ID }, 2168 { 0x1F5DC, 0x1F5F3, LBP_ID },
2096 { 0x1F5F4, 0x1F5F9, LBP_AL }, 2169 { 0x1F5F4, 0x1F5F9, LBP_AL },
2097 { 0x1F5FA, 0x1F64F, LBP_ID }, 2170 { 0x1F5FA, 0x1F644, LBP_ID },
2171 { 0x1F645, 0x1F647, LBP_EB },
2172 { 0x1F648, 0x1F64A, LBP_ID },
2173 { 0x1F64B, 0x1F64F, LBP_EB },
2098 { 0x1F650, 0x1F675, LBP_AL }, 2174 { 0x1F650, 0x1F675, LBP_AL },
2099 { 0x1F676, 0x1F678, LBP_QU }, 2175 { 0x1F676, 0x1F678, LBP_QU },
2100 { 0x1F679, 0x1F67B, LBP_NS }, 2176 { 0x1F679, 0x1F67B, LBP_NS },
2101 { 0x1F67C, 0x1F67F, LBP_AL }, 2177 { 0x1F67C, 0x1F67F, LBP_AL },
2102 { 0x1F680, 0x1F6F3, LBP_ID }, 2178 { 0x1F680, 0x1F6A2, LBP_ID },
2103 { 0x1F700, 0x1F8AD, LBP_AL }, 2179 { 0x1F6A3, 0x1F6A3, LBP_EB },
2104 { 0x1F910, 0x3FFFD, LBP_ID }, 2180 { 0x1F6A4, 0x1F6B3, LBP_ID },
2181 { 0x1F6B4, 0x1F6B6, LBP_EB },
2182 { 0x1F6B7, 0x1F6BF, LBP_ID },
2183 { 0x1F6C0, 0x1F6C0, LBP_EB },
2184 { 0x1F6C1, 0x1F6FF, LBP_ID },
2185 { 0x1F700, 0x1F773, LBP_AL },
2186 { 0x1F774, 0x1F77F, LBP_ID },
2187 { 0x1F780, 0x1F7D4, LBP_AL },
2188 { 0x1F7D5, 0x1F7FF, LBP_ID },
2189 { 0x1F800, 0x1F80B, LBP_AL },
2190 { 0x1F80C, 0x1F80F, LBP_ID },
2191 { 0x1F810, 0x1F847, LBP_AL },
2192 { 0x1F848, 0x1F84F, LBP_ID },
2193 { 0x1F850, 0x1F859, LBP_AL },
2194 { 0x1F85A, 0x1F85F, LBP_ID },
2195 { 0x1F860, 0x1F887, LBP_AL },
2196 { 0x1F888, 0x1F88F, LBP_ID },
2197 { 0x1F890, 0x1F8AD, LBP_AL },
2198 { 0x1F8AE, 0x1F917, LBP_ID },
2199 { 0x1F918, 0x1F91E, LBP_EB },
2200 { 0x1F91F, 0x1F925, LBP_ID },
2201 { 0x1F926, 0x1F926, LBP_EB },
2202 { 0x1F927, 0x1F92F, LBP_ID },
2203 { 0x1F930, 0x1F930, LBP_EB },
2204 { 0x1F931, 0x1F932, LBP_ID },
2205 { 0x1F933, 0x1F939, LBP_EB },
2206 { 0x1F93A, 0x1F93B, LBP_ID },
2207 { 0x1F93C, 0x1F93E, LBP_EB },
2208 { 0x1F93F, 0x3FFFD, LBP_ID },
2105 { 0xE0001, 0xE01EF, LBP_CM }, 2209 { 0xE0001, 0xE01EF, LBP_CM },
2106 { 0xF0000, 0x10FFFD, LBP_XX }, 2210 { 0xF0000, 0x10FFFD, LBP_XX },
2107 { 0xFFFFFFFF, 0xFFFFFFFF, LBP_Undefined } 2211 { 0xFFFFFFFF, 0xFFFFFFFF, LBP_Undefined }
diff --git a/src/static_libs/libunibreak/linebreakdef.c b/src/static_libs/libunibreak/linebreakdef.c
index daa7cb5..04c3db3 100644
--- a/src/static_libs/libunibreak/linebreakdef.c
+++ b/src/static_libs/libunibreak/linebreakdef.c
@@ -4,7 +4,7 @@
4 * Line breaking in a Unicode sequence. Designed to be used in a 4 * Line breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2008-2015 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2016 Wu Yongwei <wuyongwei at gmail dot com>
8 * 8 *
9 * This software is provided 'as-is', without any express or implied 9 * This software is provided 'as-is', without any express or implied
10 * warranty. In no event will the author be held liable for any damages 10 * warranty. In no event will the author be held liable for any damages
@@ -30,9 +30,9 @@
30 * Unicode 5.0.0: 30 * Unicode 5.0.0:
31 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html> 31 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
32 * 32 *
33 * This library has been updated according to Revision 33, for 33 * This library has been updated according to Revision 37, for
34 * Unicode 7.0.0: 34 * Unicode 9.0.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-33.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-37.html>
36 * 36 *
37 * The Unicode Terms of Use are available at 37 * The Unicode Terms of Use are available at
38 * <URL:http://www.unicode.org/copyright.html> 38 * <URL:http://www.unicode.org/copyright.html>
@@ -43,7 +43,7 @@
43 * 43 *
44 * Definition of language-specific data. 44 * Definition of language-specific data.
45 * 45 *
46 * @version 3.0, 2015/05/10 46 * @version 3.1, 2016/09/10
47 * @author Wu Yongwei 47 * @author Wu Yongwei
48 */ 48 */
49 49
diff --git a/src/static_libs/libunibreak/linebreakdef.h b/src/static_libs/libunibreak/linebreakdef.h
index 5c32aef..9432ed3 100644
--- a/src/static_libs/libunibreak/linebreakdef.h
+++ b/src/static_libs/libunibreak/linebreakdef.h
@@ -4,7 +4,7 @@
4 * Line breaking in a Unicode sequence. Designed to be used in a 4 * Line breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2008-2015 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2016 Wu Yongwei <wuyongwei at gmail dot com>
8 * Copyright (C) 2013 Petr Filipsky <philodej at gmail dot com> 8 * Copyright (C) 2013 Petr Filipsky <philodej at gmail dot com>
9 * 9 *
10 * This software is provided 'as-is', without any express or implied 10 * This software is provided 'as-is', without any express or implied
@@ -31,9 +31,9 @@
31 * Unicode 5.0.0: 31 * Unicode 5.0.0:
32 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html> 32 * <URL:http://www.unicode.org/reports/tr14/tr14-19.html>
33 * 33 *
34 * This library has been updated according to Revision 33, for 34 * This library has been updated according to Revision 37, for
35 * Unicode 7.0.0: 35 * Unicode 9.0.0:
36 * <URL:http://www.unicode.org/reports/tr14/tr14-33.html> 36 * <URL:http://www.unicode.org/reports/tr14/tr14-37.html>
37 * 37 *
38 * The Unicode Terms of Use are available at 38 * The Unicode Terms of Use are available at
39 * <URL:http://www.unicode.org/copyright.html> 39 * <URL:http://www.unicode.org/copyright.html>
@@ -45,7 +45,7 @@
45 * Definitions of internal data structures, declarations of global 45 * Definitions of internal data structures, declarations of global
46 * variables, and function prototypes for the line breaking algorithm. 46 * variables, and function prototypes for the line breaking algorithm.
47 * 47 *
48 * @version 3.0, 2015/05/10 48 * @version 3.2, 2016/12/03
49 * @author Wu Yongwei 49 * @author Wu Yongwei
50 * @author Petr Filipsky 50 * @author Petr Filipsky
51 */ 51 */
@@ -91,11 +91,17 @@ enum LineBreakClass
91 LBP_JV, /**< Hangul V Jamo */ 91 LBP_JV, /**< Hangul V Jamo */
92 LBP_JT, /**< Hangul T Jamo */ 92 LBP_JT, /**< Hangul T Jamo */
93 LBP_RI, /**< Regional indicator */ 93 LBP_RI, /**< Regional indicator */
94 LBP_EB, /**< Emoji base */
95 LBP_EM, /**< Emoji modifier */
96 LBP_ZWJ, /**< Zero width joiner */
97
98 /* The following break class is treated in the pair table, but it is
99 * not part of Table 2 of UAX #14. */
100 LBP_CB, /**< Contingent break */
94 101
95 /* The following break classes are not treated in the pair table */ 102 /* The following break classes are not treated in the pair table */
96 LBP_AI, /**< Ambiguous (alphabetic or ideograph) */ 103 LBP_AI, /**< Ambiguous (alphabetic or ideograph) */
97 LBP_BK, /**< Break (mandatory) */ 104 LBP_BK, /**< Break (mandatory) */
98 LBP_CB, /**< Contingent break */
99 LBP_CJ, /**< Conditional Japanese starter */ 105 LBP_CJ, /**< Conditional Japanese starter */
100 LBP_CR, /**< Carriage return */ 106 LBP_CR, /**< Carriage return */
101 LBP_LF, /**< Line feed */ 107 LBP_LF, /**< Line feed */
@@ -123,9 +129,9 @@ struct LineBreakProperties
123 */ 129 */
124struct LineBreakPropertiesLang 130struct LineBreakPropertiesLang
125{ 131{
126 const char *lang; /**< Language name */ 132 const char *lang; /**< Language name */
127 size_t namelen; /**< Length of name to match */ 133 size_t namelen; /**< Length of name to match */
128 const struct LineBreakProperties *lbp; /**< Pointer to associated data */ 134 const struct LineBreakProperties *lbp; /**< Pointer to associated data */
129}; 135};
130 136
131/** 137/**
@@ -140,6 +146,7 @@ struct LineBreakContext
140 enum LineBreakClass lbcNew; /**< Breaking class of next codepoint */ 146 enum LineBreakClass lbcNew; /**< Breaking class of next codepoint */
141 enum LineBreakClass lbcLast; /**< Breaking class of last codepoint */ 147 enum LineBreakClass lbcLast; /**< Breaking class of last codepoint */
142 int fLb21aHebrew; /**< Flag for Hebrew letters (LB21a) */ 148 int fLb21aHebrew; /**< Flag for Hebrew letters (LB21a) */
149 int cLb30aRI; /**< Count of RI characters (LB30a) */
143}; 150};
144 151
145/* Declarations */ 152/* Declarations */
diff --git a/src/static_libs/libunibreak/wordbreak.c b/src/static_libs/libunibreak/wordbreak.c
index a0d1c43..063badc 100644
--- a/src/static_libs/libunibreak/wordbreak.c
+++ b/src/static_libs/libunibreak/wordbreak.c
@@ -162,6 +162,8 @@ static void set_wordbreaks(
162 char *brks, 162 char *brks,
163 get_next_char_t get_next_char) 163 get_next_char_t get_next_char)
164{ 164{
165 /* Counter of how many time we cam across RI */
166 int riCounter = 0;
165 enum WordBreakClass wbcLast = WBP_Undefined; 167 enum WordBreakClass wbcLast = WBP_Undefined;
166 /* wbcSeqStart is the class that started the current sequence. 168 /* wbcSeqStart is the class that started the current sequence.
167 * WBP_Undefined is a special case that means "sot". 169 * WBP_Undefined is a special case that means "sot".
@@ -218,6 +220,25 @@ static void set_wordbreaks(
218 posLast = posCur; 220 posLast = posCur;
219 break; 221 break;
220 222
223 case WBP_E_Base_GAZ:
224 case WBP_Glue_After_Zwj:
225 /* WB3c */
226 if (wbcLast == WBP_ZWJ)
227 {
228 set_brks_to(s, brks, posLast, posCur, len,
229 WORDBREAK_NOBREAK, get_next_char);
230 }
231 /* No rule found, reset */
232 else
233 {
234 set_brks_to(s, brks, posLast, posCur, len,
235 WORDBREAK_BREAK, get_next_char);
236 }
237 wbcSeqStart = wbcCur;
238 posLast = posCur;
239 break;
240
241 case WBP_ZWJ:
221 case WBP_Extend: 242 case WBP_Extend:
222 case WBP_Format: 243 case WBP_Format:
223 /* WB4 - If not the first char/after a newline (WB3a,3b), skip 244 /* WB4 - If not the first char/after a newline (WB3a,3b), skip
@@ -228,13 +249,18 @@ static void set_wordbreaks(
228 set_brks_to(s, brks, posLast, posCur, len, 249 set_brks_to(s, brks, posLast, posCur, len,
229 WORDBREAK_BREAK, get_next_char); 250 WORDBREAK_BREAK, get_next_char);
230 wbcSeqStart = wbcCur; 251 wbcSeqStart = wbcCur;
252 posLast = posCur;
231 } 253 }
232 else 254 else
233 { 255 {
234 /* It's surely not the first */ 256 /* It's surely not the first */
235 brks[posCur - 1] = WORDBREAK_NOBREAK; 257 brks[posCur - 1] = WORDBREAK_NOBREAK;
236 /* "inherit" the previous class. */ 258 /* WB3c precedes 4, so no intervening Extend chars allowed. */
237 wbcCur = wbcLast; 259 if (wbcSeqStart != WBP_ZWJ)
260 {
261 /* "inherit" the previous class. */
262 wbcCur = wbcLast;
263 }
238 } 264 }
239 break; 265 break;
240 266
@@ -384,13 +410,48 @@ static void set_wordbreaks(
384 posLast = posCur; 410 posLast = posCur;
385 break; 411 break;
386 412
387 case WBP_Regional_Indicator: 413 case WBP_E_Base:
388 /* WB13c */ 414 /* No rule found, reset */
389 if (wbcSeqStart == WBP_Regional_Indicator) 415 set_brks_to(s, brks, posLast, posCur, len,
416 WORDBREAK_BREAK, get_next_char);
417 wbcSeqStart = wbcCur;
418 posLast = posCur;
419 break;
420
421 case WBP_E_Modifier:
422 /* WB14 */
423 if ((wbcLast == WBP_E_Base) ||
424 (wbcLast == WBP_E_Base_GAZ))
390 { 425 {
391 set_brks_to(s, brks, posLast, posCur, len, 426 set_brks_to(s, brks, posLast, posCur, len,
392 WORDBREAK_NOBREAK, get_next_char); 427 WORDBREAK_NOBREAK, get_next_char);
393 } 428 }
429 /* No rule found, reset */
430 else
431 {
432 set_brks_to(s, brks, posLast, posCur, len,
433 WORDBREAK_BREAK, get_next_char);
434 }
435 wbcSeqStart = wbcCur;
436 posLast = posCur;
437 break;
438
439 case WBP_Regional_Indicator:
440 /* WB15,16 */
441 if ((wbcSeqStart == WBP_Regional_Indicator) &&
442 ((riCounter % 2) == 1))
443 {
444 set_brks_to(s, brks, posLast, posCur, len,
445 WORDBREAK_NOBREAK, get_next_char);
446 riCounter = 0; /* Reset the sequence */
447 }
448 /* No rule found, reset */
449 else
450 {
451 set_brks_to(s, brks, posLast, posCur, len,
452 WORDBREAK_BREAK, get_next_char);
453 riCounter = 1;
454 }
394 wbcSeqStart = wbcCur; 455 wbcSeqStart = wbcCur;
395 posLast = posCur; 456 posLast = posCur;
396 break; 457 break;
diff --git a/src/static_libs/libunibreak/wordbreakdata.c b/src/static_libs/libunibreak/wordbreakdata.c
index 9049f59..99fcff5 100644
--- a/src/static_libs/libunibreak/wordbreakdata.c
+++ b/src/static_libs/libunibreak/wordbreakdata.c
@@ -1,6 +1,6 @@
1/* The content of this file is generated from: 1/* The content of this file is generated from:
2# WordBreakProperty-8.0.0.txt 2# WordBreakProperty-9.0.0.txt
3# Date: 2015-02-14, 10:26:15 GMT [MD] 3# Date: 2016-06-01, 10:34:38 GMT
4*/ 4*/
5 5
6#include "wordbreakdef.h" 6#include "wordbreakdef.h"
@@ -121,6 +121,9 @@ static const struct WordBreakProperties wb_prop_default[] = {
121 {0x0840, 0x0858, WBP_ALetter}, 121 {0x0840, 0x0858, WBP_ALetter},
122 {0x0859, 0x085B, WBP_Extend}, 122 {0x0859, 0x085B, WBP_Extend},
123 {0x08A0, 0x08B4, WBP_ALetter}, 123 {0x08A0, 0x08B4, WBP_ALetter},
124 {0x08B6, 0x08BD, WBP_ALetter},
125 {0x08D4, 0x08E1, WBP_Extend},
126 {0x08E2, 0x08E2, WBP_Format},
124 {0x08E3, 0x0902, WBP_Extend}, 127 {0x08E3, 0x0902, WBP_Extend},
125 {0x0903, 0x0903, WBP_Extend}, 128 {0x0903, 0x0903, WBP_Extend},
126 {0x0904, 0x0939, WBP_ALetter}, 129 {0x0904, 0x0939, WBP_ALetter},
@@ -264,6 +267,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
264 {0x0C60, 0x0C61, WBP_ALetter}, 267 {0x0C60, 0x0C61, WBP_ALetter},
265 {0x0C62, 0x0C63, WBP_Extend}, 268 {0x0C62, 0x0C63, WBP_Extend},
266 {0x0C66, 0x0C6F, WBP_Numeric}, 269 {0x0C66, 0x0C6F, WBP_Numeric},
270 {0x0C80, 0x0C80, WBP_ALetter},
267 {0x0C81, 0x0C81, WBP_Extend}, 271 {0x0C81, 0x0C81, WBP_Extend},
268 {0x0C82, 0x0C83, WBP_Extend}, 272 {0x0C82, 0x0C83, WBP_Extend},
269 {0x0C85, 0x0C8C, WBP_ALetter}, 273 {0x0C85, 0x0C8C, WBP_ALetter},
@@ -298,6 +302,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
298 {0x0D4A, 0x0D4C, WBP_Extend}, 302 {0x0D4A, 0x0D4C, WBP_Extend},
299 {0x0D4D, 0x0D4D, WBP_Extend}, 303 {0x0D4D, 0x0D4D, WBP_Extend},
300 {0x0D4E, 0x0D4E, WBP_ALetter}, 304 {0x0D4E, 0x0D4E, WBP_ALetter},
305 {0x0D54, 0x0D56, WBP_ALetter},
301 {0x0D57, 0x0D57, WBP_Extend}, 306 {0x0D57, 0x0D57, WBP_Extend},
302 {0x0D5F, 0x0D61, WBP_ALetter}, 307 {0x0D5F, 0x0D61, WBP_ALetter},
303 {0x0D62, 0x0D63, WBP_Extend}, 308 {0x0D62, 0x0D63, WBP_Extend},
@@ -422,7 +427,9 @@ static const struct WordBreakProperties wb_prop_default[] = {
422 {0x1820, 0x1842, WBP_ALetter}, 427 {0x1820, 0x1842, WBP_ALetter},
423 {0x1843, 0x1843, WBP_ALetter}, 428 {0x1843, 0x1843, WBP_ALetter},
424 {0x1844, 0x1877, WBP_ALetter}, 429 {0x1844, 0x1877, WBP_ALetter},
425 {0x1880, 0x18A8, WBP_ALetter}, 430 {0x1880, 0x1884, WBP_ALetter},
431 {0x1885, 0x1886, WBP_Extend},
432 {0x1887, 0x18A8, WBP_ALetter},
426 {0x18A9, 0x18A9, WBP_Extend}, 433 {0x18A9, 0x18A9, WBP_Extend},
427 {0x18AA, 0x18AA, WBP_ALetter}, 434 {0x18AA, 0x18AA, WBP_ALetter},
428 {0x18B0, 0x18F5, WBP_ALetter}, 435 {0x18B0, 0x18F5, WBP_ALetter},
@@ -501,6 +508,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
501 {0x1C50, 0x1C59, WBP_Numeric}, 508 {0x1C50, 0x1C59, WBP_Numeric},
502 {0x1C5A, 0x1C77, WBP_ALetter}, 509 {0x1C5A, 0x1C77, WBP_ALetter},
503 {0x1C78, 0x1C7D, WBP_ALetter}, 510 {0x1C78, 0x1C7D, WBP_ALetter},
511 {0x1C80, 0x1C88, WBP_ALetter},
504 {0x1CD0, 0x1CD2, WBP_Extend}, 512 {0x1CD0, 0x1CD2, WBP_Extend},
505 {0x1CD4, 0x1CE0, WBP_Extend}, 513 {0x1CD4, 0x1CE0, WBP_Extend},
506 {0x1CE1, 0x1CE1, WBP_Extend}, 514 {0x1CE1, 0x1CE1, WBP_Extend},
@@ -519,7 +527,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
519 {0x1D79, 0x1D9A, WBP_ALetter}, 527 {0x1D79, 0x1D9A, WBP_ALetter},
520 {0x1D9B, 0x1DBF, WBP_ALetter}, 528 {0x1D9B, 0x1DBF, WBP_ALetter},
521 {0x1DC0, 0x1DF5, WBP_Extend}, 529 {0x1DC0, 0x1DF5, WBP_Extend},
522 {0x1DFC, 0x1DFF, WBP_Extend}, 530 {0x1DFB, 0x1DFF, WBP_Extend},
523 {0x1E00, 0x1F15, WBP_ALetter}, 531 {0x1E00, 0x1F15, WBP_ALetter},
524 {0x1F18, 0x1F1D, WBP_ALetter}, 532 {0x1F18, 0x1F1D, WBP_ALetter},
525 {0x1F20, 0x1F45, WBP_ALetter}, 533 {0x1F20, 0x1F45, WBP_ALetter},
@@ -539,7 +547,8 @@ static const struct WordBreakProperties wb_prop_default[] = {
539 {0x1FE0, 0x1FEC, WBP_ALetter}, 547 {0x1FE0, 0x1FEC, WBP_ALetter},
540 {0x1FF2, 0x1FF4, WBP_ALetter}, 548 {0x1FF2, 0x1FF4, WBP_ALetter},
541 {0x1FF6, 0x1FFC, WBP_ALetter}, 549 {0x1FF6, 0x1FFC, WBP_ALetter},
542 {0x200C, 0x200D, WBP_Extend}, 550 {0x200C, 0x200C, WBP_Extend},
551 {0x200D, 0x200D, WBP_ZWJ},
543 {0x200E, 0x200F, WBP_Format}, 552 {0x200E, 0x200F, WBP_Format},
544 {0x2018, 0x2018, WBP_MidNumLet}, 553 {0x2018, 0x2018, WBP_MidNumLet},
545 {0x2019, 0x2019, WBP_MidNumLet}, 554 {0x2019, 0x2019, WBP_MidNumLet},
@@ -548,6 +557,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
548 {0x2028, 0x2028, WBP_Newline}, 557 {0x2028, 0x2028, WBP_Newline},
549 {0x2029, 0x2029, WBP_Newline}, 558 {0x2029, 0x2029, WBP_Newline},
550 {0x202A, 0x202E, WBP_Format}, 559 {0x202A, 0x202E, WBP_Format},
560 {0x202F, 0x202F, WBP_ExtendNumLet},
551 {0x203F, 0x2040, WBP_ExtendNumLet}, 561 {0x203F, 0x2040, WBP_ExtendNumLet},
552 {0x2044, 0x2044, WBP_MidNum}, 562 {0x2044, 0x2044, WBP_MidNum},
553 {0x2054, 0x2054, WBP_ExtendNumLet}, 563 {0x2054, 0x2054, WBP_ExtendNumLet},
@@ -580,6 +590,10 @@ static const struct WordBreakProperties wb_prop_default[] = {
580 {0x2183, 0x2184, WBP_ALetter}, 590 {0x2183, 0x2184, WBP_ALetter},
581 {0x2185, 0x2188, WBP_ALetter}, 591 {0x2185, 0x2188, WBP_ALetter},
582 {0x24B6, 0x24E9, WBP_ALetter}, 592 {0x24B6, 0x24E9, WBP_ALetter},
593 {0x261D, 0x261D, WBP_E_Base},
594 {0x26F9, 0x26F9, WBP_E_Base},
595 {0x270A, 0x270D, WBP_E_Base},
596 {0x2764, 0x2764, WBP_Glue_After_Zwj},
583 {0x2C00, 0x2C2E, WBP_ALetter}, 597 {0x2C00, 0x2C2E, WBP_ALetter},
584 {0x2C30, 0x2C5E, WBP_ALetter}, 598 {0x2C30, 0x2C5E, WBP_ALetter},
585 {0x2C60, 0x2C7B, WBP_ALetter}, 599 {0x2C60, 0x2C7B, WBP_ALetter},
@@ -652,7 +666,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
652 {0xA788, 0xA788, WBP_ALetter}, 666 {0xA788, 0xA788, WBP_ALetter},
653 {0xA78B, 0xA78E, WBP_ALetter}, 667 {0xA78B, 0xA78E, WBP_ALetter},
654 {0xA78F, 0xA78F, WBP_ALetter}, 668 {0xA78F, 0xA78F, WBP_ALetter},
655 {0xA790, 0xA7AD, WBP_ALetter}, 669 {0xA790, 0xA7AE, WBP_ALetter},
656 {0xA7B0, 0xA7B7, WBP_ALetter}, 670 {0xA7B0, 0xA7B7, WBP_ALetter},
657 {0xA7F7, 0xA7F7, WBP_ALetter}, 671 {0xA7F7, 0xA7F7, WBP_ALetter},
658 {0xA7F8, 0xA7F9, WBP_ALetter}, 672 {0xA7F8, 0xA7F9, WBP_ALetter},
@@ -671,7 +685,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
671 {0xA880, 0xA881, WBP_Extend}, 685 {0xA880, 0xA881, WBP_Extend},
672 {0xA882, 0xA8B3, WBP_ALetter}, 686 {0xA882, 0xA8B3, WBP_ALetter},
673 {0xA8B4, 0xA8C3, WBP_Extend}, 687 {0xA8B4, 0xA8C3, WBP_Extend},
674 {0xA8C4, 0xA8C4, WBP_Extend}, 688 {0xA8C4, 0xA8C5, WBP_Extend},
675 {0xA8D0, 0xA8D9, WBP_Numeric}, 689 {0xA8D0, 0xA8D9, WBP_Numeric},
676 {0xA8E0, 0xA8F1, WBP_Extend}, 690 {0xA8E0, 0xA8F1, WBP_Extend},
677 {0xA8F2, 0xA8F7, WBP_ALetter}, 691 {0xA8F2, 0xA8F7, WBP_ALetter},
@@ -820,6 +834,8 @@ static const struct WordBreakProperties wb_prop_default[] = {
820 {0x10400, 0x1044F, WBP_ALetter}, 834 {0x10400, 0x1044F, WBP_ALetter},
821 {0x10450, 0x1049D, WBP_ALetter}, 835 {0x10450, 0x1049D, WBP_ALetter},
822 {0x104A0, 0x104A9, WBP_Numeric}, 836 {0x104A0, 0x104A9, WBP_Numeric},
837 {0x104B0, 0x104D3, WBP_ALetter},
838 {0x104D8, 0x104FB, WBP_ALetter},
823 {0x10500, 0x10527, WBP_ALetter}, 839 {0x10500, 0x10527, WBP_ALetter},
824 {0x10530, 0x10563, WBP_ALetter}, 840 {0x10530, 0x10563, WBP_ALetter},
825 {0x10600, 0x10736, WBP_ALetter}, 841 {0x10600, 0x10736, WBP_ALetter},
@@ -904,6 +920,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
904 {0x11234, 0x11234, WBP_Extend}, 920 {0x11234, 0x11234, WBP_Extend},
905 {0x11235, 0x11235, WBP_Extend}, 921 {0x11235, 0x11235, WBP_Extend},
906 {0x11236, 0x11237, WBP_Extend}, 922 {0x11236, 0x11237, WBP_Extend},
923 {0x1123E, 0x1123E, WBP_Extend},
907 {0x11280, 0x11286, WBP_ALetter}, 924 {0x11280, 0x11286, WBP_ALetter},
908 {0x11288, 0x11288, WBP_ALetter}, 925 {0x11288, 0x11288, WBP_ALetter},
909 {0x1128A, 0x1128D, WBP_ALetter}, 926 {0x1128A, 0x1128D, WBP_ALetter},
@@ -935,6 +952,15 @@ static const struct WordBreakProperties wb_prop_default[] = {
935 {0x11362, 0x11363, WBP_Extend}, 952 {0x11362, 0x11363, WBP_Extend},
936 {0x11366, 0x1136C, WBP_Extend}, 953 {0x11366, 0x1136C, WBP_Extend},
937 {0x11370, 0x11374, WBP_Extend}, 954 {0x11370, 0x11374, WBP_Extend},
955 {0x11400, 0x11434, WBP_ALetter},
956 {0x11435, 0x11437, WBP_Extend},
957 {0x11438, 0x1143F, WBP_Extend},
958 {0x11440, 0x11441, WBP_Extend},
959 {0x11442, 0x11444, WBP_Extend},
960 {0x11445, 0x11445, WBP_Extend},
961 {0x11446, 0x11446, WBP_Extend},
962 {0x11447, 0x1144A, WBP_ALetter},
963 {0x11450, 0x11459, WBP_Numeric},
938 {0x11480, 0x114AF, WBP_ALetter}, 964 {0x11480, 0x114AF, WBP_ALetter},
939 {0x114B0, 0x114B2, WBP_Extend}, 965 {0x114B0, 0x114B2, WBP_Extend},
940 {0x114B3, 0x114B8, WBP_Extend}, 966 {0x114B3, 0x114B8, WBP_Extend},
@@ -984,6 +1010,23 @@ static const struct WordBreakProperties wb_prop_default[] = {
984 {0x118E0, 0x118E9, WBP_Numeric}, 1010 {0x118E0, 0x118E9, WBP_Numeric},
985 {0x118FF, 0x118FF, WBP_ALetter}, 1011 {0x118FF, 0x118FF, WBP_ALetter},
986 {0x11AC0, 0x11AF8, WBP_ALetter}, 1012 {0x11AC0, 0x11AF8, WBP_ALetter},
1013 {0x11C00, 0x11C08, WBP_ALetter},
1014 {0x11C0A, 0x11C2E, WBP_ALetter},
1015 {0x11C2F, 0x11C2F, WBP_Extend},
1016 {0x11C30, 0x11C36, WBP_Extend},
1017 {0x11C38, 0x11C3D, WBP_Extend},
1018 {0x11C3E, 0x11C3E, WBP_Extend},
1019 {0x11C3F, 0x11C3F, WBP_Extend},
1020 {0x11C40, 0x11C40, WBP_ALetter},
1021 {0x11C50, 0x11C59, WBP_Numeric},
1022 {0x11C72, 0x11C8F, WBP_ALetter},
1023 {0x11C92, 0x11CA7, WBP_Extend},
1024 {0x11CA9, 0x11CA9, WBP_Extend},
1025 {0x11CAA, 0x11CB0, WBP_Extend},
1026 {0x11CB1, 0x11CB1, WBP_Extend},
1027 {0x11CB2, 0x11CB3, WBP_Extend},
1028 {0x11CB4, 0x11CB4, WBP_Extend},
1029 {0x11CB5, 0x11CB6, WBP_Extend},
987 {0x12000, 0x12399, WBP_ALetter}, 1030 {0x12000, 0x12399, WBP_ALetter},
988 {0x12400, 0x1246E, WBP_ALetter}, 1031 {0x12400, 0x1246E, WBP_ALetter},
989 {0x12480, 0x12543, WBP_ALetter}, 1032 {0x12480, 0x12543, WBP_ALetter},
@@ -1005,6 +1048,7 @@ static const struct WordBreakProperties wb_prop_default[] = {
1005 {0x16F51, 0x16F7E, WBP_Extend}, 1048 {0x16F51, 0x16F7E, WBP_Extend},
1006 {0x16F8F, 0x16F92, WBP_Extend}, 1049 {0x16F8F, 0x16F92, WBP_Extend},
1007 {0x16F93, 0x16F9F, WBP_ALetter}, 1050 {0x16F93, 0x16F9F, WBP_ALetter},
1051 {0x16FE0, 0x16FE0, WBP_ALetter},
1008 {0x1B000, 0x1B000, WBP_Katakana}, 1052 {0x1B000, 0x1B000, WBP_Katakana},
1009 {0x1BC00, 0x1BC6A, WBP_ALetter}, 1053 {0x1BC00, 0x1BC6A, WBP_ALetter},
1010 {0x1BC70, 0x1BC7C, WBP_ALetter}, 1054 {0x1BC70, 0x1BC7C, WBP_ALetter},
@@ -1057,8 +1101,16 @@ static const struct WordBreakProperties wb_prop_default[] = {
1057 {0x1DA84, 0x1DA84, WBP_Extend}, 1101 {0x1DA84, 0x1DA84, WBP_Extend},
1058 {0x1DA9B, 0x1DA9F, WBP_Extend}, 1102 {0x1DA9B, 0x1DA9F, WBP_Extend},
1059 {0x1DAA1, 0x1DAAF, WBP_Extend}, 1103 {0x1DAA1, 0x1DAAF, WBP_Extend},
1104 {0x1E000, 0x1E006, WBP_Extend},
1105 {0x1E008, 0x1E018, WBP_Extend},
1106 {0x1E01B, 0x1E021, WBP_Extend},
1107 {0x1E023, 0x1E024, WBP_Extend},
1108 {0x1E026, 0x1E02A, WBP_Extend},
1060 {0x1E800, 0x1E8C4, WBP_ALetter}, 1109 {0x1E800, 0x1E8C4, WBP_ALetter},
1061 {0x1E8D0, 0x1E8D6, WBP_Extend}, 1110 {0x1E8D0, 0x1E8D6, WBP_Extend},
1111 {0x1E900, 0x1E943, WBP_ALetter},
1112 {0x1E944, 0x1E94A, WBP_Extend},
1113 {0x1E950, 0x1E959, WBP_Numeric},
1062 {0x1EE00, 0x1EE03, WBP_ALetter}, 1114 {0x1EE00, 0x1EE03, WBP_ALetter},
1063 {0x1EE05, 0x1EE1F, WBP_ALetter}, 1115 {0x1EE05, 0x1EE1F, WBP_ALetter},
1064 {0x1EE21, 0x1EE22, WBP_ALetter}, 1116 {0x1EE21, 0x1EE22, WBP_ALetter},
@@ -1096,8 +1148,37 @@ static const struct WordBreakProperties wb_prop_default[] = {
1096 {0x1F150, 0x1F169, WBP_ALetter}, 1148 {0x1F150, 0x1F169, WBP_ALetter},
1097 {0x1F170, 0x1F189, WBP_ALetter}, 1149 {0x1F170, 0x1F189, WBP_ALetter},
1098 {0x1F1E6, 0x1F1FF, WBP_Regional_Indicator}, 1150 {0x1F1E6, 0x1F1FF, WBP_Regional_Indicator},
1151 {0x1F385, 0x1F385, WBP_E_Base},
1152 {0x1F3C3, 0x1F3C4, WBP_E_Base},
1153 {0x1F3CA, 0x1F3CB, WBP_E_Base},
1154 {0x1F3FB, 0x1F3FF, WBP_E_Modifier},
1155 {0x1F442, 0x1F443, WBP_E_Base},
1156 {0x1F446, 0x1F450, WBP_E_Base},
1157 {0x1F466, 0x1F469, WBP_E_Base_GAZ},
1158 {0x1F46E, 0x1F46E, WBP_E_Base},
1159 {0x1F470, 0x1F478, WBP_E_Base},
1160 {0x1F47C, 0x1F47C, WBP_E_Base},
1161 {0x1F481, 0x1F483, WBP_E_Base},
1162 {0x1F485, 0x1F487, WBP_E_Base},
1163 {0x1F48B, 0x1F48B, WBP_Glue_After_Zwj},
1164 {0x1F4AA, 0x1F4AA, WBP_E_Base},
1165 {0x1F575, 0x1F575, WBP_E_Base},
1166 {0x1F57A, 0x1F57A, WBP_E_Base},
1167 {0x1F590, 0x1F590, WBP_E_Base},
1168 {0x1F595, 0x1F596, WBP_E_Base},
1169 {0x1F5E8, 0x1F5E8, WBP_Glue_After_Zwj},
1170 {0x1F645, 0x1F647, WBP_E_Base},
1171 {0x1F64B, 0x1F64F, WBP_E_Base},
1172 {0x1F6A3, 0x1F6A3, WBP_E_Base},
1173 {0x1F6B4, 0x1F6B6, WBP_E_Base},
1174 {0x1F6C0, 0x1F6C0, WBP_E_Base},
1175 {0x1F918, 0x1F91E, WBP_E_Base},
1176 {0x1F926, 0x1F926, WBP_E_Base},
1177 {0x1F930, 0x1F930, WBP_E_Base},
1178 {0x1F933, 0x1F939, WBP_E_Base},
1179 {0x1F93C, 0x1F93E, WBP_E_Base},
1099 {0xE0001, 0xE0001, WBP_Format}, 1180 {0xE0001, 0xE0001, WBP_Format},
1100 {0xE0020, 0xE007F, WBP_Format}, 1181 {0xE0020, 0xE007F, WBP_Extend},
1101 {0xE0100, 0xE01EF, WBP_Extend}, 1182 {0xE0100, 0xE01EF, WBP_Extend},
1102 {0xFFFFFFFF, 0xFFFFFFFF, WBP_Undefined} 1183 {0xFFFFFFFF, 0xFFFFFFFF, WBP_Undefined}
1103}; 1184};
diff --git a/src/static_libs/libunibreak/wordbreakdef.h b/src/static_libs/libunibreak/wordbreakdef.h
index ab3cea1..b00aff3 100644
--- a/src/static_libs/libunibreak/wordbreakdef.h
+++ b/src/static_libs/libunibreak/wordbreakdef.h
@@ -61,6 +61,7 @@ enum WordBreakClass
61 WBP_LF, 61 WBP_LF,
62 WBP_Newline, 62 WBP_Newline,
63 WBP_Extend, 63 WBP_Extend,
64 WBP_ZWJ,
64 WBP_Regional_Indicator, 65 WBP_Regional_Indicator,
65 WBP_Format, 66 WBP_Format,
66 WBP_Katakana, 67 WBP_Katakana,
@@ -73,6 +74,10 @@ enum WordBreakClass
73 WBP_MidNum, 74 WBP_MidNum,
74 WBP_Numeric, 75 WBP_Numeric,
75 WBP_ExtendNumLet, 76 WBP_ExtendNumLet,
77 WBP_E_Base,
78 WBP_E_Modifier,
79 WBP_Glue_After_Zwj,
80 WBP_E_Base_GAZ,
76 WBP_Any 81 WBP_Any
77}; 82};
78 83