summaryrefslogtreecommitdiff
path: root/src/static_libs
diff options
context:
space:
mode:
authorTom Hacohen <tom@stosb.com>2013-01-11 18:16:09 +0000
committerTom Hacohen <tom@stosb.com>2013-01-11 18:16:09 +0000
commit88ab486e6332ffe3d789e2435ee9a78751f88bf0 (patch)
tree2a2a13369b92122ff157952cb7359f8a4e95a42e /src/static_libs
parentd83b83e10befda5a8065069a3152846decf91aa3 (diff)
Efl static_libs: Updated liblinebreak -> libunibreak.
SVN revision: 82652
Diffstat (limited to 'src/static_libs')
-rw-r--r--src/static_libs/libunibreak/AUTHORS (renamed from src/static_libs/liblinebreak/AUTHORS)0
-rw-r--r--src/static_libs/libunibreak/ChangeLog (renamed from src/static_libs/liblinebreak/ChangeLog)191
-rw-r--r--src/static_libs/libunibreak/LICENCE (renamed from src/static_libs/liblinebreak/LICENCE)3
-rw-r--r--src/static_libs/libunibreak/NEWS (renamed from src/static_libs/liblinebreak/NEWS)20
-rw-r--r--src/static_libs/libunibreak/README (renamed from src/static_libs/liblinebreak/README)32
-rw-r--r--src/static_libs/libunibreak/linebreak.c (renamed from src/static_libs/liblinebreak/linebreak.c)186
-rw-r--r--src/static_libs/libunibreak/linebreak.h (renamed from src/static_libs/liblinebreak/linebreak.h)12
-rw-r--r--src/static_libs/libunibreak/linebreakdata.c (renamed from src/static_libs/liblinebreak/linebreakdata.c)225
-rw-r--r--src/static_libs/libunibreak/linebreakdef.c (renamed from src/static_libs/liblinebreak/linebreakdef.c)10
-rw-r--r--src/static_libs/libunibreak/linebreakdef.h (renamed from src/static_libs/liblinebreak/linebreakdef.h)15
-rw-r--r--src/static_libs/libunibreak/wordbreak.c (renamed from src/static_libs/liblinebreak/wordbreak.c)268
-rw-r--r--src/static_libs/libunibreak/wordbreak.h (renamed from src/static_libs/liblinebreak/wordbreak.h)12
-rw-r--r--src/static_libs/libunibreak/wordbreakdata.c (renamed from src/static_libs/liblinebreak/wordbreakdata.x)2
-rw-r--r--src/static_libs/libunibreak/wordbreakdef.h (renamed from src/static_libs/liblinebreak/wordbreakdef.h)6
14 files changed, 669 insertions, 313 deletions
diff --git a/src/static_libs/liblinebreak/AUTHORS b/src/static_libs/libunibreak/AUTHORS
index 22786d4..22786d4 100644
--- a/src/static_libs/liblinebreak/AUTHORS
+++ b/src/static_libs/libunibreak/AUTHORS
diff --git a/src/static_libs/liblinebreak/ChangeLog b/src/static_libs/libunibreak/ChangeLog
index 8255c10..7d5e3b6 100644
--- a/src/static_libs/liblinebreak/ChangeLog
+++ b/src/static_libs/libunibreak/ChangeLog
@@ -1,3 +1,194 @@
12012-10-06 Wu Yongwei <wuyongwei@gmail.com>
2
3 Update files according to UAX #14-30, for Unicode 6.2.0.
4 * README: Update the reference to UAX #14-30.
5 * src/linebreak.c (baTable): Update for the new class `RI'.
6 * src/linebreak.h (LINEBREAK_VERSION): Set to 0x0202.
7 * src/linebreakdef.h (LBP_RI): New enumerator for the new class `RI'
8 as defined in UAX #14-30.
9 * src/linebreakdata.c: Regenerate from LineBreak-6.2.0.txt.
10
112012-10-06 Wu Yongwei <wuyongwei@gmail.com>
12
13 * src/linebreak.c (baTable): Correct the issue that one column was
14 missing in the table.
15
162012-10-06 Wu Yongwei <wuyongwei@gmail.com>
17
18 * README: Update to reflect the recent changes.
19
202012-10-06 Wu Yongwei <wuyongwei@gmail.com>
21
22 Make `make linebreakdata' and `make wordbreakdata' work again.
23 * src/Makefile.am (EXTRA_DIST): Add missing `filter_dup.c'.
24 (linebreakdata): New make target.
25 (wordbreakdata): New make target.
26
272012-10-06 Wu Yongwei <wuyongwei@gmail.com>
28
29 Make `make dist' work again after the directory adjustment.
30 * Doxyfile (INPUT): Change to `src'.
31 (FILE_PATTERNS): Set to `*.c *.h'.
32 * Makefile.am (EXTRA_DIST): Move content from src/Makefile.am.
33 (doc): Move target from src/Makefile.am.
34 * src/Makefile.am (EXTRA_DIST): Move partial content to Makefile.am.
35 (doc): Move target to Makefile.am.
36
372012-09-16 Wu Yongwei <wuyongwei@gmail.com>
38
39 Update files according to UAX #14-28, for Unicode 6.1.0.
40 * README: Update the reference to UAX #14-28.
41 * src/linebreak.c (baTable): Update for the new class `HL'.
42 (resolve_lb_class): Resolve the new class `CJ' to `ID' (simplified).
43 * src/linebreakdef.h (LBP_HL): New enumerator for the new class `HL'
44 as defined in UAX #14-28.
45 (LBP_CJ): New enumerator for the new class `CJ' as defined in
46 UAX #14-28.
47 * src/linebreakdata.c: Regenerate from LineBreak-6.1.0.txt.
48
492012-08-13 Tom Hacohen <tom@stosb.com>
50
51 Move source files to under src.
52 * Makefile.am: Split from original Makefile.am.
53 (SUBDIRS): Add `src'.
54 * configure.ac (AC_CONFIG_SRCDIR): Add `src/' before `linebreak.c'.
55 (AC_CONFIG_FILES): Add `src/Makefile'.
56 * src/LineBreak1.sed: Move from LineBreak1.sed.
57 * src/LineBreak2.sed: Move from LineBreak2.sed.
58 * src/Makefile.am: Split from Makefile.am
59 * src/Makefile.gcc: Move from Makefile.gcc.
60 * src/Makefile.msvc: Move from Makefile.msvc.
61 * src/filter_dup.c: Move from filter_dup.c.
62 * src/linebreak.c: Move from linebreak.c.
63 * src/linebreak.h: Move from linebreak.h.
64 * src/linebreakdata.c: Move from linebreakdata.c.
65 * src/linebreakdata1.tmpl: Move from linebreakdata1.tmpl.
66 * src/linebreakdata2.tmpl: Move from linebreakdata2.tmpl.
67 * src/linebreakdata3.tmpl: Move from linebreakdata3.tmpl.
68 * src/linebreakdef.c: Move from linebreakdef.c.
69 * src/linebreakdef.h: Move from linebreakdef.h.
70 * src/sort_numeric_hex.py: Move from sort_numeric_hex.py.
71 * src/wordbreak.c: Move from wordbreak.c.
72 * src/wordbreak.h: Move from wordbreak.h.
73 * src/wordbreakdata.c: Move from wordbreakdata.c.
74 * src/wordbreakdata1.tmpl: Move from wordbreakdata1.tmpl.
75 * src/wordbreakdata2.tmpl: Move from wordbreakdata2.tmpl.
76 * src/wordbreakdef.h: Move from wordbreakdef.h.
77
782012-08-12 Wu Yongwei <wuyongwei@gmail.com>
79
80 * README: Change the home URL to github; remove $Id$; eliminate
81 non-ASCII characters.
82
832012-08-11 Wu Yongwei <wuyongwei@gmail.com>
84
85 * configure.ac (AC_INIT): Change the library name and version to
86 `libunibreak' and `1.0'.
87 (AC_PROG_LN_S): New macro.
88 (AC_OUTPUT): Change to `libunibreak.pc'.
89 * Doxyfile: (PROJECT_NAME): Change to `libunibreak'.
90 (PROJECT_NUMBER): Change to `1.0'.
91 * LICENCE: Add copyright information about Tom Hacohen.
92 * Makefile.am (lib_LTLIBRARIES): Change to `libunibreak.la'.
93 (pkgconfig_DATA): Change to `libunibreak.la'.
94 (libunibreak_la_LDFLAGS): Reset the version to `1:0'.
95 (install-exec-hook): Replace the static library liblinebreak.a with
96 a symlink to libunibreak.a.
97 * Makefile.msvc: Change the library name to `libunibreak', and the
98 output library to `unibreak.lib'.
99 * NEW: Add information about libunibreak 1.0.
100 * README: Change the library name, and add information about word
101 break.
102
1032012-02-04 Wu Yongwei <wuyongwei@gmail.com>
104
105 * wordbreak.h (WORDBREAK_INSIDEACHAR): Change from
106 WORDBREAK_INSIDECHAR.
107 * wordbreak.c (set_brks_to): Change `WORDBREAK_INSIDECHAR' to
108 `WORDBREAK_INSIDEACHAR'.
109
1102012-01-19 Wu Yongwei <wuyongwei@gmail.com>
111
112 * wordbreak.h: Change angle brackets to quotation marks (which
113 caused build errors).
114
1152012-01-19 Wu Yongwei <wuyongwei@gmail.com>
116
117 * Makefile.gcc (CFILES): Add wordbreak.c.
118 (WordBreakProperty.txt): New target.
119 (wordbreakdata): New target.
120
1212012-01-19 Wu Yongwei <wuyongwei@gmail.com>
122
123 * Makefile.am (liblinebreak_la_SOURCES): Remove wordbreakdata.c.
124 (EXTRA_DIST): Add wordbreakdata.c, wordbreakdata1.tmpl, and
125 wordbreakdata2.tmpl.
126
1272012-01-19 Wu Yongwei <wuyongwei@gmail.com>
128
129 * Makefile.msvc: Add wordbreak files.
130
1312012-01-18 Tom Hacohen <tom@stosb.com>
132
133 Add word breaking support.
134 * AUTHORS: Add `Tom Hacohen'.
135 * Makefile.am (include_HEADERS): Add header files for word breaking.
136 (liblinebreak_la_SOURCES): Add source files for word breaking.
137 (sort_numeric_hex.py): Add `sort_numeric_hex.py'.
138 (distclean-local): Clean also `WordBreakData.txt'.
139 (WordBreakProperty.txt): New target.
140 (wordbreakdata): New target.
141 * sort_numeric_hex.py: New file.
142 * wordbreak.c: New file.
143 * wordbreak.h: New file.
144 * wordbreakdef.h: New file.
145 * wordbreakdata.c: New file.
146 * wordbreakdata1.tmpl: New file.
147 * wordbreakdata2.tmpl: New file.
148
1492011-05-17 Wu Yongwei <wuyongwei@gmail.com>
150
151 Add support for pkg-config (thanks to Tom Hacohen).
152 * liblinebreak.pc.in: New file.
153 * configure.ac (AC_OUTPUT): Add `liblinebreak.pc'.
154 * Makefile.am (pkgconfig_DATA): Set to `liblinebreak.pc'.
155 (pkgconfigdir): Set to `$(libdir)/pkgconfig'.
156
1572011-05-07 Wu Yongwei <wuyongwei@gmail.com>
158
159 * README: Update the reference to UAX #14-26, for Unicode 6.0.0.
160
1612011-05-07 Wu Yongwei <wuyongwei@gmail.com>
162
163 * configure.ac (AC_INIT): Increase the version to 2.1.
164 * Makefile.am (liblinebreak_la_LDFLAGS): Set the version-info to
165 `2:1'.
166
1672011-05-07 Wu Yongwei <wuyongwei@gmail.com>
168
169 * LICENCE: Update the copyright year.
170
1712011-05-07 Wu Yongwei <wuyongwei@gmail.com>
172
173 Update for the 2.1 release.
174 * Doxyfile (PROJECT_NUMBER): Set to `2.1'.
175 * NEWS: Add information about the 2.1 release.
176 * linebreak.h (LINEBREAK_VERSION): Set to `0x0201'.
177 * linebreak.h: Update comments.
178 * linebreak.c: Ditto.
179 * linebreakdef.h: Ditto.
180 * linebreakdef.c: Ditto.
181
1822011-05-07 Wu Yongwei <wuyongwei@gmail.com>
183
184 * linebreakdata.c: Regenerate from LineBreak-6.0.0.txt.
185
1862011-05-07 Wu Yongwei <wuyongwei@gmail.com>
187
188 * linebreak.c (set_linebreaks): Fix the assertion failure when
189 U+FFFC (OBJECT REPLACEMENT CHARACTER) appears at the beginning of a
190 line (thanks to Tom Hacohen).
191
12010-01-03 Wu Yongwei <wuyongwei@gmail.com> 1922010-01-03 Wu Yongwei <wuyongwei@gmail.com>
2 193
3 * LICENCE: Update the copyright year. 194 * LICENCE: Update the copyright year.
diff --git a/src/static_libs/liblinebreak/LICENCE b/src/static_libs/libunibreak/LICENCE
index 9b9984f..ceec155 100644
--- a/src/static_libs/liblinebreak/LICENCE
+++ b/src/static_libs/libunibreak/LICENCE
@@ -1,4 +1,5 @@
1Copyright (C) 2008-2010 Wu Yongwei <wuyongwei at gmail dot com> 1Copyright (C) 2008-2012 Wu Yongwei <wuyongwei at gmail dot com>
2Copyright (C) 2012 Tom Hacohen <tom dot hacohen at samsung dot com>
2 3
3This software is provided 'as-is', without any express or implied 4This software is provided 'as-is', without any express or implied
4warranty. In no event will the author be held liable for any damages 5warranty. In no event will the author be held liable for any damages
diff --git a/src/static_libs/liblinebreak/NEWS b/src/static_libs/libunibreak/NEWS
index 4c55521..581cab7 100644
--- a/src/static_libs/liblinebreak/NEWS
+++ b/src/static_libs/libunibreak/NEWS
@@ -1,11 +1,23 @@
1New in 2.0 1New in libunibreak 1.0
2
3- Add word breaking support
4- Change the library name to "libunibreak", while keeping maximum compatibility
5- Add pkg-config support
6
7New in liblinebreak 2.1
8
9- Update the data according to LineBreak-6.0.0.txt
10- Fix the bug that an assertion in code can fail if U+FFFC is
11 encountered at the beginning of a line
12
13New in liblinebreak 2.0
2 14
3- Update the algorithm and data according to UAX #14-24 and 15- Update the algorithm and data according to UAX #14-24 and
4 LineBreak-5.2.0.txt 16 LineBreak-5.2.0.txt
5- Rename some functions to reduce namespace pollution 17- Rename some functions to reduce namespace pollution
6- Make Doxygen documentation better 18- Make Doxygen documentation better
7 19
8New in 1.2 20New in liblinebreak 1.2
9 21
10- Fix the bug that an assertion in code can fail if an invalid UTF-8 or 22- Fix the bug that an assertion in code can fail if an invalid UTF-8 or
11 UTF-16 sequence is encountered near the end of input 23 UTF-16 sequence is encountered near the end of input
@@ -14,7 +26,7 @@ New in 1.2
14 used as apostrophe 26 used as apostrophe
15- Make Doxygen documentation better 27- Make Doxygen documentation better
16 28
17New in 1.1 29New in liblinebreak 1.1
18 30
19- Make get_lb_prop_lang static and not an exported symbol 31- Make get_lb_prop_lang static and not an exported symbol
20- Define is_line_breakable to alias to is_breakable 32- Define is_line_breakable to alias to is_breakable
@@ -23,7 +35,7 @@ New in 1.1
23 linebreakdef.h 35 linebreakdef.h
24- Add the function documentation comments to the header files 36- Add the function documentation comments to the header files
25 37
26New in 1.0 38New in liblinebreak 1.0
27 39
28- Update the line breaking data according to UAX #14-22 and 40- Update the line breaking data according to UAX #14-22 and
29 LineBreak-5.1.0.txt 41 LineBreak-5.1.0.txt
diff --git a/src/static_libs/liblinebreak/README b/src/static_libs/libunibreak/README
index 9d23651..39b4157 100644
--- a/src/static_libs/liblinebreak/README
+++ b/src/static_libs/libunibreak/README
@@ -1,20 +1,17 @@
1NOTICE: This is the original version, that was adapted a bit (mostly 1 L I B U N I B R E A K
2 build related) in order to work nicely with Evas. 2 =====================
3
4
5 L I B L I N E B R E A K
6 =======================
7 3
8Overview 4Overview
9-------- 5--------
10 6
11This is the README file for liblinebreak, an implementation of the line 7This is the README file for libunibreak, an implementation of the line
12breaking algorithm as described in Unicode 5.2.0 Standard Annex 14, 8breaking and word breaking algorithms as described in Unicode
13Revision 24, available at 9Standard Annex 14 and Unicode Standard Annex 30, available at
14 <URL:http://www.unicode.org/reports/tr14/tr14-24.html> 10 <URL:http://www.unicode.org/reports/tr14/tr14-30.html>
11 <URL:http://www.unicode.org/reports/tr29/tr29-17.html>
15 12
16Check this URL for up-to-date information: 13Check this URL for up-to-date information:
17 <URL:http://vimgadgets.sourceforge.net/liblinebreak/> 14 <URL:https://github.com/adah1972/libunibreak>
18 15
19 16
20Licence 17Licence
@@ -49,9 +46,12 @@ There are three ways to build the library:
49 - type `make doc' to generate the doxygen documentation; or 46 - type `make doc' to generate the doxygen documentation; or
50 - type `make linebreakdata' to regenerate linebreakdata.c from 47 - type `make linebreakdata' to regenerate linebreakdata.c from
51 LineBreak.txt. 48 LineBreak.txt.
49 - type `make wordbreakdata' to regenerate wordbreakdata.c from
50 WordBreakProperty.txt.
52 51
532) On systems where GCC and Binutils are supported, one can type 522) On systems where GCC and Binutils are supported, one can type
54 53
54 cd src
55 cp -p Makefile.gcc Makefile 55 cp -p Makefile.gcc Makefile
56 make 56 make
57 57
@@ -62,25 +62,27 @@ There are three ways to build the library:
62 - type `make doc' to generate the doxygen documentation; or 62 - type `make doc' to generate the doxygen documentation; or
63 - type `make linebreakdata' to regenerate linebreakdata.c from 63 - type `make linebreakdata' to regenerate linebreakdata.c from
64 LineBreak.txt. 64 LineBreak.txt.
65 - type `make wordbreakdata' to regenerate wordbreakdata.c from
66 WordBreakProperty.txt.
65 67
663) On Windows, apart from using method 1 (Cygwin/MSYS) and method 2 683) On Windows, apart from using method 1 (Cygwin/MSYS) and method 2
67 (MinGW), MSVC can also be used. Type 69 (MinGW), MSVC can also be used. Type
68 70
71 cd src
69 nmake -f Makefile.msvc 72 nmake -f Makefile.msvc
70 73
71 to build the static library. By default the debug release is built. 74 to build the static library. By default the debug release is built.
72 To build the release version 75 To build the release version
73 76
74 nmake -f Makefile.msvc CFG="linebreak - Win32 Release" 77 nmake -f Makefile.msvc CFG="libunibreak - Win32 Release"
75 78
76 79
77Documentation 80Documentation
78------------- 81-------------
79 82
80Check the generated document doc/html/linebreak_8h.html for the public 83Check the generated document doc/html/linebreak_8h.html and
84doc/html/wordbreak_8h.html in the downloaded file for the public
81interfaces exposed to applications. 85interfaces exposed to applications.
82 86
83 87
84$Id: README,v 1.6 2009/11/29 08:09:13 adah Exp $
85
86vim:autoindent:expandtab:formatoptions=tcqlmn:textwidth=72: 88vim:autoindent:expandtab:formatoptions=tcqlmn:textwidth=72:
diff --git a/src/static_libs/liblinebreak/linebreak.c b/src/static_libs/libunibreak/linebreak.c
index f9ff9a1..c1ea405 100644
--- a/src/static_libs/liblinebreak/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-2010 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2012 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 24, for 33 * This library has been updated according to Revision 30, for
34 * Unicode 5.2.0: 34 * Unicode 6.2.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-24.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-30.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>
@@ -44,7 +44,7 @@
44 * Implementation of the line breaking algorithm as described in Unicode 44 * Implementation of the line breaking algorithm as described in Unicode
45 * Standard Annex 14. 45 * Standard Annex 14.
46 * 46 *
47 * @version 2.0, 2010/01/03 47 * @version 2.3, 2012/10/06
48 * @author Wu Yongwei 48 * @author Wu Yongwei
49 */ 49 */
50 50
@@ -79,144 +79,183 @@ enum BreakAction
79 79
80/** 80/**
81 * Break action pair table. This is a direct mapping of Table 2 of 81 * Break action pair table. This is a direct mapping of Table 2 of
82 * Unicode Standard Annex 14, Revision 24. 82 * Unicode Standard Annex 14, Revision 30.
83 */ 83 */
84static enum BreakAction baTable[LBP_JT][LBP_JT] = { 84static enum BreakAction baTable[LBP_RI][LBP_RI] = {
85 { /* OP */ 85 { /* OP */
86 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 86 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
87 PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, 87 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, CMP_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 }, 89 CMP_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK, PRH_BRK,
90 PRH_BRK },
90 { /* CL */ 91 { /* CL */
91 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK, 92 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK,
92 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 93 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
93 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 94 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
94 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 95 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
96 DIR_BRK },
95 { /* CP */ 97 { /* CP */
96 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK, 98 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, PRH_BRK, PRH_BRK,
97 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, 99 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
98 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 100 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
99 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 101 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
102 DIR_BRK },
100 { /* QU */ 103 { /* QU */
101 PRH_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 104 PRH_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
102 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 105 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
103 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, CMI_BRK, 106 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
104 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK }, 107 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
108 IND_BRK },
105 { /* GL */ 109 { /* GL */
106 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 110 IND_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, 111 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, PRH_BRK, CMI_BRK, 112 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
109 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK }, 113 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
114 IND_BRK },
110 { /* NS */ 115 { /* NS */
111 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 116 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
112 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 117 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
113 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 118 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
114 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 119 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
120 DIR_BRK },
115 { /* EX */ 121 { /* EX */
116 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 122 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
117 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 123 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
118 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 124 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
119 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 125 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
126 DIR_BRK },
120 { /* SY */ 127 { /* SY */
121 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 128 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
122 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, 129 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK,
123 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 130 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
124 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 131 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
132 DIR_BRK },
125 { /* IS */ 133 { /* IS */
126 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 134 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
127 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, 135 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
128 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 136 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
129 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 137 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
138 DIR_BRK },
130 { /* PR */ 139 { /* PR */
131 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 140 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
132 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK, 141 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
133 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 142 IND_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
134 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK }, 143 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
144 DIR_BRK },
135 { /* PO */ 145 { /* PO */
136 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 146 IND_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, DIR_BRK, 147 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
138 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 148 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
139 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 149 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
150 DIR_BRK },
140 { /* NU */ 151 { /* NU */
141 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 152 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
142 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, 153 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
143 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 154 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
144 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 155 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
156 DIR_BRK },
145 { /* AL */ 157 { /* AL */
146 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 158 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
147 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, 159 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
148 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 160 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
149 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 161 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
162 DIR_BRK },
163 { /* HL */
164 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
165 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
166 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
167 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
168 DIR_BRK },
150 { /* ID */ 169 { /* ID */
151 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 170 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
152 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 171 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
153 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 172 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
154 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 173 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
174 DIR_BRK },
155 { /* IN */ 175 { /* IN */
156 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 176 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
157 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 177 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
158 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 178 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
159 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 179 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
180 DIR_BRK },
160 { /* HY */ 181 { /* HY */
161 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK, 182 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK,
162 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, 183 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK,
163 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 184 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
164 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 185 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
186 DIR_BRK },
165 { /* BA */ 187 { /* BA */
166 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK, 188 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, DIR_BRK, IND_BRK, PRH_BRK,
167 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 189 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
168 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 190 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
169 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 191 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
192 DIR_BRK },
170 { /* BB */ 193 { /* BB */
171 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 194 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
172 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 195 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
173 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, CMI_BRK, 196 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
174 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK }, 197 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
198 IND_BRK },
175 { /* B2 */ 199 { /* B2 */
176 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 200 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
177 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 201 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
178 DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, PRH_BRK, PRH_BRK, CMI_BRK, 202 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, PRH_BRK, PRH_BRK,
179 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 203 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
204 DIR_BRK },
180 { /* ZW */ 205 { /* ZW */
181 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 206 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
182 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 207 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
183 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, PRH_BRK, DIR_BRK, 208 DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
184 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 },
185 { /* CM */ 211 { /* CM */
186 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 212 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
187 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, 213 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, IND_BRK,
188 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 214 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
189 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK }, 215 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
216 DIR_BRK },
190 { /* WJ */ 217 { /* WJ */
191 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 218 IND_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
192 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, 219 PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
193 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, CMI_BRK, 220 IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
194 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK }, 221 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK,
222 IND_BRK },
195 { /* H2 */ 223 { /* H2 */
196 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 224 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
197 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 225 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
198 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 226 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
199 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK }, 227 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK,
228 DIR_BRK },
200 { /* H3 */ 229 { /* H3 */
201 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 230 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
202 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 231 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
203 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 232 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
204 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK }, 233 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK,
234 DIR_BRK },
205 { /* JL */ 235 { /* JL */
206 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 236 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
207 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 237 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
208 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 238 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
209 PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK }, 239 CMI_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK,
240 DIR_BRK },
210 { /* JV */ 241 { /* JV */
211 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 242 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
212 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 243 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
213 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 244 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
214 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK }, 245 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK, IND_BRK,
246 DIR_BRK },
215 { /* JT */ 247 { /* JT */
216 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK, 248 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
217 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK, 249 PRH_BRK, PRH_BRK, DIR_BRK, IND_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
218 IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK, CMI_BRK, 250 DIR_BRK, IND_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
219 PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK } 251 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, IND_BRK,
252 DIR_BRK },
253 { /* RI */
254 DIR_BRK, PRH_BRK, PRH_BRK, IND_BRK, IND_BRK, IND_BRK, PRH_BRK,
255 PRH_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
256 DIR_BRK, DIR_BRK, IND_BRK, IND_BRK, DIR_BRK, DIR_BRK, PRH_BRK,
257 CMI_BRK, PRH_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK, DIR_BRK,
258 IND_BRK },
220}; 259};
221 260
222/** 261/**
@@ -379,7 +418,15 @@ static enum LineBreakClass resolve_lb_class(
379 { 418 {
380 return LBP_ID; 419 return LBP_ID;
381 } 420 }
382 /* Fall through */ 421 else
422 {
423 return LBP_AL;
424 }
425 case LBP_CJ:
426 /* Simplified for `normal' line breaking. See
427 * <url:http://www.unicode.org/reports/tr14/tr14-28.html#CJ>
428 * for details. */
429 return LBP_ID;
383 case LBP_SA: 430 case LBP_SA:
384 case LBP_SG: 431 case LBP_SG:
385 case LBP_XX: 432 case LBP_XX:
@@ -609,6 +656,9 @@ nextline:
609 656
610 lbcNew = resolve_lb_class(lbcNew, lang); 657 lbcNew = resolve_lb_class(lbcNew, lang);
611 658
659 /* TODO: LB21a, as introduced by Revision 28 of UAX#14, is not
660 * yet implemented below. */
661
612 assert(lbcCur <= LBP_JT); 662 assert(lbcCur <= LBP_JT);
613 assert(lbcNew <= LBP_JT); 663 assert(lbcNew <= LBP_JT);
614 switch (baTable[lbcCur - 1][lbcNew - 1]) 664 switch (baTable[lbcCur - 1][lbcNew - 1])
diff --git a/src/static_libs/liblinebreak/linebreak.h b/src/static_libs/libunibreak/linebreak.h
index abc1ae9..288ef1b 100644
--- a/src/static_libs/liblinebreak/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-2010 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2012 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 24, for 33 * This library has been updated according to Revision 30, for
34 * Unicode 5.2.0: 34 * Unicode 6.2.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-24.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-30.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 2.0, 2010/01/03 46 * @version 2.2, 2012/10/06
47 * @author Wu Yongwei 47 * @author Wu Yongwei
48 */ 48 */
49 49
@@ -56,7 +56,7 @@
56extern "C" { 56extern "C" {
57#endif 57#endif
58 58
59#define LINEBREAK_VERSION 0x0200 /**< Version of the library linebreak */ 59#define LINEBREAK_VERSION 0x0202 /**< Version of the library linebreak */
60extern const int linebreak_version; 60extern const int linebreak_version;
61 61
62#ifndef LINEBREAK_UTF_TYPES_DEFINED 62#ifndef LINEBREAK_UTF_TYPES_DEFINED
diff --git a/src/static_libs/liblinebreak/linebreakdata.c b/src/static_libs/libunibreak/linebreakdata.c
index 0021479..cced7d4 100644
--- a/src/static_libs/liblinebreak/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-6.0.0.txt 2# LineBreak-6.2.0.txt
3# Date: 2010-08-18, 17:25:00 PDT [KW] 3# Date: 2012-08-08, 19:26:00 GMT [KW]
4*/ 4*/
5 5
6#include "linebreak.h" 6#include "linebreak.h"
@@ -98,6 +98,7 @@ struct LineBreakProperties lb_prop_default[] = {
98 { 0x048A, 0x0587, LBP_AL }, 98 { 0x048A, 0x0587, LBP_AL },
99 { 0x0589, 0x0589, LBP_IS }, 99 { 0x0589, 0x0589, LBP_IS },
100 { 0x058A, 0x058A, LBP_BA }, 100 { 0x058A, 0x058A, LBP_BA },
101 { 0x058F, 0x058F, LBP_PR },
101 { 0x0591, 0x05BD, LBP_CM }, 102 { 0x0591, 0x05BD, LBP_CM },
102 { 0x05BE, 0x05BE, LBP_BA }, 103 { 0x05BE, 0x05BE, LBP_BA },
103 { 0x05BF, 0x05BF, LBP_CM }, 104 { 0x05BF, 0x05BF, LBP_CM },
@@ -107,7 +108,8 @@ struct LineBreakProperties lb_prop_default[] = {
107 { 0x05C4, 0x05C5, LBP_CM }, 108 { 0x05C4, 0x05C5, LBP_CM },
108 { 0x05C6, 0x05C6, LBP_EX }, 109 { 0x05C6, 0x05C6, LBP_EX },
109 { 0x05C7, 0x05C7, LBP_CM }, 110 { 0x05C7, 0x05C7, LBP_CM },
110 { 0x05D0, 0x0608, LBP_AL }, 111 { 0x05D0, 0x05F2, LBP_HL },
112 { 0x05F3, 0x0608, LBP_AL },
111 { 0x0609, 0x060B, LBP_PO }, 113 { 0x0609, 0x060B, LBP_PO },
112 { 0x060C, 0x060D, LBP_IS }, 114 { 0x060C, 0x060D, LBP_IS },
113 { 0x060E, 0x060F, LBP_AL }, 115 { 0x060E, 0x060F, LBP_AL },
@@ -155,8 +157,8 @@ struct LineBreakProperties lb_prop_default[] = {
155 { 0x0829, 0x082D, LBP_CM }, 157 { 0x0829, 0x082D, LBP_CM },
156 { 0x0830, 0x0858, LBP_AL }, 158 { 0x0830, 0x0858, LBP_AL },
157 { 0x0859, 0x085B, LBP_CM }, 159 { 0x0859, 0x085B, LBP_CM },
158 { 0x085E, 0x085E, LBP_AL }, 160 { 0x085E, 0x08AC, LBP_AL },
159 { 0x0900, 0x0903, LBP_CM }, 161 { 0x08E4, 0x0903, LBP_CM },
160 { 0x0904, 0x0939, LBP_AL }, 162 { 0x0904, 0x0939, LBP_AL },
161 { 0x093A, 0x093C, LBP_CM }, 163 { 0x093A, 0x093C, LBP_CM },
162 { 0x093D, 0x093D, LBP_AL }, 164 { 0x093D, 0x093D, LBP_AL },
@@ -199,6 +201,7 @@ struct LineBreakProperties lb_prop_default[] = {
199 { 0x0AD0, 0x0AE1, LBP_AL }, 201 { 0x0AD0, 0x0AE1, LBP_AL },
200 { 0x0AE2, 0x0AE3, LBP_CM }, 202 { 0x0AE2, 0x0AE3, LBP_CM },
201 { 0x0AE6, 0x0AEF, LBP_NU }, 203 { 0x0AE6, 0x0AEF, LBP_NU },
204 { 0x0AF0, 0x0AF0, LBP_AL },
202 { 0x0AF1, 0x0AF1, LBP_PR }, 205 { 0x0AF1, 0x0AF1, LBP_PR },
203 { 0x0B01, 0x0B03, LBP_CM }, 206 { 0x0B01, 0x0B03, LBP_CM },
204 { 0x0B05, 0x0B39, LBP_AL }, 207 { 0x0B05, 0x0B39, LBP_AL },
@@ -257,7 +260,7 @@ struct LineBreakProperties lb_prop_default[] = {
257 { 0x0E5A, 0x0E5B, LBP_BA }, 260 { 0x0E5A, 0x0E5B, LBP_BA },
258 { 0x0E81, 0x0ECD, LBP_SA }, 261 { 0x0E81, 0x0ECD, LBP_SA },
259 { 0x0ED0, 0x0ED9, LBP_NU }, 262 { 0x0ED0, 0x0ED9, LBP_NU },
260 { 0x0EDC, 0x0EDD, LBP_SA }, 263 { 0x0EDC, 0x0EDF, LBP_SA },
261 { 0x0F00, 0x0F00, LBP_AL }, 264 { 0x0F00, 0x0F00, LBP_AL },
262 { 0x0F01, 0x0F04, LBP_BB }, 265 { 0x0F01, 0x0F04, LBP_BB },
263 { 0x0F05, 0x0F05, LBP_AL }, 266 { 0x0F05, 0x0F05, LBP_AL },
@@ -310,7 +313,7 @@ struct LineBreakProperties lb_prop_default[] = {
310 { 0x1050, 0x108F, LBP_SA }, 313 { 0x1050, 0x108F, LBP_SA },
311 { 0x1090, 0x1099, LBP_NU }, 314 { 0x1090, 0x1099, LBP_NU },
312 { 0x109A, 0x109F, LBP_SA }, 315 { 0x109A, 0x109F, LBP_SA },
313 { 0x10A0, 0x10FC, LBP_AL }, 316 { 0x10A0, 0x10FF, LBP_AL },
314 { 0x1100, 0x115F, LBP_JL }, 317 { 0x1100, 0x115F, LBP_JL },
315 { 0x1160, 0x11A7, LBP_JV }, 318 { 0x1160, 0x11A7, LBP_JV },
316 { 0x11A8, 0x11FF, LBP_JT }, 319 { 0x11A8, 0x11FF, LBP_JT },
@@ -386,10 +389,10 @@ struct LineBreakProperties lb_prop_default[] = {
386 { 0x1B74, 0x1B7C, LBP_AL }, 389 { 0x1B74, 0x1B7C, LBP_AL },
387 { 0x1B80, 0x1B82, LBP_CM }, 390 { 0x1B80, 0x1B82, LBP_CM },
388 { 0x1B83, 0x1BA0, LBP_AL }, 391 { 0x1B83, 0x1BA0, LBP_AL },
389 { 0x1BA1, 0x1BAA, LBP_CM }, 392 { 0x1BA1, 0x1BAD, LBP_CM },
390 { 0x1BAE, 0x1BAF, LBP_AL }, 393 { 0x1BAE, 0x1BAF, LBP_AL },
391 { 0x1BB0, 0x1BB9, LBP_NU }, 394 { 0x1BB0, 0x1BB9, LBP_NU },
392 { 0x1BC0, 0x1BE5, LBP_AL }, 395 { 0x1BBA, 0x1BE5, LBP_AL },
393 { 0x1BE6, 0x1BF3, LBP_CM }, 396 { 0x1BE6, 0x1BF3, LBP_CM },
394 { 0x1BFC, 0x1C23, LBP_AL }, 397 { 0x1BFC, 0x1C23, LBP_AL },
395 { 0x1C24, 0x1C37, LBP_CM }, 398 { 0x1C24, 0x1C37, LBP_CM },
@@ -399,14 +402,15 @@ struct LineBreakProperties lb_prop_default[] = {
399 { 0x1C50, 0x1C59, LBP_NU }, 402 { 0x1C50, 0x1C59, LBP_NU },
400 { 0x1C5A, 0x1C7D, LBP_AL }, 403 { 0x1C5A, 0x1C7D, LBP_AL },
401 { 0x1C7E, 0x1C7F, LBP_BA }, 404 { 0x1C7E, 0x1C7F, LBP_BA },
405 { 0x1CC0, 0x1CC7, LBP_AL },
402 { 0x1CD0, 0x1CD2, LBP_CM }, 406 { 0x1CD0, 0x1CD2, LBP_CM },
403 { 0x1CD3, 0x1CD3, LBP_AL }, 407 { 0x1CD3, 0x1CD3, LBP_AL },
404 { 0x1CD4, 0x1CE8, LBP_CM }, 408 { 0x1CD4, 0x1CE8, LBP_CM },
405 { 0x1CE9, 0x1CEC, LBP_AL }, 409 { 0x1CE9, 0x1CEC, LBP_AL },
406 { 0x1CED, 0x1CED, LBP_CM }, 410 { 0x1CED, 0x1CED, LBP_CM },
407 { 0x1CEE, 0x1CF1, LBP_AL }, 411 { 0x1CEE, 0x1CF1, LBP_AL },
408 { 0x1CF2, 0x1CF2, LBP_CM }, 412 { 0x1CF2, 0x1CF4, LBP_CM },
409 { 0x1D00, 0x1DBF, LBP_AL }, 413 { 0x1CF5, 0x1DBF, LBP_AL },
410 { 0x1DC0, 0x1DFF, LBP_CM }, 414 { 0x1DC0, 0x1DFF, LBP_CM },
411 { 0x1E00, 0x1FFC, LBP_AL }, 415 { 0x1E00, 0x1FFC, LBP_AL },
412 { 0x1FFD, 0x1FFD, LBP_BB }, 416 { 0x1FFD, 0x1FFD, LBP_BB },
@@ -469,7 +473,7 @@ struct LineBreakProperties lb_prop_default[] = {
469 { 0x20A7, 0x20A7, LBP_PO }, 473 { 0x20A7, 0x20A7, LBP_PO },
470 { 0x20A8, 0x20B5, LBP_PR }, 474 { 0x20A8, 0x20B5, LBP_PR },
471 { 0x20B6, 0x20B6, LBP_PO }, 475 { 0x20B6, 0x20B6, LBP_PO },
472 { 0x20B7, 0x20B9, LBP_PR }, 476 { 0x20B7, 0x20BA, LBP_PR },
473 { 0x20D0, 0x20F0, LBP_CM }, 477 { 0x20D0, 0x20F0, LBP_CM },
474 { 0x2100, 0x2102, LBP_AL }, 478 { 0x2100, 0x2102, LBP_AL },
475 { 0x2103, 0x2103, LBP_PO }, 479 { 0x2103, 0x2103, LBP_PO },
@@ -560,10 +564,14 @@ struct LineBreakProperties lb_prop_default[] = {
560 { 0x22BF, 0x22BF, LBP_AI }, 564 { 0x22BF, 0x22BF, LBP_AI },
561 { 0x22C0, 0x2311, LBP_AL }, 565 { 0x22C0, 0x2311, LBP_AL },
562 { 0x2312, 0x2312, LBP_AI }, 566 { 0x2312, 0x2312, LBP_AI },
563 { 0x2313, 0x2328, LBP_AL }, 567 { 0x2313, 0x2319, LBP_AL },
568 { 0x231A, 0x231B, LBP_ID },
569 { 0x231C, 0x2328, LBP_AL },
564 { 0x2329, 0x2329, LBP_OP }, 570 { 0x2329, 0x2329, LBP_OP },
565 { 0x232A, 0x232A, LBP_CL }, 571 { 0x232A, 0x232A, LBP_CL },
566 { 0x232B, 0x244A, LBP_AL }, 572 { 0x232B, 0x23EF, LBP_AL },
573 { 0x23F0, 0x23F3, LBP_ID },
574 { 0x2400, 0x244A, LBP_AL },
567 { 0x2460, 0x24FE, LBP_AI }, 575 { 0x2460, 0x24FE, LBP_AI },
568 { 0x24FF, 0x24FF, LBP_AL }, 576 { 0x24FF, 0x24FF, LBP_AL },
569 { 0x2500, 0x254B, LBP_AI }, 577 { 0x2500, 0x254B, LBP_AI },
@@ -595,19 +603,23 @@ struct LineBreakProperties lb_prop_default[] = {
595 { 0x25E2, 0x25E5, LBP_AI }, 603 { 0x25E2, 0x25E5, LBP_AI },
596 { 0x25E6, 0x25EE, LBP_AL }, 604 { 0x25E6, 0x25EE, LBP_AL },
597 { 0x25EF, 0x25EF, LBP_AI }, 605 { 0x25EF, 0x25EF, LBP_AI },
598 { 0x25F0, 0x2604, LBP_AL }, 606 { 0x25F0, 0x25FF, LBP_AL },
607 { 0x2600, 0x2603, LBP_ID },
608 { 0x2604, 0x2604, LBP_AL },
599 { 0x2605, 0x2606, LBP_AI }, 609 { 0x2605, 0x2606, LBP_AI },
600 { 0x2607, 0x2608, LBP_AL }, 610 { 0x2607, 0x2608, LBP_AL },
601 { 0x2609, 0x2609, LBP_AI }, 611 { 0x2609, 0x2609, LBP_AI },
602 { 0x260A, 0x260D, LBP_AL }, 612 { 0x260A, 0x260D, LBP_AL },
603 { 0x260E, 0x260F, LBP_AI }, 613 { 0x260E, 0x260F, LBP_AI },
604 { 0x2610, 0x2613, LBP_AL }, 614 { 0x2610, 0x2613, LBP_AL },
605 { 0x2614, 0x2617, LBP_AI }, 615 { 0x2614, 0x2615, LBP_ID },
606 { 0x2618, 0x261B, LBP_AL }, 616 { 0x2616, 0x2617, LBP_AI },
607 { 0x261C, 0x261C, LBP_AI }, 617 { 0x2618, 0x2618, LBP_ID },
608 { 0x261D, 0x261D, LBP_AL }, 618 { 0x2619, 0x2619, LBP_AL },
609 { 0x261E, 0x261E, LBP_AI }, 619 { 0x261A, 0x261F, LBP_ID },
610 { 0x261F, 0x263F, LBP_AL }, 620 { 0x2620, 0x2638, LBP_AL },
621 { 0x2639, 0x263B, LBP_ID },
622 { 0x263C, 0x263F, LBP_AL },
611 { 0x2640, 0x2640, LBP_AI }, 623 { 0x2640, 0x2640, LBP_AI },
612 { 0x2641, 0x2641, LBP_AL }, 624 { 0x2641, 0x2641, LBP_AL },
613 { 0x2642, 0x2642, LBP_AI }, 625 { 0x2642, 0x2642, LBP_AI },
@@ -616,24 +628,45 @@ struct LineBreakProperties lb_prop_default[] = {
616 { 0x2662, 0x2662, LBP_AL }, 628 { 0x2662, 0x2662, LBP_AL },
617 { 0x2663, 0x2665, LBP_AI }, 629 { 0x2663, 0x2665, LBP_AI },
618 { 0x2666, 0x2666, LBP_AL }, 630 { 0x2666, 0x2666, LBP_AL },
619 { 0x2667, 0x266A, LBP_AI }, 631 { 0x2667, 0x2667, LBP_AI },
632 { 0x2668, 0x2668, LBP_ID },
633 { 0x2669, 0x266A, LBP_AI },
620 { 0x266B, 0x266B, LBP_AL }, 634 { 0x266B, 0x266B, LBP_AL },
621 { 0x266C, 0x266D, LBP_AI }, 635 { 0x266C, 0x266D, LBP_AI },
622 { 0x266E, 0x266E, LBP_AL }, 636 { 0x266E, 0x266E, LBP_AL },
623 { 0x266F, 0x266F, LBP_AI }, 637 { 0x266F, 0x266F, LBP_AI },
624 { 0x2670, 0x269D, LBP_AL }, 638 { 0x2670, 0x267E, LBP_AL },
639 { 0x267F, 0x267F, LBP_ID },
640 { 0x2680, 0x269D, LBP_AL },
625 { 0x269E, 0x269F, LBP_AI }, 641 { 0x269E, 0x269F, LBP_AI },
626 { 0x26A0, 0x26BD, LBP_AL }, 642 { 0x26A0, 0x26BC, LBP_AL },
627 { 0x26BE, 0x26BF, LBP_AI }, 643 { 0x26BD, 0x26C8, LBP_ID },
628 { 0x26C0, 0x26C3, LBP_AL }, 644 { 0x26C9, 0x26CC, LBP_AI },
629 { 0x26C4, 0x26CD, LBP_AI }, 645 { 0x26CD, 0x26CD, LBP_ID },
630 { 0x26CE, 0x26CE, LBP_AL }, 646 { 0x26CE, 0x26CE, LBP_AL },
631 { 0x26CF, 0x26E1, LBP_AI }, 647 { 0x26CF, 0x26D1, LBP_ID },
648 { 0x26D2, 0x26D2, LBP_AI },
649 { 0x26D3, 0x26D4, LBP_ID },
650 { 0x26D5, 0x26D7, LBP_AI },
651 { 0x26D8, 0x26D9, LBP_ID },
652 { 0x26DA, 0x26DB, LBP_AI },
653 { 0x26DC, 0x26DC, LBP_ID },
654 { 0x26DD, 0x26DE, LBP_AI },
655 { 0x26DF, 0x26E1, LBP_ID },
632 { 0x26E2, 0x26E2, LBP_AL }, 656 { 0x26E2, 0x26E2, LBP_AL },
633 { 0x26E3, 0x26E3, LBP_AI }, 657 { 0x26E3, 0x26E3, LBP_AI },
634 { 0x26E4, 0x26E7, LBP_AL }, 658 { 0x26E4, 0x26E7, LBP_AL },
635 { 0x26E8, 0x26FF, LBP_AI }, 659 { 0x26E8, 0x26E9, LBP_AI },
636 { 0x2701, 0x2756, LBP_AL }, 660 { 0x26EA, 0x26EA, LBP_ID },
661 { 0x26EB, 0x26F0, LBP_AI },
662 { 0x26F1, 0x26F5, LBP_ID },
663 { 0x26F6, 0x26F6, LBP_AI },
664 { 0x26F7, 0x26FA, LBP_ID },
665 { 0x26FB, 0x26FC, LBP_AI },
666 { 0x26FD, 0x2704, LBP_ID },
667 { 0x2705, 0x2707, LBP_AL },
668 { 0x2708, 0x270D, LBP_ID },
669 { 0x270E, 0x2756, LBP_AL },
637 { 0x2757, 0x2757, LBP_AI }, 670 { 0x2757, 0x2757, LBP_AI },
638 { 0x2758, 0x275A, LBP_AL }, 671 { 0x2758, 0x275A, LBP_AL },
639 { 0x275B, 0x275E, LBP_QU }, 672 { 0x275B, 0x275E, LBP_QU },
@@ -704,6 +737,7 @@ struct LineBreakProperties lb_prop_default[] = {
704 { 0x2B55, 0x2B59, LBP_AI }, 737 { 0x2B55, 0x2B59, LBP_AI },
705 { 0x2C00, 0x2CEE, LBP_AL }, 738 { 0x2C00, 0x2CEE, LBP_AL },
706 { 0x2CEF, 0x2CF1, LBP_CM }, 739 { 0x2CEF, 0x2CF1, LBP_CM },
740 { 0x2CF2, 0x2CF3, LBP_AL },
707 { 0x2CF9, 0x2CF9, LBP_EX }, 741 { 0x2CF9, 0x2CF9, LBP_EX },
708 { 0x2CFA, 0x2CFC, LBP_BA }, 742 { 0x2CFA, 0x2CFC, LBP_BA },
709 { 0x2CFD, 0x2CFD, LBP_AL }, 743 { 0x2CFD, 0x2CFD, LBP_AL },
@@ -736,6 +770,10 @@ struct LineBreakProperties lb_prop_default[] = {
736 { 0x2E2E, 0x2E2E, LBP_EX }, 770 { 0x2E2E, 0x2E2E, LBP_EX },
737 { 0x2E2F, 0x2E2F, LBP_AL }, 771 { 0x2E2F, 0x2E2F, LBP_AL },
738 { 0x2E30, 0x2E31, LBP_BA }, 772 { 0x2E30, 0x2E31, LBP_BA },
773 { 0x2E32, 0x2E32, LBP_AL },
774 { 0x2E33, 0x2E34, LBP_BA },
775 { 0x2E35, 0x2E39, LBP_AL },
776 { 0x2E3A, 0x2E3B, LBP_B2 },
739 { 0x2E80, 0x3000, LBP_ID }, 777 { 0x2E80, 0x3000, LBP_ID },
740 { 0x3001, 0x3002, LBP_CL }, 778 { 0x3001, 0x3002, LBP_CL },
741 { 0x3003, 0x3004, LBP_ID }, 779 { 0x3003, 0x3004, LBP_ID },
@@ -768,55 +806,58 @@ struct LineBreakProperties lb_prop_default[] = {
768 { 0x3030, 0x303A, LBP_ID }, 806 { 0x3030, 0x303A, LBP_ID },
769 { 0x303B, 0x303C, LBP_NS }, 807 { 0x303B, 0x303C, LBP_NS },
770 { 0x303D, 0x303F, LBP_ID }, 808 { 0x303D, 0x303F, LBP_ID },
771 { 0x3041, 0x3041, LBP_NS }, 809 { 0x3041, 0x3041, LBP_CJ },
772 { 0x3042, 0x3042, LBP_ID }, 810 { 0x3042, 0x3042, LBP_ID },
773 { 0x3043, 0x3043, LBP_NS }, 811 { 0x3043, 0x3043, LBP_CJ },
774 { 0x3044, 0x3044, LBP_ID }, 812 { 0x3044, 0x3044, LBP_ID },
775 { 0x3045, 0x3045, LBP_NS }, 813 { 0x3045, 0x3045, LBP_CJ },
776 { 0x3046, 0x3046, LBP_ID }, 814 { 0x3046, 0x3046, LBP_ID },
777 { 0x3047, 0x3047, LBP_NS }, 815 { 0x3047, 0x3047, LBP_CJ },
778 { 0x3048, 0x3048, LBP_ID }, 816 { 0x3048, 0x3048, LBP_ID },
779 { 0x3049, 0x3049, LBP_NS }, 817 { 0x3049, 0x3049, LBP_CJ },
780 { 0x304A, 0x3062, LBP_ID }, 818 { 0x304A, 0x3062, LBP_ID },
781 { 0x3063, 0x3063, LBP_NS }, 819 { 0x3063, 0x3063, LBP_CJ },
782 { 0x3064, 0x3082, LBP_ID }, 820 { 0x3064, 0x3082, LBP_ID },
783 { 0x3083, 0x3083, LBP_NS }, 821 { 0x3083, 0x3083, LBP_CJ },
784 { 0x3084, 0x3084, LBP_ID }, 822 { 0x3084, 0x3084, LBP_ID },
785 { 0x3085, 0x3085, LBP_NS }, 823 { 0x3085, 0x3085, LBP_CJ },
786 { 0x3086, 0x3086, LBP_ID }, 824 { 0x3086, 0x3086, LBP_ID },
787 { 0x3087, 0x3087, LBP_NS }, 825 { 0x3087, 0x3087, LBP_CJ },
788 { 0x3088, 0x308D, LBP_ID }, 826 { 0x3088, 0x308D, LBP_ID },
789 { 0x308E, 0x308E, LBP_NS }, 827 { 0x308E, 0x308E, LBP_CJ },
790 { 0x308F, 0x3094, LBP_ID }, 828 { 0x308F, 0x3094, LBP_ID },
791 { 0x3095, 0x3096, LBP_NS }, 829 { 0x3095, 0x3096, LBP_CJ },
792 { 0x3099, 0x309A, LBP_CM }, 830 { 0x3099, 0x309A, LBP_CM },
793 { 0x309B, 0x309E, LBP_NS }, 831 { 0x309B, 0x309E, LBP_NS },
794 { 0x309F, 0x309F, LBP_ID }, 832 { 0x309F, 0x309F, LBP_ID },
795 { 0x30A0, 0x30A1, LBP_NS }, 833 { 0x30A0, 0x30A0, LBP_NS },
834 { 0x30A1, 0x30A1, LBP_CJ },
796 { 0x30A2, 0x30A2, LBP_ID }, 835 { 0x30A2, 0x30A2, LBP_ID },
797 { 0x30A3, 0x30A3, LBP_NS }, 836 { 0x30A3, 0x30A3, LBP_CJ },
798 { 0x30A4, 0x30A4, LBP_ID }, 837 { 0x30A4, 0x30A4, LBP_ID },
799 { 0x30A5, 0x30A5, LBP_NS }, 838 { 0x30A5, 0x30A5, LBP_CJ },
800 { 0x30A6, 0x30A6, LBP_ID }, 839 { 0x30A6, 0x30A6, LBP_ID },
801 { 0x30A7, 0x30A7, LBP_NS }, 840 { 0x30A7, 0x30A7, LBP_CJ },
802 { 0x30A8, 0x30A8, LBP_ID }, 841 { 0x30A8, 0x30A8, LBP_ID },
803 { 0x30A9, 0x30A9, LBP_NS }, 842 { 0x30A9, 0x30A9, LBP_CJ },
804 { 0x30AA, 0x30C2, LBP_ID }, 843 { 0x30AA, 0x30C2, LBP_ID },
805 { 0x30C3, 0x30C3, LBP_NS }, 844 { 0x30C3, 0x30C3, LBP_CJ },
806 { 0x30C4, 0x30E2, LBP_ID }, 845 { 0x30C4, 0x30E2, LBP_ID },
807 { 0x30E3, 0x30E3, LBP_NS }, 846 { 0x30E3, 0x30E3, LBP_CJ },
808 { 0x30E4, 0x30E4, LBP_ID }, 847 { 0x30E4, 0x30E4, LBP_ID },
809 { 0x30E5, 0x30E5, LBP_NS }, 848 { 0x30E5, 0x30E5, LBP_CJ },
810 { 0x30E6, 0x30E6, LBP_ID }, 849 { 0x30E6, 0x30E6, LBP_ID },
811 { 0x30E7, 0x30E7, LBP_NS }, 850 { 0x30E7, 0x30E7, LBP_CJ },
812 { 0x30E8, 0x30ED, LBP_ID }, 851 { 0x30E8, 0x30ED, LBP_ID },
813 { 0x30EE, 0x30EE, LBP_NS }, 852 { 0x30EE, 0x30EE, LBP_CJ },
814 { 0x30EF, 0x30F4, LBP_ID }, 853 { 0x30EF, 0x30F4, LBP_ID },
815 { 0x30F5, 0x30F6, LBP_NS }, 854 { 0x30F5, 0x30F6, LBP_CJ },
816 { 0x30F7, 0x30FA, LBP_ID }, 855 { 0x30F7, 0x30FA, LBP_ID },
817 { 0x30FB, 0x30FE, LBP_NS }, 856 { 0x30FB, 0x30FB, LBP_NS },
857 { 0x30FC, 0x30FC, LBP_CJ },
858 { 0x30FD, 0x30FE, LBP_NS },
818 { 0x30FF, 0x31E3, LBP_ID }, 859 { 0x30FF, 0x31E3, LBP_ID },
819 { 0x31F0, 0x31FF, LBP_NS }, 860 { 0x31F0, 0x31FF, LBP_CJ },
820 { 0x3200, 0x3247, LBP_ID }, 861 { 0x3200, 0x3247, LBP_ID },
821 { 0x3248, 0x324F, LBP_AI }, 862 { 0x3248, 0x324F, LBP_AI },
822 { 0x3250, 0x4DBF, LBP_ID }, 863 { 0x3250, 0x4DBF, LBP_ID },
@@ -835,8 +876,10 @@ struct LineBreakProperties lb_prop_default[] = {
835 { 0xA62A, 0xA66E, LBP_AL }, 876 { 0xA62A, 0xA66E, LBP_AL },
836 { 0xA66F, 0xA672, LBP_CM }, 877 { 0xA66F, 0xA672, LBP_CM },
837 { 0xA673, 0xA673, LBP_AL }, 878 { 0xA673, 0xA673, LBP_AL },
838 { 0xA67C, 0xA67D, LBP_CM }, 879 { 0xA674, 0xA67D, LBP_CM },
839 { 0xA67E, 0xA6EF, LBP_AL }, 880 { 0xA67E, 0xA697, LBP_AL },
881 { 0xA69F, 0xA69F, LBP_CM },
882 { 0xA6A0, 0xA6EF, LBP_AL },
840 { 0xA6F0, 0xA6F1, LBP_CM }, 883 { 0xA6F0, 0xA6F1, LBP_CM },
841 { 0xA6F2, 0xA6F2, LBP_AL }, 884 { 0xA6F2, 0xA6F2, LBP_AL },
842 { 0xA6F3, 0xA6F7, LBP_BA }, 885 { 0xA6F3, 0xA6F7, LBP_BA },
@@ -885,6 +928,11 @@ struct LineBreakProperties lb_prop_default[] = {
885 { 0xAA5C, 0xAA5C, LBP_AL }, 928 { 0xAA5C, 0xAA5C, LBP_AL },
886 { 0xAA5D, 0xAA5F, LBP_BA }, 929 { 0xAA5D, 0xAA5F, LBP_BA },
887 { 0xAA60, 0xAADF, LBP_SA }, 930 { 0xAA60, 0xAADF, LBP_SA },
931 { 0xAAE0, 0xAAEA, LBP_AL },
932 { 0xAAEB, 0xAAEF, LBP_CM },
933 { 0xAAF0, 0xAAF1, LBP_BA },
934 { 0xAAF2, 0xAAF4, LBP_AL },
935 { 0xAAF5, 0xAAF6, LBP_CM },
888 { 0xAB01, 0xABE2, LBP_AL }, 936 { 0xAB01, 0xABE2, LBP_AL },
889 { 0xABE3, 0xABEA, LBP_CM }, 937 { 0xABE3, 0xABEA, LBP_CM },
890 { 0xABEB, 0xABEB, LBP_BA }, 938 { 0xABEB, 0xABEB, LBP_BA },
@@ -1693,9 +1741,13 @@ struct LineBreakProperties lb_prop_default[] = {
1693 { 0xD800, 0xDFFF, LBP_SG }, 1741 { 0xD800, 0xDFFF, LBP_SG },
1694 { 0xE000, 0xF8FF, LBP_XX }, 1742 { 0xE000, 0xF8FF, LBP_XX },
1695 { 0xF900, 0xFAFF, LBP_ID }, 1743 { 0xF900, 0xFAFF, LBP_ID },
1696 { 0xFB00, 0xFB1D, LBP_AL }, 1744 { 0xFB00, 0xFB17, LBP_AL },
1745 { 0xFB1D, 0xFB1D, LBP_HL },
1697 { 0xFB1E, 0xFB1E, LBP_CM }, 1746 { 0xFB1E, 0xFB1E, LBP_CM },
1698 { 0xFB1F, 0xFD3D, LBP_AL }, 1747 { 0xFB1F, 0xFB28, LBP_HL },
1748 { 0xFB29, 0xFB29, LBP_AL },
1749 { 0xFB2A, 0xFB4F, LBP_HL },
1750 { 0xFB50, 0xFD3D, LBP_AL },
1699 { 0xFD3E, 0xFD3E, LBP_OP }, 1751 { 0xFD3E, 0xFD3E, LBP_OP },
1700 { 0xFD3F, 0xFD3F, LBP_CL }, 1752 { 0xFD3F, 0xFD3F, LBP_CL },
1701 { 0xFD50, 0xFDFB, LBP_AL }, 1753 { 0xFD50, 0xFDFB, LBP_AL },
@@ -1779,7 +1831,7 @@ struct LineBreakProperties lb_prop_default[] = {
1779 { 0xFF63, 0xFF64, LBP_CL }, 1831 { 0xFF63, 0xFF64, LBP_CL },
1780 { 0xFF65, 0xFF65, LBP_NS }, 1832 { 0xFF65, 0xFF65, LBP_NS },
1781 { 0xFF66, 0xFF66, LBP_AL }, 1833 { 0xFF66, 0xFF66, LBP_AL },
1782 { 0xFF67, 0xFF70, LBP_NS }, 1834 { 0xFF67, 0xFF70, LBP_CJ },
1783 { 0xFF71, 0xFF9D, LBP_AL }, 1835 { 0xFF71, 0xFF9D, LBP_AL },
1784 { 0xFF9E, 0xFF9F, LBP_NS }, 1836 { 0xFF9E, 0xFF9F, LBP_NS },
1785 { 0xFFA0, 0xFFDC, LBP_AL }, 1837 { 0xFFA0, 0xFFDC, LBP_AL },
@@ -1825,6 +1877,24 @@ struct LineBreakProperties lb_prop_default[] = {
1825 { 0x110B0, 0x110BA, LBP_CM }, 1877 { 0x110B0, 0x110BA, LBP_CM },
1826 { 0x110BB, 0x110BD, LBP_AL }, 1878 { 0x110BB, 0x110BD, LBP_AL },
1827 { 0x110BE, 0x110C1, LBP_BA }, 1879 { 0x110BE, 0x110C1, LBP_BA },
1880 { 0x110D0, 0x110E8, LBP_AL },
1881 { 0x110F0, 0x110F9, LBP_NU },
1882 { 0x11100, 0x11102, LBP_CM },
1883 { 0x11103, 0x11126, LBP_AL },
1884 { 0x11127, 0x11134, LBP_CM },
1885 { 0x11136, 0x1113F, LBP_NU },
1886 { 0x11140, 0x11143, LBP_BA },
1887 { 0x11180, 0x11182, LBP_CM },
1888 { 0x11183, 0x111B2, LBP_AL },
1889 { 0x111B3, 0x111C0, LBP_CM },
1890 { 0x111C1, 0x111C4, LBP_AL },
1891 { 0x111C5, 0x111C6, LBP_BA },
1892 { 0x111C7, 0x111C7, LBP_AL },
1893 { 0x111C8, 0x111C8, LBP_BA },
1894 { 0x111D0, 0x111D9, LBP_NU },
1895 { 0x11680, 0x116AA, LBP_AL },
1896 { 0x116AB, 0x116B7, LBP_CM },
1897 { 0x116C0, 0x116C9, LBP_NU },
1828 { 0x12000, 0x12462, LBP_AL }, 1898 { 0x12000, 0x12462, LBP_AL },
1829 { 0x12470, 0x12473, LBP_BA }, 1899 { 0x12470, 0x12473, LBP_BA },
1830 { 0x13000, 0x13257, LBP_AL }, 1900 { 0x13000, 0x13257, LBP_AL },
@@ -1840,7 +1910,9 @@ struct LineBreakProperties lb_prop_default[] = {
1840 { 0x1328A, 0x13378, LBP_AL }, 1910 { 0x1328A, 0x13378, LBP_AL },
1841 { 0x13379, 0x13379, LBP_OP }, 1911 { 0x13379, 0x13379, LBP_OP },
1842 { 0x1337A, 0x1337B, LBP_CL }, 1912 { 0x1337A, 0x1337B, LBP_CL },
1843 { 0x1337C, 0x16A38, LBP_AL }, 1913 { 0x1337C, 0x16F50, LBP_AL },
1914 { 0x16F51, 0x16F92, LBP_CM },
1915 { 0x16F93, 0x16F9F, LBP_AL },
1844 { 0x1B000, 0x1B001, LBP_ID }, 1916 { 0x1B000, 0x1B001, LBP_ID },
1845 { 0x1D000, 0x1D164, LBP_AL }, 1917 { 0x1D000, 0x1D164, LBP_AL },
1846 { 0x1D165, 0x1D169, LBP_CM }, 1918 { 0x1D165, 0x1D169, LBP_CM },
@@ -1854,13 +1926,36 @@ struct LineBreakProperties lb_prop_default[] = {
1854 { 0x1D242, 0x1D244, LBP_CM }, 1926 { 0x1D242, 0x1D244, LBP_CM },
1855 { 0x1D245, 0x1D7CB, LBP_AL }, 1927 { 0x1D245, 0x1D7CB, LBP_AL },
1856 { 0x1D7CE, 0x1D7FF, LBP_NU }, 1928 { 0x1D7CE, 0x1D7FF, LBP_NU },
1857 { 0x1F000, 0x1F0DF, LBP_AL }, 1929 { 0x1EE00, 0x1EEF1, LBP_AL },
1930 { 0x1F000, 0x1F0DF, LBP_ID },
1858 { 0x1F100, 0x1F12D, LBP_AI }, 1931 { 0x1F100, 0x1F12D, LBP_AI },
1859 { 0x1F12E, 0x1F12E, LBP_AL }, 1932 { 0x1F12E, 0x1F12E, LBP_AL },
1860 { 0x1F130, 0x1F19A, LBP_AI }, 1933 { 0x1F130, 0x1F169, LBP_AI },
1861 { 0x1F1E6, 0x1F1FF, LBP_AL }, 1934 { 0x1F16A, 0x1F16B, LBP_AL },
1862 { 0x1F200, 0x1F251, LBP_ID }, 1935 { 0x1F170, 0x1F19A, LBP_AI },
1863 { 0x1F300, 0x1F773, LBP_AL }, 1936 { 0x1F1E6, 0x1F1FF, LBP_RI },
1937 { 0x1F200, 0x1F3B4, LBP_ID },
1938 { 0x1F3B5, 0x1F3B6, LBP_AL },
1939 { 0x1F3B7, 0x1F3BB, LBP_ID },
1940 { 0x1F3BC, 0x1F3BC, LBP_AL },
1941 { 0x1F3BD, 0x1F49F, LBP_ID },
1942 { 0x1F4A0, 0x1F4A0, LBP_AL },
1943 { 0x1F4A1, 0x1F4A1, LBP_ID },
1944 { 0x1F4A2, 0x1F4A2, LBP_AL },
1945 { 0x1F4A3, 0x1F4A3, LBP_ID },
1946 { 0x1F4A4, 0x1F4A4, LBP_AL },
1947 { 0x1F4A5, 0x1F4AE, LBP_ID },
1948 { 0x1F4AF, 0x1F4AF, LBP_AL },
1949 { 0x1F4B0, 0x1F4B0, LBP_ID },
1950 { 0x1F4B1, 0x1F4B2, LBP_AL },
1951 { 0x1F4B3, 0x1F4FC, LBP_ID },
1952 { 0x1F500, 0x1F506, LBP_AL },
1953 { 0x1F507, 0x1F516, LBP_ID },
1954 { 0x1F517, 0x1F524, LBP_AL },
1955 { 0x1F525, 0x1F531, LBP_ID },
1956 { 0x1F532, 0x1F543, LBP_AL },
1957 { 0x1F550, 0x1F6C5, LBP_ID },
1958 { 0x1F700, 0x1F773, LBP_AL },
1864 { 0x20000, 0x3FFFD, LBP_ID }, 1959 { 0x20000, 0x3FFFD, LBP_ID },
1865 { 0xE0001, 0xE01EF, LBP_CM }, 1960 { 0xE0001, 0xE01EF, LBP_CM },
1866 { 0xF0000, 0x10FFFD, LBP_XX }, 1961 { 0xF0000, 0x10FFFD, LBP_XX },
diff --git a/src/static_libs/liblinebreak/linebreakdef.c b/src/static_libs/libunibreak/linebreakdef.c
index 9ddb4d9..fb6744d 100644
--- a/src/static_libs/liblinebreak/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-2010 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2012 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 24, for 33 * This library has been updated according to Revision 30, for
34 * Unicode 5.2.0: 34 * Unicode 6.2.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-24.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-30.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 2.0, 2010/01/03 46 * @version 2.2, 2012/10/06
47 * @author Wu Yongwei 47 * @author Wu Yongwei
48 */ 48 */
49 49
diff --git a/src/static_libs/liblinebreak/linebreakdef.h b/src/static_libs/libunibreak/linebreakdef.h
index bc4eee2..93fcd67 100644
--- a/src/static_libs/liblinebreak/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-2010 Wu Yongwei <wuyongwei at gmail dot com> 7 * Copyright (C) 2008-2012 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 24, for 33 * This library has been updated according to Revision 30, for
34 * Unicode 5.2.0: 34 * Unicode 6.2.0:
35 * <URL:http://www.unicode.org/reports/tr14/tr14-24.html> 35 * <URL:http://www.unicode.org/reports/tr14/tr14-30.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>
@@ -44,7 +44,7 @@
44 * Definitions of internal data structures, declarations of global 44 * Definitions of internal data structures, declarations of global
45 * variables, and function prototypes for the line breaking algorithm. 45 * variables, and function prototypes for the line breaking algorithm.
46 * 46 *
47 * @version 2.0, 2010/01/03 47 * @version 2.3, 2012/10/06
48 * @author Wu Yongwei 48 * @author Wu Yongwei
49 */ 49 */
50 50
@@ -56,7 +56,7 @@
56 56
57/** 57/**
58 * Line break classes. This is a direct mapping of Table 1 of Unicode 58 * Line break classes. This is a direct mapping of Table 1 of Unicode
59 * Standard Annex 14, Revision 19. 59 * Standard Annex 14, Revision 26.
60 */ 60 */
61enum LineBreakClass 61enum LineBreakClass
62{ 62{
@@ -77,6 +77,7 @@ enum LineBreakClass
77 LBP_PO, /**< Postfix */ 77 LBP_PO, /**< Postfix */
78 LBP_NU, /**< Numeric */ 78 LBP_NU, /**< Numeric */
79 LBP_AL, /**< Alphabetic */ 79 LBP_AL, /**< Alphabetic */
80 LBP_HL, /**< Hebrew letter */
80 LBP_ID, /**< Ideographic */ 81 LBP_ID, /**< Ideographic */
81 LBP_IN, /**< Inseparable characters */ 82 LBP_IN, /**< Inseparable characters */
82 LBP_HY, /**< Hyphen */ 83 LBP_HY, /**< Hyphen */
@@ -91,11 +92,13 @@ enum LineBreakClass
91 LBP_JL, /**< Hangul L Jamo */ 92 LBP_JL, /**< Hangul L Jamo */
92 LBP_JV, /**< Hangul V Jamo */ 93 LBP_JV, /**< Hangul V Jamo */
93 LBP_JT, /**< Hangul T Jamo */ 94 LBP_JT, /**< Hangul T Jamo */
95 LBP_RI, /**< Regional indicator */
94 96
95 /* The following break classes are not treated in the pair table */ 97 /* The following break classes are not treated in the pair table */
96 LBP_AI, /**< Ambiguous (alphabetic or ideograph) */ 98 LBP_AI, /**< Ambiguous (alphabetic or ideograph) */
97 LBP_BK, /**< Break (mandatory) */ 99 LBP_BK, /**< Break (mandatory) */
98 LBP_CB, /**< Contingent break */ 100 LBP_CB, /**< Contingent break */
101 LBP_CJ, /**< Conditional Japanese starter */
99 LBP_CR, /**< Carriage return */ 102 LBP_CR, /**< Carriage return */
100 LBP_LF, /**< Line feed */ 103 LBP_LF, /**< Line feed */
101 LBP_NL, /**< Next line */ 104 LBP_NL, /**< Next line */
diff --git a/src/static_libs/liblinebreak/wordbreak.c b/src/static_libs/libunibreak/wordbreak.c
index bbbb7f4..60db99e 100644
--- a/src/static_libs/liblinebreak/wordbreak.c
+++ b/src/static_libs/libunibreak/wordbreak.c
@@ -4,7 +4,7 @@
4 * Word breaking in a Unicode sequence. Designed to be used in a 4 * Word breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> 7 * Copyright (C) 2012 Tom Hacohen <tom@stosb.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
@@ -40,11 +40,10 @@
40 * Implementation of the word breaking algorithm as described in Unicode 40 * Implementation of the word breaking algorithm as described in Unicode
41 * Standard Annex 29. 41 * Standard Annex 29.
42 * 42 *
43 * @version 2.0, 2011/12/12 43 * @version 2.2, 2012/02/04
44 * @author Tom Hacohen 44 * @author Tom Hacohen
45 */ 45 */
46 46
47
48#include <assert.h> 47#include <assert.h>
49#include <stddef.h> 48#include <stddef.h>
50#include <string.h> 49#include <string.h>
@@ -52,15 +51,16 @@
52#include "linebreakdef.h" 51#include "linebreakdef.h"
53 52
54#include "wordbreak.h" 53#include "wordbreak.h"
55#include "wordbreakdata.x" 54#include "wordbreakdata.c"
56 55
57#define ARRAY_LEN(x) (sizeof(x) / sizeof(x[0])) 56#define ARRAY_LEN(x) (sizeof(x) / sizeof(x[0]))
58 57
59/* Init the wordbreak internals. */ 58/**
59 * Initializes the wordbreak internals. It currently does nothing, but
60 * it may in the future.
61 */
60void init_wordbreak(void) 62void init_wordbreak(void)
61{ 63{
62 /* Currently does nothing, may be needed in the future. */
63 return;
64} 64}
65 65
66/** 66/**
@@ -68,7 +68,7 @@ void init_wordbreak(void)
68 * 68 *
69 * @param ch character to check 69 * @param ch character to check
70 * @param wbp pointer to the wbp breaking properties array 70 * @param wbp pointer to the wbp breaking properties array
71 * @param len the size of the wbp array in number of items. 71 * @param len size of the wbp array in number of items
72 * @return the word breaking class if found; \c WBP_Any otherwise 72 * @return the word breaking class if found; \c WBP_Any otherwise
73 */ 73 */
74static enum WordBreakClass get_char_wb_class( 74static enum WordBreakClass get_char_wb_class(
@@ -97,21 +97,22 @@ static enum WordBreakClass get_char_wb_class(
97} 97}
98 98
99/** 99/**
100 * Sets the break types in brks starting from posLast up to posStop. 100 * Sets the word break types to a specific value in a range.
101 * 101 *
102 * It sets the inside chars to #WORDBREAK_INSIDECHAR and the rest to brkType. 102 * It sets the inside chars to #WORDBREAK_INSIDEACHAR and the rest to brkType.
103 * Assumes brks is initialized - all the cells with #WORDBREAK_NOBREAK are 103 * Assumes \a brks is initialized - all the cells with #WORDBREAK_NOBREAK are
104 * cells that we really don't want to break after. 104 * cells that we really don't want to break after.
105 * 105 *
106 * @param s the string 106 * @param[in] s input string
107 * @param brks[out] the breaks array to fill. 107 * @param[out] brks breaks array to fill
108 * @param posStart the start position 108 * @param[in] posStart start position
109 * @param posEnd the end position 109 * @param[in] posEnd end position (exclusive)
110 * @param len the length of the string 110 * @param[in] len length of the string
111 * @param brkType the breaks type to use 111 * @param[in] brkType breaks type to use
112 * @param get_next_char function to get the next UTF-32 character 112 * @param[in] get_next_char function to get the next UTF-32 character
113 */ 113 */
114static void set_brks_to(const void *s, 114static void set_brks_to(
115 const void *s,
115 char *brks, 116 char *brks,
116 size_t posStart, 117 size_t posStart,
117 size_t posEnd, 118 size_t posEnd,
@@ -119,26 +120,26 @@ static void set_brks_to(const void *s,
119 char brkType, 120 char brkType,
120 get_next_char_t get_next_char) 121 get_next_char_t get_next_char)
121{ 122{
122 size_t posCur = posStart; 123 size_t posNext = posStart;
123 while (posCur < posEnd) 124 while (posNext < posEnd)
124 { 125 {
125 get_next_char(s, len, &posCur); 126 utf32_t ch;
126 for ( ; posStart < posCur - 1; ++posStart) 127 ch = get_next_char(s, len, &posNext);
127 { 128 assert(ch != EOS);
128 brks[posStart] = WORDBREAK_INSIDECHAR; 129 for (; posStart < posNext - 1; ++posStart)
129 } 130 brks[posStart] = WORDBREAK_INSIDEACHAR;
130 assert(posStart == posCur - 1); 131 assert(posStart == posNext - 1);
131 132
132 /* Only set it if we haven't set it not to break before. */ 133 /* Only set it if we haven't set it not to break before. */
133 if (brks[posStart] != WORDBREAK_NOBREAK) 134 if (brks[posStart] != WORDBREAK_NOBREAK)
134 brks[posStart] = brkType; 135 brks[posStart] = brkType;
135 posStart = posCur; 136 posStart = posNext;
136 } 137 }
137} 138}
138 139
139/* Checks to see if newline, cr, or lf. for WB3a and b */ 140/* Checks to see if the class is newline, CR, or LF (rules WB3a and b). */
140#define IS_WB3ab(cls) ((cls == WBP_Newline) || (cls == WBP_CR) || \ 141#define IS_WB3ab(cls) ((cls == WBP_Newline) || (cls == WBP_CR) || \
141 (cls == WBP_LF)) 142 (cls == WBP_LF))
142 143
143/** 144/**
144 * Sets the word breaking information for a generic input string. 145 * Sets the word breaking information for a generic input string.
@@ -158,204 +159,205 @@ static void set_wordbreaks(
158 char *brks, 159 char *brks,
159 get_next_char_t get_next_char) 160 get_next_char_t get_next_char)
160{ 161{
161 /* Previous class */ 162 enum WordBreakClass wbcLast = WBP_Undefined;
162 enum WordBreakClass p_cls = WBP_Undefined; 163 /* wbcSeqStart is the class that started the current sequence.
163 /* Strong previous class. */ 164 * WBP_Undefined is a special case that means "sot".
164 enum WordBreakClass sp_cls = WBP_Undefined; 165 * This value is the class that is at the start of the current rule
166 * matching sequence. For example, in case of Numeric+MidNum+Numeric
167 * it'll be Numeric all the way.
168 */
169 enum WordBreakClass wbcSeqStart = WBP_Undefined;
165 utf32_t ch; 170 utf32_t ch;
171 size_t posNext = 0;
166 size_t posCur = 0; 172 size_t posCur = 0;
167 size_t posCurSt = 0;
168 size_t posLast = 0; 173 size_t posLast = 0;
169 174
170 /* FIXME: unused atm. */ 175 /* TODO: Language-specific specialization. */
171 (void) lang; 176 (void) lang;
172 177
173 178 /* Init brks. */
174 /* Init brks */
175 memset(brks, WORDBREAK_BREAK, len); 179 memset(brks, WORDBREAK_BREAK, len);
176 180
177 ch = get_next_char(s, len, &posCur); 181 ch = get_next_char(s, len, &posNext);
178 182
179 /* WB3a, WB3b are implied. */ 183 while (ch != EOS)
180 for ( ; ch != EOS ; )
181 { 184 {
182 /* Current class */ 185 enum WordBreakClass wbcCur;
183 enum WordBreakClass c_cls; 186 wbcCur = get_char_wb_class(ch, wb_prop_default,
184 c_cls = get_char_wb_class(ch, wb_prop_default, 187 ARRAY_LEN(wb_prop_default));
185 ARRAY_LEN(wb_prop_default));
186 188
187 switch (c_cls) 189 switch (wbcCur)
188 { 190 {
189 case WBP_CR: 191 case WBP_CR:
190 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 192 /* WB3b */
191 get_next_char); 193 set_brks_to(s, brks, posLast, posCur, len,
192 sp_cls = c_cls; 194 WORDBREAK_BREAK, get_next_char);
193 posLast = posCurSt; 195 wbcSeqStart = wbcCur;
196 posLast = posCur;
194 break; 197 break;
195 198
196 case WBP_LF: 199 case WBP_LF:
197 if (sp_cls == WBP_CR) /* WB3 */ 200 if (wbcSeqStart == WBP_CR) /* WB3 */
198 { 201 {
199 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, 202 set_brks_to(s, brks, posLast, posCur, len,
200 get_next_char); 203 WORDBREAK_NOBREAK, get_next_char);
201 sp_cls = c_cls; 204 wbcSeqStart = wbcCur;
202 posLast = posCurSt; 205 posLast = posCur;
206 break;
203 } 207 }
204 sp_cls = c_cls; 208 /* Fall off */
205 posLast = posCurSt;
206 break;
207 209
208 case WBP_Newline: 210 case WBP_Newline:
209 /* WB3a, WB3b */ 211 /* WB3a,3b */
210 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 212 set_brks_to(s, brks, posLast, posCur, len,
211 get_next_char); 213 WORDBREAK_BREAK, get_next_char);
212 sp_cls = c_cls; 214 wbcSeqStart = wbcCur;
213 posLast = posCurSt; 215 posLast = posCur;
214 break; 216 break;
215 217
216 case WBP_Extend: 218 case WBP_Extend:
217 case WBP_Format: 219 case WBP_Format:
218 /* WB4 - If not the first char/after a newline (W3ab), 220 /* WB4 - If not the first char/after a newline (WB3a,3b), skip
219 * skip this class, set it to be the same as the prev, and mark 221 * this class, set it to be the same as the prev, and mark
220 * brks not to break before them. */ 222 * brks not to break before them. */
221 if ((sp_cls == WBP_Undefined) || IS_WB3ab(sp_cls)) 223 if ((wbcSeqStart == WBP_Undefined) || IS_WB3ab(wbcSeqStart))
222 { 224 {
223 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 225 set_brks_to(s, brks, posLast, posCur, len,
224 get_next_char); 226 WORDBREAK_BREAK, get_next_char);
225 sp_cls = c_cls; 227 wbcSeqStart = wbcCur;
226 } 228 }
227 else 229 else
228 { 230 {
229 /* It's surely not the first */ 231 /* It's surely not the first */
230 brks[posCurSt - 1] = WORDBREAK_NOBREAK; 232 brks[posCur - 1] = WORDBREAK_NOBREAK;
231 /* "inherit" the previous class. */ 233 /* "inherit" the previous class. */
232 c_cls = p_cls; 234 wbcCur = wbcLast;
233 } 235 }
234 break; 236 break;
235 237
236 case WBP_Katakana: 238 case WBP_Katakana:
237 if ((sp_cls == WBP_Katakana) || /* WB13 */ 239 if ((wbcSeqStart == WBP_Katakana) || /* WB13 */
238 (sp_cls == WBP_ExtendNumLet)) /* WB13b */ 240 (wbcSeqStart == WBP_ExtendNumLet)) /* WB13b */
239 { 241 {
240 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, 242 set_brks_to(s, brks, posLast, posCur, len,
241 get_next_char); 243 WORDBREAK_NOBREAK, get_next_char);
242 } 244 }
243 /* No rule found, reset */ 245 /* No rule found, reset */
244 else 246 else
245 { 247 {
246 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 248 set_brks_to(s, brks, posLast, posCur, len,
247 get_next_char); 249 WORDBREAK_BREAK, get_next_char);
248 } 250 }
249 sp_cls = c_cls; 251 wbcSeqStart = wbcCur;
250 posLast = posCurSt; 252 posLast = posCur;
251 break; 253 break;
252 254
253 case WBP_ALetter: 255 case WBP_ALetter:
254 if ((sp_cls == WBP_ALetter) || /* WB5,6,7 */ 256 if ((wbcSeqStart == WBP_ALetter) || /* WB5,6,7 */
255 ((sp_cls == WBP_Numeric) && (p_cls == WBP_Numeric)) || /* WB10 */ 257 (wbcLast == WBP_Numeric) || /* WB10 */
256 (sp_cls == WBP_ExtendNumLet)) /* WB13b */ 258 (wbcSeqStart == WBP_ExtendNumLet)) /* WB13b */
257 { 259 {
258 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, 260 set_brks_to(s, brks, posLast, posCur, len,
259 get_next_char); 261 WORDBREAK_NOBREAK, get_next_char);
260 } 262 }
261 /* No rule found, reset */ 263 /* No rule found, reset */
262 else 264 else
263 { 265 {
264 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 266 set_brks_to(s, brks, posLast, posCur, len,
265 get_next_char); 267 WORDBREAK_BREAK, get_next_char);
266 } 268 }
267 sp_cls = c_cls; 269 wbcSeqStart = wbcCur;
268 posLast = posCurSt; 270 posLast = posCur;
269 break; 271 break;
270 272
271 case WBP_MidNumLet: 273 case WBP_MidNumLet:
272 if ((p_cls == WBP_ALetter) || /* WBP6,7 */ 274 if ((wbcLast == WBP_ALetter) || /* WB6,7 */
273 (p_cls == WBP_Numeric)) /* WBP11,12 */ 275 (wbcLast == WBP_Numeric)) /* WB11,12 */
274 { 276 {
275 /* Go on */ 277 /* Go on */
276 } 278 }
277 else 279 else
278 { 280 {
279 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 281 set_brks_to(s, brks, posLast, posCur, len,
280 get_next_char); 282 WORDBREAK_BREAK, get_next_char);
281 sp_cls = c_cls; 283 wbcSeqStart = wbcCur;
282 posLast = posCurSt; 284 posLast = posCur;
283 } 285 }
284 break; 286 break;
285 287
286 case WBP_MidLetter: 288 case WBP_MidLetter:
287 if (p_cls == WBP_ALetter) /* WBP6,7 */ 289 if (wbcLast == WBP_ALetter) /* WB6,7 */
288 { 290 {
289 /* Go on */ 291 /* Go on */
290 } 292 }
291 else 293 else
292 { 294 {
293 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 295 set_brks_to(s, brks, posLast, posCur, len,
294 get_next_char); 296 WORDBREAK_BREAK, get_next_char);
295 sp_cls = c_cls; 297 wbcSeqStart = wbcCur;
296 posLast = posCurSt; 298 posLast = posCur;
297 } 299 }
298 break; 300 break;
299 301
300 case WBP_MidNum: 302 case WBP_MidNum:
301 if (p_cls == WBP_Numeric) /* WBP11,12 */ 303 if (wbcLast == WBP_Numeric) /* WB11,12 */
302 { 304 {
303 /* Go on */ 305 /* Go on */
304 } 306 }
305 else 307 else
306 { 308 {
307 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 309 set_brks_to(s, brks, posLast, posCur, len,
308 get_next_char); 310 WORDBREAK_BREAK, get_next_char);
309 sp_cls = c_cls; 311 wbcSeqStart = wbcCur;
310 posLast = posCurSt; 312 posLast = posCur;
311 } 313 }
312 break; 314 break;
313 315
314 case WBP_Numeric: 316 case WBP_Numeric:
315 if ((sp_cls == WBP_Numeric) || /* WB8,11,12 */ 317 if ((wbcSeqStart == WBP_Numeric) || /* WB8,11,12 */
316 ((sp_cls == WBP_ALetter) && (p_cls == WBP_ALetter)) || /* WB9 */ 318 (wbcLast == WBP_ALetter) || /* WB9 */
317 (sp_cls == WBP_ExtendNumLet)) /* WB13b */ 319 (wbcSeqStart == WBP_ExtendNumLet)) /* WB13b */
318 { 320 {
319 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, 321 set_brks_to(s, brks, posLast, posCur, len,
320 get_next_char); 322 WORDBREAK_NOBREAK, get_next_char);
321 } 323 }
322 /* No rule found, reset */ 324 /* No rule found, reset */
323 else 325 else
324 { 326 {
325 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 327 set_brks_to(s, brks, posLast, posCur, len,
326 get_next_char); 328 WORDBREAK_BREAK, get_next_char);
327 } 329 }
328 sp_cls = c_cls; 330 wbcSeqStart = wbcCur;
329 posLast = posCurSt; 331 posLast = posCur;
330 break; 332 break;
331 333
332 case WBP_ExtendNumLet: 334 case WBP_ExtendNumLet:
333 /* WB13a,13b */ 335 /* WB13a,13b */
334 if ((sp_cls == p_cls) && 336 if ((wbcSeqStart == wbcLast) &&
335 ((p_cls == WBP_ALetter) || 337 ((wbcLast == WBP_ALetter) ||
336 (p_cls == WBP_Numeric) || 338 (wbcLast == WBP_Numeric) ||
337 (p_cls == WBP_Katakana) || 339 (wbcLast == WBP_Katakana) ||
338 (p_cls == WBP_ExtendNumLet))) 340 (wbcLast == WBP_ExtendNumLet)))
339 { 341 {
340 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_NOBREAK, 342 set_brks_to(s, brks, posLast, posCur, len,
341 get_next_char); 343 WORDBREAK_NOBREAK, get_next_char);
342 } 344 }
343 /* No rule found, reset */ 345 /* No rule found, reset */
344 else 346 else
345 { 347 {
346 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 348 set_brks_to(s, brks, posLast, posCur, len,
347 get_next_char); 349 WORDBREAK_BREAK, get_next_char);
348 } 350 }
349 sp_cls = c_cls; 351 wbcSeqStart = wbcCur;
350 posLast = posCurSt; 352 posLast = posCur;
351 break; 353 break;
352 354
353 case WBP_Any: 355 case WBP_Any:
354 /* Allow breaks and reset */ 356 /* Allow breaks and reset */
355 set_brks_to(s, brks, posLast, posCurSt, len, WORDBREAK_BREAK, 357 set_brks_to(s, brks, posLast, posCur, len,
356 get_next_char); 358 WORDBREAK_BREAK, get_next_char);
357 sp_cls = c_cls; 359 wbcSeqStart = wbcCur;
358 posLast = posCurSt; 360 posLast = posCur;
359 break; 361 break;
360 362
361 default: 363 default:
@@ -364,14 +366,14 @@ static void set_wordbreaks(
364 break; 366 break;
365 } 367 }
366 368
367 p_cls = c_cls; 369 wbcLast = wbcCur;
368 posCurSt = posCur; 370 posCur = posNext;
369 ch = get_next_char(s, len, &posCur); 371 ch = get_next_char(s, len, &posNext);
370 } 372 }
371 373
372 /* WB2 */ 374 /* WB2 */
373 set_brks_to(s, brks, posLast, posCur, len, WORDBREAK_BREAK, 375 set_brks_to(s, brks, posLast, posNext, len,
374 get_next_char); 376 WORDBREAK_BREAK, get_next_char);
375} 377}
376 378
377/** 379/**
diff --git a/src/static_libs/liblinebreak/wordbreak.h b/src/static_libs/libunibreak/wordbreak.h
index 7b7bea7..47bef27 100644
--- a/src/static_libs/liblinebreak/wordbreak.h
+++ b/src/static_libs/libunibreak/wordbreak.h
@@ -4,7 +4,7 @@
4 * Word breaking in a Unicode sequence. Designed to be used in a 4 * Word breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> 7 * Copyright (C) 2012 Tom Hacohen <tom@stosb.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
@@ -39,7 +39,7 @@
39 * 39 *
40 * Header file for the word breaking (segmentation) algorithm. 40 * Header file for the word breaking (segmentation) algorithm.
41 * 41 *
42 * @version 2.0, 2011/12/12 42 * @version 2.2, 2012/02/04
43 * @author Tom Hacohen 43 * @author Tom Hacohen
44 */ 44 */
45 45
@@ -47,15 +47,15 @@
47#define WORDBREAK_H 47#define WORDBREAK_H
48 48
49#include <stddef.h> 49#include <stddef.h>
50#include <linebreak.h> 50#include "linebreak.h"
51 51
52#ifdef __cplusplus 52#ifdef __cplusplus
53extern "C" { 53extern "C" {
54#endif 54#endif
55 55
56#define WORDBREAK_BREAK 0 /* Break found */ 56#define WORDBREAK_BREAK 0 /**< Break is allowed */
57#define WORDBREAK_NOBREAK 1 /**< Break not found */ 57#define WORDBREAK_NOBREAK 1 /**< No break is allowed */
58#define WORDBREAK_INSIDECHAR 2 /**< A UTF-8/16 sequence is unfinished */ 58#define WORDBREAK_INSIDEACHAR 2 /**< A UTF-8/16 sequence is unfinished */
59 59
60void init_wordbreak(void); 60void init_wordbreak(void);
61void set_wordbreaks_utf8( 61void set_wordbreaks_utf8(
diff --git a/src/static_libs/liblinebreak/wordbreakdata.x b/src/static_libs/libunibreak/wordbreakdata.c
index c7278ef..c42c51b 100644
--- a/src/static_libs/liblinebreak/wordbreakdata.x
+++ b/src/static_libs/libunibreak/wordbreakdata.c
@@ -2,8 +2,10 @@
2# WordBreakProperty-6.0.0.txt 2# WordBreakProperty-6.0.0.txt
3# Date: 2010-08-19, 00:48:48 GMT [MD] 3# Date: 2010-08-19, 00:48:48 GMT [MD]
4*/ 4*/
5
5#include "linebreak.h" 6#include "linebreak.h"
6#include "wordbreakdef.h" 7#include "wordbreakdef.h"
8
7static struct WordBreakProperties wb_prop_default[] = { 9static struct WordBreakProperties wb_prop_default[] = {
8 {0x000A, 0x000A, WBP_LF}, 10 {0x000A, 0x000A, WBP_LF},
9 {0x000B, 0x000C, WBP_Newline}, 11 {0x000B, 0x000C, WBP_Newline},
diff --git a/src/static_libs/liblinebreak/wordbreakdef.h b/src/static_libs/libunibreak/wordbreakdef.h
index 331cd01..0b4b165 100644
--- a/src/static_libs/liblinebreak/wordbreakdef.h
+++ b/src/static_libs/libunibreak/wordbreakdef.h
@@ -4,7 +4,7 @@
4 * Word breaking in a Unicode sequence. Designed to be used in a 4 * Word breaking in a Unicode sequence. Designed to be used in a
5 * generic text renderer. 5 * generic text renderer.
6 * 6 *
7 * Copyright (C) 2011-2011 Tom Hacohen <tom@stosb.com> 7 * Copyright (C) 2012 Tom Hacohen <tom@stosb.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
@@ -40,7 +40,7 @@
40 * Definitions of internal data structures, declarations of global 40 * Definitions of internal data structures, declarations of global
41 * variables, and function prototypes for the word breaking algorithm. 41 * variables, and function prototypes for the word breaking algorithm.
42 * 42 *
43 * @version 2.0, 2011/12/12 43 * @version 2.1, 2012/01/18
44 * @author Tom Hacohen 44 * @author Tom Hacohen
45 */ 45 */
46 46
@@ -51,8 +51,6 @@
51enum WordBreakClass 51enum WordBreakClass
52{ 52{
53 WBP_Undefined, 53 WBP_Undefined,
54
55 /* The following break classes are treated in the pair table. */
56 WBP_CR, 54 WBP_CR,
57 WBP_LF, 55 WBP_LF,
58 WBP_Newline, 56 WBP_Newline,