Branch data Line data Source code
1 : : /* -*- mode: C -*-
2 : : *
3 : : * File: pdf-text-ucd-wordbreak.c
4 : : * Date: Sun Mar 09 12:59:01 2008
5 : : *
6 : : * GNU PDF Library - Unicode Character Database - WordBreak Property
7 : : *
8 : : * WARNING! The contents of the arrays in this file are self-generated
9 : : * from the WordBreakProperty.txt file, using the `pdf_text_generate_ucd'
10 : : * utility
11 : : *
12 : : */
13 : :
14 : : /* Copyright (C) 2008-2011 Free Software Foundation, Inc. */
15 : :
16 : : /* This program is free software: you can redistribute it and/or modify
17 : : * it under the terms of the GNU General Public License as published by
18 : : * the Free Software Foundation, either version 3 of the License, or
19 : : * (at your option) any later version.
20 : : *
21 : : * This program is distributed in the hope that it will be useful,
22 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24 : : * GNU General Public License for more details.
25 : : *
26 : : * You should have received a copy of the GNU General Public License
27 : : * along with this program. If not, see <http://www.gnu.org/licenses/>.
28 : : */
29 : :
30 : : #include <config.h>
31 : :
32 : : #include <string.h>
33 : :
34 : : #include <pdf-text-ucd-wordbreak.h>
35 : :
36 : : typedef struct _unicode_wordbreak_info_s {
37 : : pdf_u32_t interval_start;
38 : : pdf_u32_t interval_stop;
39 : : enum pdf_text_ucd_wb_property_e wb_property;
40 : : } unicode_wordbreak_info_t;
41 : :
42 : : /*************** START OF SELF-GENERATED DATA *********************************/
43 : :
44 : : /* Index of first 'CR' interval */
45 : : #define UCD_WB_CR_F 0
46 : : /* Index of last 'CR' interval */
47 : : #define UCD_WB_CR_L 0
48 : : /* Index of first 'LF' interval */
49 : : #define UCD_WB_LF_F 1
50 : : /* Index of last 'LF' interval */
51 : : #define UCD_WB_LF_L 1
52 : : /* Index of first 'NEWLINE' interval */
53 : : #define UCD_WB_NEWLINE_F 2
54 : : /* Index of last 'NEWLINE' interval */
55 : : #define UCD_WB_NEWLINE_L 5
56 : : /* Index of first 'EXTEND' interval */
57 : : #define UCD_WB_EXTEND_F 6
58 : : /* Index of last 'EXTEND' interval */
59 : : #define UCD_WB_EXTEND_L 257
60 : : /* Index of first 'FORMAT' interval */
61 : : #define UCD_WB_FORMAT_F 258
62 : : /* Index of last 'FORMAT' interval */
63 : : #define UCD_WB_FORMAT_L 272
64 : : /* Index of first 'KATAKANA' interval */
65 : : #define UCD_WB_KATAKANA_F 273
66 : : /* Index of last 'KATAKANA' interval */
67 : : #define UCD_WB_KATAKANA_L 284
68 : : /* Index of first 'ALETTER' interval */
69 : : #define UCD_WB_ALETTER_F 285
70 : : /* Index of last 'ALETTER' interval */
71 : : #define UCD_WB_ALETTER_L 668
72 : : /* Index of first 'MIDLETTER' interval */
73 : : #define UCD_WB_MIDLETTER_F 669
74 : : /* Index of last 'MIDLETTER' interval */
75 : : #define UCD_WB_MIDLETTER_L 676
76 : : /* Index of first 'MIDNUM' interval */
77 : : #define UCD_WB_MIDNUM_F 677
78 : : /* Index of last 'MIDNUM' interval */
79 : : #define UCD_WB_MIDNUM_L 690
80 : : /* Index of first 'MIDNUMLET' interval */
81 : : #define UCD_WB_MIDNUMLET_F 691
82 : : /* Index of last 'MIDNUMLET' interval */
83 : : #define UCD_WB_MIDNUMLET_L 698
84 : : /* Index of first 'NUMERIC' interval */
85 : : #define UCD_WB_NUMERIC_F 699
86 : : /* Index of last 'NUMERIC' interval */
87 : : #define UCD_WB_NUMERIC_L 731
88 : : /* Index of first 'EXTENDNUMLET' interval */
89 : : #define UCD_WB_EXTENDNUMLET_F 732
90 : : /* Index of last 'EXTENDNUMLET' interval */
91 : : #define UCD_WB_EXTENDNUMLET_L 737
92 : : #define UCD_WB_INFO_N 738 /* Maximum number of elements in array */
93 : :
94 : :
95 : : static unicode_wordbreak_info_t unicode_wordbreak_info[UCD_WB_INFO_N] = {
96 : : { 0x000D, 0x000D, PDF_TEXT_UCD_WBP_CR }, /* 0 */
97 : : { 0x000A, 0x000A, PDF_TEXT_UCD_WBP_LF }, /* 1 */
98 : : { 0x000B, 0x000C, PDF_TEXT_UCD_WBP_Newline }, /* 2 */
99 : : { 0x0085, 0x0085, PDF_TEXT_UCD_WBP_Newline }, /* 3 */
100 : : { 0x2028, 0x2028, PDF_TEXT_UCD_WBP_Newline }, /* 4 */
101 : : { 0x2029, 0x2029, PDF_TEXT_UCD_WBP_Newline }, /* 5 */
102 : : { 0x0300, 0x036F, PDF_TEXT_UCD_WBP_Extend }, /* 6 */
103 : : { 0x0483, 0x0487, PDF_TEXT_UCD_WBP_Extend }, /* 7 */
104 : : { 0x0488, 0x0489, PDF_TEXT_UCD_WBP_Extend }, /* 8 */
105 : : { 0x0591, 0x05BD, PDF_TEXT_UCD_WBP_Extend }, /* 9 */
106 : : { 0x05BF, 0x05BF, PDF_TEXT_UCD_WBP_Extend }, /* 10 */
107 : : { 0x05C1, 0x05C2, PDF_TEXT_UCD_WBP_Extend }, /* 11 */
108 : : { 0x05C4, 0x05C5, PDF_TEXT_UCD_WBP_Extend }, /* 12 */
109 : : { 0x05C7, 0x05C7, PDF_TEXT_UCD_WBP_Extend }, /* 13 */
110 : : { 0x0610, 0x061A, PDF_TEXT_UCD_WBP_Extend }, /* 14 */
111 : : { 0x064B, 0x065E, PDF_TEXT_UCD_WBP_Extend }, /* 15 */
112 : : { 0x0670, 0x0670, PDF_TEXT_UCD_WBP_Extend }, /* 16 */
113 : : { 0x06D6, 0x06DC, PDF_TEXT_UCD_WBP_Extend }, /* 17 */
114 : : { 0x06DE, 0x06DE, PDF_TEXT_UCD_WBP_Extend }, /* 18 */
115 : : { 0x06DF, 0x06E4, PDF_TEXT_UCD_WBP_Extend }, /* 19 */
116 : : { 0x06E7, 0x06E8, PDF_TEXT_UCD_WBP_Extend }, /* 20 */
117 : : { 0x06EA, 0x06ED, PDF_TEXT_UCD_WBP_Extend }, /* 21 */
118 : : { 0x0711, 0x0711, PDF_TEXT_UCD_WBP_Extend }, /* 22 */
119 : : { 0x0730, 0x074A, PDF_TEXT_UCD_WBP_Extend }, /* 23 */
120 : : { 0x07A6, 0x07B0, PDF_TEXT_UCD_WBP_Extend }, /* 24 */
121 : : { 0x07EB, 0x07F3, PDF_TEXT_UCD_WBP_Extend }, /* 25 */
122 : : { 0x0901, 0x0902, PDF_TEXT_UCD_WBP_Extend }, /* 26 */
123 : : { 0x0903, 0x0903, PDF_TEXT_UCD_WBP_Extend }, /* 27 */
124 : : { 0x093C, 0x093C, PDF_TEXT_UCD_WBP_Extend }, /* 28 */
125 : : { 0x093E, 0x0940, PDF_TEXT_UCD_WBP_Extend }, /* 29 */
126 : : { 0x0941, 0x0948, PDF_TEXT_UCD_WBP_Extend }, /* 30 */
127 : : { 0x0949, 0x094C, PDF_TEXT_UCD_WBP_Extend }, /* 31 */
128 : : { 0x094D, 0x094D, PDF_TEXT_UCD_WBP_Extend }, /* 32 */
129 : : { 0x0951, 0x0954, PDF_TEXT_UCD_WBP_Extend }, /* 33 */
130 : : { 0x0962, 0x0963, PDF_TEXT_UCD_WBP_Extend }, /* 34 */
131 : : { 0x0981, 0x0981, PDF_TEXT_UCD_WBP_Extend }, /* 35 */
132 : : { 0x0982, 0x0983, PDF_TEXT_UCD_WBP_Extend }, /* 36 */
133 : : { 0x09BC, 0x09BC, PDF_TEXT_UCD_WBP_Extend }, /* 37 */
134 : : { 0x09BE, 0x09C0, PDF_TEXT_UCD_WBP_Extend }, /* 38 */
135 : : { 0x09C1, 0x09C4, PDF_TEXT_UCD_WBP_Extend }, /* 39 */
136 : : { 0x09C7, 0x09C8, PDF_TEXT_UCD_WBP_Extend }, /* 40 */
137 : : { 0x09CB, 0x09CC, PDF_TEXT_UCD_WBP_Extend }, /* 41 */
138 : : { 0x09CD, 0x09CD, PDF_TEXT_UCD_WBP_Extend }, /* 42 */
139 : : { 0x09D7, 0x09D7, PDF_TEXT_UCD_WBP_Extend }, /* 43 */
140 : : { 0x09E2, 0x09E3, PDF_TEXT_UCD_WBP_Extend }, /* 44 */
141 : : { 0x0A01, 0x0A02, PDF_TEXT_UCD_WBP_Extend }, /* 45 */
142 : : { 0x0A03, 0x0A03, PDF_TEXT_UCD_WBP_Extend }, /* 46 */
143 : : { 0x0A3C, 0x0A3C, PDF_TEXT_UCD_WBP_Extend }, /* 47 */
144 : : { 0x0A3E, 0x0A40, PDF_TEXT_UCD_WBP_Extend }, /* 48 */
145 : : { 0x0A41, 0x0A42, PDF_TEXT_UCD_WBP_Extend }, /* 49 */
146 : : { 0x0A47, 0x0A48, PDF_TEXT_UCD_WBP_Extend }, /* 50 */
147 : : { 0x0A4B, 0x0A4D, PDF_TEXT_UCD_WBP_Extend }, /* 51 */
148 : : { 0x0A51, 0x0A51, PDF_TEXT_UCD_WBP_Extend }, /* 52 */
149 : : { 0x0A70, 0x0A71, PDF_TEXT_UCD_WBP_Extend }, /* 53 */
150 : : { 0x0A75, 0x0A75, PDF_TEXT_UCD_WBP_Extend }, /* 54 */
151 : : { 0x0A81, 0x0A82, PDF_TEXT_UCD_WBP_Extend }, /* 55 */
152 : : { 0x0A83, 0x0A83, PDF_TEXT_UCD_WBP_Extend }, /* 56 */
153 : : { 0x0ABC, 0x0ABC, PDF_TEXT_UCD_WBP_Extend }, /* 57 */
154 : : { 0x0ABE, 0x0AC0, PDF_TEXT_UCD_WBP_Extend }, /* 58 */
155 : : { 0x0AC1, 0x0AC5, PDF_TEXT_UCD_WBP_Extend }, /* 59 */
156 : : { 0x0AC7, 0x0AC8, PDF_TEXT_UCD_WBP_Extend }, /* 60 */
157 : : { 0x0AC9, 0x0AC9, PDF_TEXT_UCD_WBP_Extend }, /* 61 */
158 : : { 0x0ACB, 0x0ACC, PDF_TEXT_UCD_WBP_Extend }, /* 62 */
159 : : { 0x0ACD, 0x0ACD, PDF_TEXT_UCD_WBP_Extend }, /* 63 */
160 : : { 0x0AE2, 0x0AE3, PDF_TEXT_UCD_WBP_Extend }, /* 64 */
161 : : { 0x0B01, 0x0B01, PDF_TEXT_UCD_WBP_Extend }, /* 65 */
162 : : { 0x0B02, 0x0B03, PDF_TEXT_UCD_WBP_Extend }, /* 66 */
163 : : { 0x0B3C, 0x0B3C, PDF_TEXT_UCD_WBP_Extend }, /* 67 */
164 : : { 0x0B3E, 0x0B3E, PDF_TEXT_UCD_WBP_Extend }, /* 68 */
165 : : { 0x0B3F, 0x0B3F, PDF_TEXT_UCD_WBP_Extend }, /* 69 */
166 : : { 0x0B40, 0x0B40, PDF_TEXT_UCD_WBP_Extend }, /* 70 */
167 : : { 0x0B41, 0x0B44, PDF_TEXT_UCD_WBP_Extend }, /* 71 */
168 : : { 0x0B47, 0x0B48, PDF_TEXT_UCD_WBP_Extend }, /* 72 */
169 : : { 0x0B4B, 0x0B4C, PDF_TEXT_UCD_WBP_Extend }, /* 73 */
170 : : { 0x0B4D, 0x0B4D, PDF_TEXT_UCD_WBP_Extend }, /* 74 */
171 : : { 0x0B56, 0x0B56, PDF_TEXT_UCD_WBP_Extend }, /* 75 */
172 : : { 0x0B57, 0x0B57, PDF_TEXT_UCD_WBP_Extend }, /* 76 */
173 : : { 0x0B62, 0x0B63, PDF_TEXT_UCD_WBP_Extend }, /* 77 */
174 : : { 0x0B82, 0x0B82, PDF_TEXT_UCD_WBP_Extend }, /* 78 */
175 : : { 0x0BBE, 0x0BBF, PDF_TEXT_UCD_WBP_Extend }, /* 79 */
176 : : { 0x0BC0, 0x0BC0, PDF_TEXT_UCD_WBP_Extend }, /* 80 */
177 : : { 0x0BC1, 0x0BC2, PDF_TEXT_UCD_WBP_Extend }, /* 81 */
178 : : { 0x0BC6, 0x0BC8, PDF_TEXT_UCD_WBP_Extend }, /* 82 */
179 : : { 0x0BCA, 0x0BCC, PDF_TEXT_UCD_WBP_Extend }, /* 83 */
180 : : { 0x0BCD, 0x0BCD, PDF_TEXT_UCD_WBP_Extend }, /* 84 */
181 : : { 0x0BD7, 0x0BD7, PDF_TEXT_UCD_WBP_Extend }, /* 85 */
182 : : { 0x0C01, 0x0C03, PDF_TEXT_UCD_WBP_Extend }, /* 86 */
183 : : { 0x0C3E, 0x0C40, PDF_TEXT_UCD_WBP_Extend }, /* 87 */
184 : : { 0x0C41, 0x0C44, PDF_TEXT_UCD_WBP_Extend }, /* 88 */
185 : : { 0x0C46, 0x0C48, PDF_TEXT_UCD_WBP_Extend }, /* 89 */
186 : : { 0x0C4A, 0x0C4D, PDF_TEXT_UCD_WBP_Extend }, /* 90 */
187 : : { 0x0C55, 0x0C56, PDF_TEXT_UCD_WBP_Extend }, /* 91 */
188 : : { 0x0C62, 0x0C63, PDF_TEXT_UCD_WBP_Extend }, /* 92 */
189 : : { 0x0C82, 0x0C83, PDF_TEXT_UCD_WBP_Extend }, /* 93 */
190 : : { 0x0CBC, 0x0CBC, PDF_TEXT_UCD_WBP_Extend }, /* 94 */
191 : : { 0x0CBE, 0x0CBE, PDF_TEXT_UCD_WBP_Extend }, /* 95 */
192 : : { 0x0CBF, 0x0CBF, PDF_TEXT_UCD_WBP_Extend }, /* 96 */
193 : : { 0x0CC0, 0x0CC4, PDF_TEXT_UCD_WBP_Extend }, /* 97 */
194 : : { 0x0CC6, 0x0CC6, PDF_TEXT_UCD_WBP_Extend }, /* 98 */
195 : : { 0x0CC7, 0x0CC8, PDF_TEXT_UCD_WBP_Extend }, /* 99 */
196 : : { 0x0CCA, 0x0CCB, PDF_TEXT_UCD_WBP_Extend }, /* 100 */
197 : : { 0x0CCC, 0x0CCD, PDF_TEXT_UCD_WBP_Extend }, /* 101 */
198 : : { 0x0CD5, 0x0CD6, PDF_TEXT_UCD_WBP_Extend }, /* 102 */
199 : : { 0x0CE2, 0x0CE3, PDF_TEXT_UCD_WBP_Extend }, /* 103 */
200 : : { 0x0D02, 0x0D03, PDF_TEXT_UCD_WBP_Extend }, /* 104 */
201 : : { 0x0D3E, 0x0D40, PDF_TEXT_UCD_WBP_Extend }, /* 105 */
202 : : { 0x0D41, 0x0D44, PDF_TEXT_UCD_WBP_Extend }, /* 106 */
203 : : { 0x0D46, 0x0D48, PDF_TEXT_UCD_WBP_Extend }, /* 107 */
204 : : { 0x0D4A, 0x0D4C, PDF_TEXT_UCD_WBP_Extend }, /* 108 */
205 : : { 0x0D4D, 0x0D4D, PDF_TEXT_UCD_WBP_Extend }, /* 109 */
206 : : { 0x0D57, 0x0D57, PDF_TEXT_UCD_WBP_Extend }, /* 110 */
207 : : { 0x0D62, 0x0D63, PDF_TEXT_UCD_WBP_Extend }, /* 111 */
208 : : { 0x0D82, 0x0D83, PDF_TEXT_UCD_WBP_Extend }, /* 112 */
209 : : { 0x0DCA, 0x0DCA, PDF_TEXT_UCD_WBP_Extend }, /* 113 */
210 : : { 0x0DCF, 0x0DD1, PDF_TEXT_UCD_WBP_Extend }, /* 114 */
211 : : { 0x0DD2, 0x0DD4, PDF_TEXT_UCD_WBP_Extend }, /* 115 */
212 : : { 0x0DD6, 0x0DD6, PDF_TEXT_UCD_WBP_Extend }, /* 116 */
213 : : { 0x0DD8, 0x0DDF, PDF_TEXT_UCD_WBP_Extend }, /* 117 */
214 : : { 0x0DF2, 0x0DF3, PDF_TEXT_UCD_WBP_Extend }, /* 118 */
215 : : { 0x0E31, 0x0E31, PDF_TEXT_UCD_WBP_Extend }, /* 119 */
216 : : { 0x0E34, 0x0E3A, PDF_TEXT_UCD_WBP_Extend }, /* 120 */
217 : : { 0x0E47, 0x0E4E, PDF_TEXT_UCD_WBP_Extend }, /* 121 */
218 : : { 0x0EB1, 0x0EB1, PDF_TEXT_UCD_WBP_Extend }, /* 122 */
219 : : { 0x0EB4, 0x0EB9, PDF_TEXT_UCD_WBP_Extend }, /* 123 */
220 : : { 0x0EBB, 0x0EBC, PDF_TEXT_UCD_WBP_Extend }, /* 124 */
221 : : { 0x0EC8, 0x0ECD, PDF_TEXT_UCD_WBP_Extend }, /* 125 */
222 : : { 0x0F18, 0x0F19, PDF_TEXT_UCD_WBP_Extend }, /* 126 */
223 : : { 0x0F35, 0x0F35, PDF_TEXT_UCD_WBP_Extend }, /* 127 */
224 : : { 0x0F37, 0x0F37, PDF_TEXT_UCD_WBP_Extend }, /* 128 */
225 : : { 0x0F39, 0x0F39, PDF_TEXT_UCD_WBP_Extend }, /* 129 */
226 : : { 0x0F3E, 0x0F3F, PDF_TEXT_UCD_WBP_Extend }, /* 130 */
227 : : { 0x0F71, 0x0F7E, PDF_TEXT_UCD_WBP_Extend }, /* 131 */
228 : : { 0x0F7F, 0x0F7F, PDF_TEXT_UCD_WBP_Extend }, /* 132 */
229 : : { 0x0F80, 0x0F84, PDF_TEXT_UCD_WBP_Extend }, /* 133 */
230 : : { 0x0F86, 0x0F87, PDF_TEXT_UCD_WBP_Extend }, /* 134 */
231 : : { 0x0F90, 0x0F97, PDF_TEXT_UCD_WBP_Extend }, /* 135 */
232 : : { 0x0F99, 0x0FBC, PDF_TEXT_UCD_WBP_Extend }, /* 136 */
233 : : { 0x0FC6, 0x0FC6, PDF_TEXT_UCD_WBP_Extend }, /* 137 */
234 : : { 0x102B, 0x102C, PDF_TEXT_UCD_WBP_Extend }, /* 138 */
235 : : { 0x102D, 0x1030, PDF_TEXT_UCD_WBP_Extend }, /* 139 */
236 : : { 0x1031, 0x1031, PDF_TEXT_UCD_WBP_Extend }, /* 140 */
237 : : { 0x1032, 0x1037, PDF_TEXT_UCD_WBP_Extend }, /* 141 */
238 : : { 0x1038, 0x1038, PDF_TEXT_UCD_WBP_Extend }, /* 142 */
239 : : { 0x1039, 0x103A, PDF_TEXT_UCD_WBP_Extend }, /* 143 */
240 : : { 0x103B, 0x103C, PDF_TEXT_UCD_WBP_Extend }, /* 144 */
241 : : { 0x103D, 0x103E, PDF_TEXT_UCD_WBP_Extend }, /* 145 */
242 : : { 0x1056, 0x1057, PDF_TEXT_UCD_WBP_Extend }, /* 146 */
243 : : { 0x1058, 0x1059, PDF_TEXT_UCD_WBP_Extend }, /* 147 */
244 : : { 0x105E, 0x1060, PDF_TEXT_UCD_WBP_Extend }, /* 148 */
245 : : { 0x1062, 0x1064, PDF_TEXT_UCD_WBP_Extend }, /* 149 */
246 : : { 0x1067, 0x106D, PDF_TEXT_UCD_WBP_Extend }, /* 150 */
247 : : { 0x1071, 0x1074, PDF_TEXT_UCD_WBP_Extend }, /* 151 */
248 : : { 0x1082, 0x1082, PDF_TEXT_UCD_WBP_Extend }, /* 152 */
249 : : { 0x1083, 0x1084, PDF_TEXT_UCD_WBP_Extend }, /* 153 */
250 : : { 0x1085, 0x1086, PDF_TEXT_UCD_WBP_Extend }, /* 154 */
251 : : { 0x1087, 0x108C, PDF_TEXT_UCD_WBP_Extend }, /* 155 */
252 : : { 0x108D, 0x108D, PDF_TEXT_UCD_WBP_Extend }, /* 156 */
253 : : { 0x108F, 0x108F, PDF_TEXT_UCD_WBP_Extend }, /* 157 */
254 : : { 0x135F, 0x135F, PDF_TEXT_UCD_WBP_Extend }, /* 158 */
255 : : { 0x1712, 0x1714, PDF_TEXT_UCD_WBP_Extend }, /* 159 */
256 : : { 0x1732, 0x1734, PDF_TEXT_UCD_WBP_Extend }, /* 160 */
257 : : { 0x1752, 0x1753, PDF_TEXT_UCD_WBP_Extend }, /* 161 */
258 : : { 0x1772, 0x1773, PDF_TEXT_UCD_WBP_Extend }, /* 162 */
259 : : { 0x17B6, 0x17B6, PDF_TEXT_UCD_WBP_Extend }, /* 163 */
260 : : { 0x17B7, 0x17BD, PDF_TEXT_UCD_WBP_Extend }, /* 164 */
261 : : { 0x17BE, 0x17C5, PDF_TEXT_UCD_WBP_Extend }, /* 165 */
262 : : { 0x17C6, 0x17C6, PDF_TEXT_UCD_WBP_Extend }, /* 166 */
263 : : { 0x17C7, 0x17C8, PDF_TEXT_UCD_WBP_Extend }, /* 167 */
264 : : { 0x17C9, 0x17D3, PDF_TEXT_UCD_WBP_Extend }, /* 168 */
265 : : { 0x17DD, 0x17DD, PDF_TEXT_UCD_WBP_Extend }, /* 169 */
266 : : { 0x180B, 0x180D, PDF_TEXT_UCD_WBP_Extend }, /* 170 */
267 : : { 0x18A9, 0x18A9, PDF_TEXT_UCD_WBP_Extend }, /* 171 */
268 : : { 0x1920, 0x1922, PDF_TEXT_UCD_WBP_Extend }, /* 172 */
269 : : { 0x1923, 0x1926, PDF_TEXT_UCD_WBP_Extend }, /* 173 */
270 : : { 0x1927, 0x1928, PDF_TEXT_UCD_WBP_Extend }, /* 174 */
271 : : { 0x1929, 0x192B, PDF_TEXT_UCD_WBP_Extend }, /* 175 */
272 : : { 0x1930, 0x1931, PDF_TEXT_UCD_WBP_Extend }, /* 176 */
273 : : { 0x1932, 0x1932, PDF_TEXT_UCD_WBP_Extend }, /* 177 */
274 : : { 0x1933, 0x1938, PDF_TEXT_UCD_WBP_Extend }, /* 178 */
275 : : { 0x1939, 0x193B, PDF_TEXT_UCD_WBP_Extend }, /* 179 */
276 : : { 0x19B0, 0x19C0, PDF_TEXT_UCD_WBP_Extend }, /* 180 */
277 : : { 0x19C8, 0x19C9, PDF_TEXT_UCD_WBP_Extend }, /* 181 */
278 : : { 0x1A17, 0x1A18, PDF_TEXT_UCD_WBP_Extend }, /* 182 */
279 : : { 0x1A19, 0x1A1B, PDF_TEXT_UCD_WBP_Extend }, /* 183 */
280 : : { 0x1B00, 0x1B03, PDF_TEXT_UCD_WBP_Extend }, /* 184 */
281 : : { 0x1B04, 0x1B04, PDF_TEXT_UCD_WBP_Extend }, /* 185 */
282 : : { 0x1B34, 0x1B34, PDF_TEXT_UCD_WBP_Extend }, /* 186 */
283 : : { 0x1B35, 0x1B35, PDF_TEXT_UCD_WBP_Extend }, /* 187 */
284 : : { 0x1B36, 0x1B3A, PDF_TEXT_UCD_WBP_Extend }, /* 188 */
285 : : { 0x1B3B, 0x1B3B, PDF_TEXT_UCD_WBP_Extend }, /* 189 */
286 : : { 0x1B3C, 0x1B3C, PDF_TEXT_UCD_WBP_Extend }, /* 190 */
287 : : { 0x1B3D, 0x1B41, PDF_TEXT_UCD_WBP_Extend }, /* 191 */
288 : : { 0x1B42, 0x1B42, PDF_TEXT_UCD_WBP_Extend }, /* 192 */
289 : : { 0x1B43, 0x1B44, PDF_TEXT_UCD_WBP_Extend }, /* 193 */
290 : : { 0x1B6B, 0x1B73, PDF_TEXT_UCD_WBP_Extend }, /* 194 */
291 : : { 0x1B80, 0x1B81, PDF_TEXT_UCD_WBP_Extend }, /* 195 */
292 : : { 0x1B82, 0x1B82, PDF_TEXT_UCD_WBP_Extend }, /* 196 */
293 : : { 0x1BA1, 0x1BA1, PDF_TEXT_UCD_WBP_Extend }, /* 197 */
294 : : { 0x1BA2, 0x1BA5, PDF_TEXT_UCD_WBP_Extend }, /* 198 */
295 : : { 0x1BA6, 0x1BA7, PDF_TEXT_UCD_WBP_Extend }, /* 199 */
296 : : { 0x1BA8, 0x1BA9, PDF_TEXT_UCD_WBP_Extend }, /* 200 */
297 : : { 0x1BAA, 0x1BAA, PDF_TEXT_UCD_WBP_Extend }, /* 201 */
298 : : { 0x1C24, 0x1C2B, PDF_TEXT_UCD_WBP_Extend }, /* 202 */
299 : : { 0x1C2C, 0x1C33, PDF_TEXT_UCD_WBP_Extend }, /* 203 */
300 : : { 0x1C34, 0x1C35, PDF_TEXT_UCD_WBP_Extend }, /* 204 */
301 : : { 0x1C36, 0x1C37, PDF_TEXT_UCD_WBP_Extend }, /* 205 */
302 : : { 0x1DC0, 0x1DE6, PDF_TEXT_UCD_WBP_Extend }, /* 206 */
303 : : { 0x1DFE, 0x1DFF, PDF_TEXT_UCD_WBP_Extend }, /* 207 */
304 : : { 0x200C, 0x200D, PDF_TEXT_UCD_WBP_Extend }, /* 208 */
305 : : { 0x20D0, 0x20DC, PDF_TEXT_UCD_WBP_Extend }, /* 209 */
306 : : { 0x20DD, 0x20E0, PDF_TEXT_UCD_WBP_Extend }, /* 210 */
307 : : { 0x20E1, 0x20E1, PDF_TEXT_UCD_WBP_Extend }, /* 211 */
308 : : { 0x20E2, 0x20E4, PDF_TEXT_UCD_WBP_Extend }, /* 212 */
309 : : { 0x20E5, 0x20F0, PDF_TEXT_UCD_WBP_Extend }, /* 213 */
310 : : { 0x2DE0, 0x2DFF, PDF_TEXT_UCD_WBP_Extend }, /* 214 */
311 : : { 0x302A, 0x302F, PDF_TEXT_UCD_WBP_Extend }, /* 215 */
312 : : { 0x3099, 0x309A, PDF_TEXT_UCD_WBP_Extend }, /* 216 */
313 : : { 0xA66F, 0xA66F, PDF_TEXT_UCD_WBP_Extend }, /* 217 */
314 : : { 0xA670, 0xA672, PDF_TEXT_UCD_WBP_Extend }, /* 218 */
315 : : { 0xA67C, 0xA67D, PDF_TEXT_UCD_WBP_Extend }, /* 219 */
316 : : { 0xA802, 0xA802, PDF_TEXT_UCD_WBP_Extend }, /* 220 */
317 : : { 0xA806, 0xA806, PDF_TEXT_UCD_WBP_Extend }, /* 221 */
318 : : { 0xA80B, 0xA80B, PDF_TEXT_UCD_WBP_Extend }, /* 222 */
319 : : { 0xA823, 0xA824, PDF_TEXT_UCD_WBP_Extend }, /* 223 */
320 : : { 0xA825, 0xA826, PDF_TEXT_UCD_WBP_Extend }, /* 224 */
321 : : { 0xA827, 0xA827, PDF_TEXT_UCD_WBP_Extend }, /* 225 */
322 : : { 0xA880, 0xA881, PDF_TEXT_UCD_WBP_Extend }, /* 226 */
323 : : { 0xA8B4, 0xA8C3, PDF_TEXT_UCD_WBP_Extend }, /* 227 */
324 : : { 0xA8C4, 0xA8C4, PDF_TEXT_UCD_WBP_Extend }, /* 228 */
325 : : { 0xA926, 0xA92D, PDF_TEXT_UCD_WBP_Extend }, /* 229 */
326 : : { 0xA947, 0xA951, PDF_TEXT_UCD_WBP_Extend }, /* 230 */
327 : : { 0xA952, 0xA953, PDF_TEXT_UCD_WBP_Extend }, /* 231 */
328 : : { 0xAA29, 0xAA2E, PDF_TEXT_UCD_WBP_Extend }, /* 232 */
329 : : { 0xAA2F, 0xAA30, PDF_TEXT_UCD_WBP_Extend }, /* 233 */
330 : : { 0xAA31, 0xAA32, PDF_TEXT_UCD_WBP_Extend }, /* 234 */
331 : : { 0xAA33, 0xAA34, PDF_TEXT_UCD_WBP_Extend }, /* 235 */
332 : : { 0xAA35, 0xAA36, PDF_TEXT_UCD_WBP_Extend }, /* 236 */
333 : : { 0xAA43, 0xAA43, PDF_TEXT_UCD_WBP_Extend }, /* 237 */
334 : : { 0xAA4C, 0xAA4C, PDF_TEXT_UCD_WBP_Extend }, /* 238 */
335 : : { 0xAA4D, 0xAA4D, PDF_TEXT_UCD_WBP_Extend }, /* 239 */
336 : : { 0xFB1E, 0xFB1E, PDF_TEXT_UCD_WBP_Extend }, /* 240 */
337 : : { 0xFE00, 0xFE0F, PDF_TEXT_UCD_WBP_Extend }, /* 241 */
338 : : { 0xFE20, 0xFE26, PDF_TEXT_UCD_WBP_Extend }, /* 242 */
339 : : { 0xFF9E, 0xFF9F, PDF_TEXT_UCD_WBP_Extend }, /* 243 */
340 : : { 0x101FD, 0x101FD, PDF_TEXT_UCD_WBP_Extend }, /* 244 */
341 : : { 0x10A01, 0x10A03, PDF_TEXT_UCD_WBP_Extend }, /* 245 */
342 : : { 0x10A05, 0x10A06, PDF_TEXT_UCD_WBP_Extend }, /* 246 */
343 : : { 0x10A0C, 0x10A0F, PDF_TEXT_UCD_WBP_Extend }, /* 247 */
344 : : { 0x10A38, 0x10A3A, PDF_TEXT_UCD_WBP_Extend }, /* 248 */
345 : : { 0x10A3F, 0x10A3F, PDF_TEXT_UCD_WBP_Extend }, /* 249 */
346 : : { 0x1D165, 0x1D166, PDF_TEXT_UCD_WBP_Extend }, /* 250 */
347 : : { 0x1D167, 0x1D169, PDF_TEXT_UCD_WBP_Extend }, /* 251 */
348 : : { 0x1D16D, 0x1D172, PDF_TEXT_UCD_WBP_Extend }, /* 252 */
349 : : { 0x1D17B, 0x1D182, PDF_TEXT_UCD_WBP_Extend }, /* 253 */
350 : : { 0x1D185, 0x1D18B, PDF_TEXT_UCD_WBP_Extend }, /* 254 */
351 : : { 0x1D1AA, 0x1D1AD, PDF_TEXT_UCD_WBP_Extend }, /* 255 */
352 : : { 0x1D242, 0x1D244, PDF_TEXT_UCD_WBP_Extend }, /* 256 */
353 : : { 0xE0100, 0xE01EF, PDF_TEXT_UCD_WBP_Extend }, /* 257 */
354 : : { 0x00AD, 0x00AD, PDF_TEXT_UCD_WBP_Format }, /* 258 */
355 : : { 0x0600, 0x0603, PDF_TEXT_UCD_WBP_Format }, /* 259 */
356 : : { 0x06DD, 0x06DD, PDF_TEXT_UCD_WBP_Format }, /* 260 */
357 : : { 0x070F, 0x070F, PDF_TEXT_UCD_WBP_Format }, /* 261 */
358 : : { 0x17B4, 0x17B5, PDF_TEXT_UCD_WBP_Format }, /* 262 */
359 : : { 0x200B, 0x200B, PDF_TEXT_UCD_WBP_Format }, /* 263 */
360 : : { 0x200E, 0x200F, PDF_TEXT_UCD_WBP_Format }, /* 264 */
361 : : { 0x202A, 0x202E, PDF_TEXT_UCD_WBP_Format }, /* 265 */
362 : : { 0x2060, 0x2064, PDF_TEXT_UCD_WBP_Format }, /* 266 */
363 : : { 0x206A, 0x206F, PDF_TEXT_UCD_WBP_Format }, /* 267 */
364 : : { 0xFEFF, 0xFEFF, PDF_TEXT_UCD_WBP_Format }, /* 268 */
365 : : { 0xFFF9, 0xFFFB, PDF_TEXT_UCD_WBP_Format }, /* 269 */
366 : : { 0x1D173, 0x1D17A, PDF_TEXT_UCD_WBP_Format }, /* 270 */
367 : : { 0xE0001, 0xE0001, PDF_TEXT_UCD_WBP_Format }, /* 271 */
368 : : { 0xE0020, 0xE007F, PDF_TEXT_UCD_WBP_Format }, /* 272 */
369 : : { 0x3031, 0x3035, PDF_TEXT_UCD_WBP_Katakana }, /* 273 */
370 : : { 0x309B, 0x309C, PDF_TEXT_UCD_WBP_Katakana }, /* 274 */
371 : : { 0x30A0, 0x30A0, PDF_TEXT_UCD_WBP_Katakana }, /* 275 */
372 : : { 0x30A1, 0x30FA, PDF_TEXT_UCD_WBP_Katakana }, /* 276 */
373 : : { 0x30FC, 0x30FE, PDF_TEXT_UCD_WBP_Katakana }, /* 277 */
374 : : { 0x30FF, 0x30FF, PDF_TEXT_UCD_WBP_Katakana }, /* 278 */
375 : : { 0x31F0, 0x31FF, PDF_TEXT_UCD_WBP_Katakana }, /* 279 */
376 : : { 0x32D0, 0x32FE, PDF_TEXT_UCD_WBP_Katakana }, /* 280 */
377 : : { 0x3300, 0x3357, PDF_TEXT_UCD_WBP_Katakana }, /* 281 */
378 : : { 0xFF66, 0xFF6F, PDF_TEXT_UCD_WBP_Katakana }, /* 282 */
379 : : { 0xFF70, 0xFF70, PDF_TEXT_UCD_WBP_Katakana }, /* 283 */
380 : : { 0xFF71, 0xFF9D, PDF_TEXT_UCD_WBP_Katakana }, /* 284 */
381 : : { 0x0041, 0x005A, PDF_TEXT_UCD_WBP_ALetter }, /* 285 */
382 : : { 0x0061, 0x007A, PDF_TEXT_UCD_WBP_ALetter }, /* 286 */
383 : : { 0x00AA, 0x00AA, PDF_TEXT_UCD_WBP_ALetter }, /* 287 */
384 : : { 0x00B5, 0x00B5, PDF_TEXT_UCD_WBP_ALetter }, /* 288 */
385 : : { 0x00BA, 0x00BA, PDF_TEXT_UCD_WBP_ALetter }, /* 289 */
386 : : { 0x00C0, 0x00D6, PDF_TEXT_UCD_WBP_ALetter }, /* 290 */
387 : : { 0x00D8, 0x00F6, PDF_TEXT_UCD_WBP_ALetter }, /* 291 */
388 : : { 0x00F8, 0x01BA, PDF_TEXT_UCD_WBP_ALetter }, /* 292 */
389 : : { 0x01BB, 0x01BB, PDF_TEXT_UCD_WBP_ALetter }, /* 293 */
390 : : { 0x01BC, 0x01BF, PDF_TEXT_UCD_WBP_ALetter }, /* 294 */
391 : : { 0x01C0, 0x01C3, PDF_TEXT_UCD_WBP_ALetter }, /* 295 */
392 : : { 0x01C4, 0x0293, PDF_TEXT_UCD_WBP_ALetter }, /* 296 */
393 : : { 0x0294, 0x0294, PDF_TEXT_UCD_WBP_ALetter }, /* 297 */
394 : : { 0x0295, 0x02AF, PDF_TEXT_UCD_WBP_ALetter }, /* 298 */
395 : : { 0x02B0, 0x02C1, PDF_TEXT_UCD_WBP_ALetter }, /* 299 */
396 : : { 0x02C6, 0x02D1, PDF_TEXT_UCD_WBP_ALetter }, /* 300 */
397 : : { 0x02E0, 0x02E4, PDF_TEXT_UCD_WBP_ALetter }, /* 301 */
398 : : { 0x02EC, 0x02EC, PDF_TEXT_UCD_WBP_ALetter }, /* 302 */
399 : : { 0x02EE, 0x02EE, PDF_TEXT_UCD_WBP_ALetter }, /* 303 */
400 : : { 0x0370, 0x0373, PDF_TEXT_UCD_WBP_ALetter }, /* 304 */
401 : : { 0x0374, 0x0374, PDF_TEXT_UCD_WBP_ALetter }, /* 305 */
402 : : { 0x0376, 0x0377, PDF_TEXT_UCD_WBP_ALetter }, /* 306 */
403 : : { 0x037A, 0x037A, PDF_TEXT_UCD_WBP_ALetter }, /* 307 */
404 : : { 0x037B, 0x037D, PDF_TEXT_UCD_WBP_ALetter }, /* 308 */
405 : : { 0x0386, 0x0386, PDF_TEXT_UCD_WBP_ALetter }, /* 309 */
406 : : { 0x0388, 0x038A, PDF_TEXT_UCD_WBP_ALetter }, /* 310 */
407 : : { 0x038C, 0x038C, PDF_TEXT_UCD_WBP_ALetter }, /* 311 */
408 : : { 0x038E, 0x03A1, PDF_TEXT_UCD_WBP_ALetter }, /* 312 */
409 : : { 0x03A3, 0x03F5, PDF_TEXT_UCD_WBP_ALetter }, /* 313 */
410 : : { 0x03F7, 0x0481, PDF_TEXT_UCD_WBP_ALetter }, /* 314 */
411 : : { 0x048A, 0x0523, PDF_TEXT_UCD_WBP_ALetter }, /* 315 */
412 : : { 0x0531, 0x0556, PDF_TEXT_UCD_WBP_ALetter }, /* 316 */
413 : : { 0x0559, 0x0559, PDF_TEXT_UCD_WBP_ALetter }, /* 317 */
414 : : { 0x0561, 0x0587, PDF_TEXT_UCD_WBP_ALetter }, /* 318 */
415 : : { 0x05D0, 0x05EA, PDF_TEXT_UCD_WBP_ALetter }, /* 319 */
416 : : { 0x05F0, 0x05F2, PDF_TEXT_UCD_WBP_ALetter }, /* 320 */
417 : : { 0x05F3, 0x05F3, PDF_TEXT_UCD_WBP_ALetter }, /* 321 */
418 : : { 0x0621, 0x063F, PDF_TEXT_UCD_WBP_ALetter }, /* 322 */
419 : : { 0x0640, 0x0640, PDF_TEXT_UCD_WBP_ALetter }, /* 323 */
420 : : { 0x0641, 0x064A, PDF_TEXT_UCD_WBP_ALetter }, /* 324 */
421 : : { 0x066E, 0x066F, PDF_TEXT_UCD_WBP_ALetter }, /* 325 */
422 : : { 0x0671, 0x06D3, PDF_TEXT_UCD_WBP_ALetter }, /* 326 */
423 : : { 0x06D5, 0x06D5, PDF_TEXT_UCD_WBP_ALetter }, /* 327 */
424 : : { 0x06E5, 0x06E6, PDF_TEXT_UCD_WBP_ALetter }, /* 328 */
425 : : { 0x06EE, 0x06EF, PDF_TEXT_UCD_WBP_ALetter }, /* 329 */
426 : : { 0x06FA, 0x06FC, PDF_TEXT_UCD_WBP_ALetter }, /* 330 */
427 : : { 0x06FF, 0x06FF, PDF_TEXT_UCD_WBP_ALetter }, /* 331 */
428 : : { 0x0710, 0x0710, PDF_TEXT_UCD_WBP_ALetter }, /* 332 */
429 : : { 0x0712, 0x072F, PDF_TEXT_UCD_WBP_ALetter }, /* 333 */
430 : : { 0x074D, 0x07A5, PDF_TEXT_UCD_WBP_ALetter }, /* 334 */
431 : : { 0x07B1, 0x07B1, PDF_TEXT_UCD_WBP_ALetter }, /* 335 */
432 : : { 0x07CA, 0x07EA, PDF_TEXT_UCD_WBP_ALetter }, /* 336 */
433 : : { 0x07F4, 0x07F5, PDF_TEXT_UCD_WBP_ALetter }, /* 337 */
434 : : { 0x07FA, 0x07FA, PDF_TEXT_UCD_WBP_ALetter }, /* 338 */
435 : : { 0x0904, 0x0939, PDF_TEXT_UCD_WBP_ALetter }, /* 339 */
436 : : { 0x093D, 0x093D, PDF_TEXT_UCD_WBP_ALetter }, /* 340 */
437 : : { 0x0950, 0x0950, PDF_TEXT_UCD_WBP_ALetter }, /* 341 */
438 : : { 0x0958, 0x0961, PDF_TEXT_UCD_WBP_ALetter }, /* 342 */
439 : : { 0x0971, 0x0971, PDF_TEXT_UCD_WBP_ALetter }, /* 343 */
440 : : { 0x0972, 0x0972, PDF_TEXT_UCD_WBP_ALetter }, /* 344 */
441 : : { 0x097B, 0x097F, PDF_TEXT_UCD_WBP_ALetter }, /* 345 */
442 : : { 0x0985, 0x098C, PDF_TEXT_UCD_WBP_ALetter }, /* 346 */
443 : : { 0x098F, 0x0990, PDF_TEXT_UCD_WBP_ALetter }, /* 347 */
444 : : { 0x0993, 0x09A8, PDF_TEXT_UCD_WBP_ALetter }, /* 348 */
445 : : { 0x09AA, 0x09B0, PDF_TEXT_UCD_WBP_ALetter }, /* 349 */
446 : : { 0x09B2, 0x09B2, PDF_TEXT_UCD_WBP_ALetter }, /* 350 */
447 : : { 0x09B6, 0x09B9, PDF_TEXT_UCD_WBP_ALetter }, /* 351 */
448 : : { 0x09BD, 0x09BD, PDF_TEXT_UCD_WBP_ALetter }, /* 352 */
449 : : { 0x09CE, 0x09CE, PDF_TEXT_UCD_WBP_ALetter }, /* 353 */
450 : : { 0x09DC, 0x09DD, PDF_TEXT_UCD_WBP_ALetter }, /* 354 */
451 : : { 0x09DF, 0x09E1, PDF_TEXT_UCD_WBP_ALetter }, /* 355 */
452 : : { 0x09F0, 0x09F1, PDF_TEXT_UCD_WBP_ALetter }, /* 356 */
453 : : { 0x0A05, 0x0A0A, PDF_TEXT_UCD_WBP_ALetter }, /* 357 */
454 : : { 0x0A0F, 0x0A10, PDF_TEXT_UCD_WBP_ALetter }, /* 358 */
455 : : { 0x0A13, 0x0A28, PDF_TEXT_UCD_WBP_ALetter }, /* 359 */
456 : : { 0x0A2A, 0x0A30, PDF_TEXT_UCD_WBP_ALetter }, /* 360 */
457 : : { 0x0A32, 0x0A33, PDF_TEXT_UCD_WBP_ALetter }, /* 361 */
458 : : { 0x0A35, 0x0A36, PDF_TEXT_UCD_WBP_ALetter }, /* 362 */
459 : : { 0x0A38, 0x0A39, PDF_TEXT_UCD_WBP_ALetter }, /* 363 */
460 : : { 0x0A59, 0x0A5C, PDF_TEXT_UCD_WBP_ALetter }, /* 364 */
461 : : { 0x0A5E, 0x0A5E, PDF_TEXT_UCD_WBP_ALetter }, /* 365 */
462 : : { 0x0A72, 0x0A74, PDF_TEXT_UCD_WBP_ALetter }, /* 366 */
463 : : { 0x0A85, 0x0A8D, PDF_TEXT_UCD_WBP_ALetter }, /* 367 */
464 : : { 0x0A8F, 0x0A91, PDF_TEXT_UCD_WBP_ALetter }, /* 368 */
465 : : { 0x0A93, 0x0AA8, PDF_TEXT_UCD_WBP_ALetter }, /* 369 */
466 : : { 0x0AAA, 0x0AB0, PDF_TEXT_UCD_WBP_ALetter }, /* 370 */
467 : : { 0x0AB2, 0x0AB3, PDF_TEXT_UCD_WBP_ALetter }, /* 371 */
468 : : { 0x0AB5, 0x0AB9, PDF_TEXT_UCD_WBP_ALetter }, /* 372 */
469 : : { 0x0ABD, 0x0ABD, PDF_TEXT_UCD_WBP_ALetter }, /* 373 */
470 : : { 0x0AD0, 0x0AD0, PDF_TEXT_UCD_WBP_ALetter }, /* 374 */
471 : : { 0x0AE0, 0x0AE1, PDF_TEXT_UCD_WBP_ALetter }, /* 375 */
472 : : { 0x0B05, 0x0B0C, PDF_TEXT_UCD_WBP_ALetter }, /* 376 */
473 : : { 0x0B0F, 0x0B10, PDF_TEXT_UCD_WBP_ALetter }, /* 377 */
474 : : { 0x0B13, 0x0B28, PDF_TEXT_UCD_WBP_ALetter }, /* 378 */
475 : : { 0x0B2A, 0x0B30, PDF_TEXT_UCD_WBP_ALetter }, /* 379 */
476 : : { 0x0B32, 0x0B33, PDF_TEXT_UCD_WBP_ALetter }, /* 380 */
477 : : { 0x0B35, 0x0B39, PDF_TEXT_UCD_WBP_ALetter }, /* 381 */
478 : : { 0x0B3D, 0x0B3D, PDF_TEXT_UCD_WBP_ALetter }, /* 382 */
479 : : { 0x0B5C, 0x0B5D, PDF_TEXT_UCD_WBP_ALetter }, /* 383 */
480 : : { 0x0B5F, 0x0B61, PDF_TEXT_UCD_WBP_ALetter }, /* 384 */
481 : : { 0x0B71, 0x0B71, PDF_TEXT_UCD_WBP_ALetter }, /* 385 */
482 : : { 0x0B83, 0x0B83, PDF_TEXT_UCD_WBP_ALetter }, /* 386 */
483 : : { 0x0B85, 0x0B8A, PDF_TEXT_UCD_WBP_ALetter }, /* 387 */
484 : : { 0x0B8E, 0x0B90, PDF_TEXT_UCD_WBP_ALetter }, /* 388 */
485 : : { 0x0B92, 0x0B95, PDF_TEXT_UCD_WBP_ALetter }, /* 389 */
486 : : { 0x0B99, 0x0B9A, PDF_TEXT_UCD_WBP_ALetter }, /* 390 */
487 : : { 0x0B9C, 0x0B9C, PDF_TEXT_UCD_WBP_ALetter }, /* 391 */
488 : : { 0x0B9E, 0x0B9F, PDF_TEXT_UCD_WBP_ALetter }, /* 392 */
489 : : { 0x0BA3, 0x0BA4, PDF_TEXT_UCD_WBP_ALetter }, /* 393 */
490 : : { 0x0BA8, 0x0BAA, PDF_TEXT_UCD_WBP_ALetter }, /* 394 */
491 : : { 0x0BAE, 0x0BB9, PDF_TEXT_UCD_WBP_ALetter }, /* 395 */
492 : : { 0x0BD0, 0x0BD0, PDF_TEXT_UCD_WBP_ALetter }, /* 396 */
493 : : { 0x0C05, 0x0C0C, PDF_TEXT_UCD_WBP_ALetter }, /* 397 */
494 : : { 0x0C0E, 0x0C10, PDF_TEXT_UCD_WBP_ALetter }, /* 398 */
495 : : { 0x0C12, 0x0C28, PDF_TEXT_UCD_WBP_ALetter }, /* 399 */
496 : : { 0x0C2A, 0x0C33, PDF_TEXT_UCD_WBP_ALetter }, /* 400 */
497 : : { 0x0C35, 0x0C39, PDF_TEXT_UCD_WBP_ALetter }, /* 401 */
498 : : { 0x0C3D, 0x0C3D, PDF_TEXT_UCD_WBP_ALetter }, /* 402 */
499 : : { 0x0C58, 0x0C59, PDF_TEXT_UCD_WBP_ALetter }, /* 403 */
500 : : { 0x0C60, 0x0C61, PDF_TEXT_UCD_WBP_ALetter }, /* 404 */
501 : : { 0x0C85, 0x0C8C, PDF_TEXT_UCD_WBP_ALetter }, /* 405 */
502 : : { 0x0C8E, 0x0C90, PDF_TEXT_UCD_WBP_ALetter }, /* 406 */
503 : : { 0x0C92, 0x0CA8, PDF_TEXT_UCD_WBP_ALetter }, /* 407 */
504 : : { 0x0CAA, 0x0CB3, PDF_TEXT_UCD_WBP_ALetter }, /* 408 */
505 : : { 0x0CB5, 0x0CB9, PDF_TEXT_UCD_WBP_ALetter }, /* 409 */
506 : : { 0x0CBD, 0x0CBD, PDF_TEXT_UCD_WBP_ALetter }, /* 410 */
507 : : { 0x0CDE, 0x0CDE, PDF_TEXT_UCD_WBP_ALetter }, /* 411 */
508 : : { 0x0CE0, 0x0CE1, PDF_TEXT_UCD_WBP_ALetter }, /* 412 */
509 : : { 0x0D05, 0x0D0C, PDF_TEXT_UCD_WBP_ALetter }, /* 413 */
510 : : { 0x0D0E, 0x0D10, PDF_TEXT_UCD_WBP_ALetter }, /* 414 */
511 : : { 0x0D12, 0x0D28, PDF_TEXT_UCD_WBP_ALetter }, /* 415 */
512 : : { 0x0D2A, 0x0D39, PDF_TEXT_UCD_WBP_ALetter }, /* 416 */
513 : : { 0x0D3D, 0x0D3D, PDF_TEXT_UCD_WBP_ALetter }, /* 417 */
514 : : { 0x0D60, 0x0D61, PDF_TEXT_UCD_WBP_ALetter }, /* 418 */
515 : : { 0x0D7A, 0x0D7F, PDF_TEXT_UCD_WBP_ALetter }, /* 419 */
516 : : { 0x0D85, 0x0D96, PDF_TEXT_UCD_WBP_ALetter }, /* 420 */
517 : : { 0x0D9A, 0x0DB1, PDF_TEXT_UCD_WBP_ALetter }, /* 421 */
518 : : { 0x0DB3, 0x0DBB, PDF_TEXT_UCD_WBP_ALetter }, /* 422 */
519 : : { 0x0DBD, 0x0DBD, PDF_TEXT_UCD_WBP_ALetter }, /* 423 */
520 : : { 0x0DC0, 0x0DC6, PDF_TEXT_UCD_WBP_ALetter }, /* 424 */
521 : : { 0x0F00, 0x0F00, PDF_TEXT_UCD_WBP_ALetter }, /* 425 */
522 : : { 0x0F40, 0x0F47, PDF_TEXT_UCD_WBP_ALetter }, /* 426 */
523 : : { 0x0F49, 0x0F6C, PDF_TEXT_UCD_WBP_ALetter }, /* 427 */
524 : : { 0x0F88, 0x0F8B, PDF_TEXT_UCD_WBP_ALetter }, /* 428 */
525 : : { 0x10A0, 0x10C5, PDF_TEXT_UCD_WBP_ALetter }, /* 429 */
526 : : { 0x10D0, 0x10FA, PDF_TEXT_UCD_WBP_ALetter }, /* 430 */
527 : : { 0x10FC, 0x10FC, PDF_TEXT_UCD_WBP_ALetter }, /* 431 */
528 : : { 0x1100, 0x1159, PDF_TEXT_UCD_WBP_ALetter }, /* 432 */
529 : : { 0x115F, 0x11A2, PDF_TEXT_UCD_WBP_ALetter }, /* 433 */
530 : : { 0x11A8, 0x11F9, PDF_TEXT_UCD_WBP_ALetter }, /* 434 */
531 : : { 0x1200, 0x1248, PDF_TEXT_UCD_WBP_ALetter }, /* 435 */
532 : : { 0x124A, 0x124D, PDF_TEXT_UCD_WBP_ALetter }, /* 436 */
533 : : { 0x1250, 0x1256, PDF_TEXT_UCD_WBP_ALetter }, /* 437 */
534 : : { 0x1258, 0x1258, PDF_TEXT_UCD_WBP_ALetter }, /* 438 */
535 : : { 0x125A, 0x125D, PDF_TEXT_UCD_WBP_ALetter }, /* 439 */
536 : : { 0x1260, 0x1288, PDF_TEXT_UCD_WBP_ALetter }, /* 440 */
537 : : { 0x128A, 0x128D, PDF_TEXT_UCD_WBP_ALetter }, /* 441 */
538 : : { 0x1290, 0x12B0, PDF_TEXT_UCD_WBP_ALetter }, /* 442 */
539 : : { 0x12B2, 0x12B5, PDF_TEXT_UCD_WBP_ALetter }, /* 443 */
540 : : { 0x12B8, 0x12BE, PDF_TEXT_UCD_WBP_ALetter }, /* 444 */
541 : : { 0x12C0, 0x12C0, PDF_TEXT_UCD_WBP_ALetter }, /* 445 */
542 : : { 0x12C2, 0x12C5, PDF_TEXT_UCD_WBP_ALetter }, /* 446 */
543 : : { 0x12C8, 0x12D6, PDF_TEXT_UCD_WBP_ALetter }, /* 447 */
544 : : { 0x12D8, 0x1310, PDF_TEXT_UCD_WBP_ALetter }, /* 448 */
545 : : { 0x1312, 0x1315, PDF_TEXT_UCD_WBP_ALetter }, /* 449 */
546 : : { 0x1318, 0x135A, PDF_TEXT_UCD_WBP_ALetter }, /* 450 */
547 : : { 0x1380, 0x138F, PDF_TEXT_UCD_WBP_ALetter }, /* 451 */
548 : : { 0x13A0, 0x13F4, PDF_TEXT_UCD_WBP_ALetter }, /* 452 */
549 : : { 0x1401, 0x166C, PDF_TEXT_UCD_WBP_ALetter }, /* 453 */
550 : : { 0x166F, 0x1676, PDF_TEXT_UCD_WBP_ALetter }, /* 454 */
551 : : { 0x1681, 0x169A, PDF_TEXT_UCD_WBP_ALetter }, /* 455 */
552 : : { 0x16A0, 0x16EA, PDF_TEXT_UCD_WBP_ALetter }, /* 456 */
553 : : { 0x16EE, 0x16F0, PDF_TEXT_UCD_WBP_ALetter }, /* 457 */
554 : : { 0x1700, 0x170C, PDF_TEXT_UCD_WBP_ALetter }, /* 458 */
555 : : { 0x170E, 0x1711, PDF_TEXT_UCD_WBP_ALetter }, /* 459 */
556 : : { 0x1720, 0x1731, PDF_TEXT_UCD_WBP_ALetter }, /* 460 */
557 : : { 0x1740, 0x1751, PDF_TEXT_UCD_WBP_ALetter }, /* 461 */
558 : : { 0x1760, 0x176C, PDF_TEXT_UCD_WBP_ALetter }, /* 462 */
559 : : { 0x176E, 0x1770, PDF_TEXT_UCD_WBP_ALetter }, /* 463 */
560 : : { 0x1820, 0x1842, PDF_TEXT_UCD_WBP_ALetter }, /* 464 */
561 : : { 0x1843, 0x1843, PDF_TEXT_UCD_WBP_ALetter }, /* 465 */
562 : : { 0x1844, 0x1877, PDF_TEXT_UCD_WBP_ALetter }, /* 466 */
563 : : { 0x1880, 0x18A8, PDF_TEXT_UCD_WBP_ALetter }, /* 467 */
564 : : { 0x18AA, 0x18AA, PDF_TEXT_UCD_WBP_ALetter }, /* 468 */
565 : : { 0x1900, 0x191C, PDF_TEXT_UCD_WBP_ALetter }, /* 469 */
566 : : { 0x1A00, 0x1A16, PDF_TEXT_UCD_WBP_ALetter }, /* 470 */
567 : : { 0x1B05, 0x1B33, PDF_TEXT_UCD_WBP_ALetter }, /* 471 */
568 : : { 0x1B45, 0x1B4B, PDF_TEXT_UCD_WBP_ALetter }, /* 472 */
569 : : { 0x1B83, 0x1BA0, PDF_TEXT_UCD_WBP_ALetter }, /* 473 */
570 : : { 0x1BAE, 0x1BAF, PDF_TEXT_UCD_WBP_ALetter }, /* 474 */
571 : : { 0x1C00, 0x1C23, PDF_TEXT_UCD_WBP_ALetter }, /* 475 */
572 : : { 0x1C4D, 0x1C4F, PDF_TEXT_UCD_WBP_ALetter }, /* 476 */
573 : : { 0x1C5A, 0x1C77, PDF_TEXT_UCD_WBP_ALetter }, /* 477 */
574 : : { 0x1C78, 0x1C7D, PDF_TEXT_UCD_WBP_ALetter }, /* 478 */
575 : : { 0x1D00, 0x1D2B, PDF_TEXT_UCD_WBP_ALetter }, /* 479 */
576 : : { 0x1D2C, 0x1D61, PDF_TEXT_UCD_WBP_ALetter }, /* 480 */
577 : : { 0x1D62, 0x1D77, PDF_TEXT_UCD_WBP_ALetter }, /* 481 */
578 : : { 0x1D78, 0x1D78, PDF_TEXT_UCD_WBP_ALetter }, /* 482 */
579 : : { 0x1D79, 0x1D9A, PDF_TEXT_UCD_WBP_ALetter }, /* 483 */
580 : : { 0x1D9B, 0x1DBF, PDF_TEXT_UCD_WBP_ALetter }, /* 484 */
581 : : { 0x1E00, 0x1F15, PDF_TEXT_UCD_WBP_ALetter }, /* 485 */
582 : : { 0x1F18, 0x1F1D, PDF_TEXT_UCD_WBP_ALetter }, /* 486 */
583 : : { 0x1F20, 0x1F45, PDF_TEXT_UCD_WBP_ALetter }, /* 487 */
584 : : { 0x1F48, 0x1F4D, PDF_TEXT_UCD_WBP_ALetter }, /* 488 */
585 : : { 0x1F50, 0x1F57, PDF_TEXT_UCD_WBP_ALetter }, /* 489 */
586 : : { 0x1F59, 0x1F59, PDF_TEXT_UCD_WBP_ALetter }, /* 490 */
587 : : { 0x1F5B, 0x1F5B, PDF_TEXT_UCD_WBP_ALetter }, /* 491 */
588 : : { 0x1F5D, 0x1F5D, PDF_TEXT_UCD_WBP_ALetter }, /* 492 */
589 : : { 0x1F5F, 0x1F7D, PDF_TEXT_UCD_WBP_ALetter }, /* 493 */
590 : : { 0x1F80, 0x1FB4, PDF_TEXT_UCD_WBP_ALetter }, /* 494 */
591 : : { 0x1FB6, 0x1FBC, PDF_TEXT_UCD_WBP_ALetter }, /* 495 */
592 : : { 0x1FBE, 0x1FBE, PDF_TEXT_UCD_WBP_ALetter }, /* 496 */
593 : : { 0x1FC2, 0x1FC4, PDF_TEXT_UCD_WBP_ALetter }, /* 497 */
594 : : { 0x1FC6, 0x1FCC, PDF_TEXT_UCD_WBP_ALetter }, /* 498 */
595 : : { 0x1FD0, 0x1FD3, PDF_TEXT_UCD_WBP_ALetter }, /* 499 */
596 : : { 0x1FD6, 0x1FDB, PDF_TEXT_UCD_WBP_ALetter }, /* 500 */
597 : : { 0x1FE0, 0x1FEC, PDF_TEXT_UCD_WBP_ALetter }, /* 501 */
598 : : { 0x1FF2, 0x1FF4, PDF_TEXT_UCD_WBP_ALetter }, /* 502 */
599 : : { 0x1FF6, 0x1FFC, PDF_TEXT_UCD_WBP_ALetter }, /* 503 */
600 : : { 0x2071, 0x2071, PDF_TEXT_UCD_WBP_ALetter }, /* 504 */
601 : : { 0x207F, 0x207F, PDF_TEXT_UCD_WBP_ALetter }, /* 505 */
602 : : { 0x2090, 0x2094, PDF_TEXT_UCD_WBP_ALetter }, /* 506 */
603 : : { 0x2102, 0x2102, PDF_TEXT_UCD_WBP_ALetter }, /* 507 */
604 : : { 0x2107, 0x2107, PDF_TEXT_UCD_WBP_ALetter }, /* 508 */
605 : : { 0x210A, 0x2113, PDF_TEXT_UCD_WBP_ALetter }, /* 509 */
606 : : { 0x2115, 0x2115, PDF_TEXT_UCD_WBP_ALetter }, /* 510 */
607 : : { 0x2119, 0x211D, PDF_TEXT_UCD_WBP_ALetter }, /* 511 */
608 : : { 0x2124, 0x2124, PDF_TEXT_UCD_WBP_ALetter }, /* 512 */
609 : : { 0x2126, 0x2126, PDF_TEXT_UCD_WBP_ALetter }, /* 513 */
610 : : { 0x2128, 0x2128, PDF_TEXT_UCD_WBP_ALetter }, /* 514 */
611 : : { 0x212A, 0x212D, PDF_TEXT_UCD_WBP_ALetter }, /* 515 */
612 : : { 0x212F, 0x2134, PDF_TEXT_UCD_WBP_ALetter }, /* 516 */
613 : : { 0x2135, 0x2138, PDF_TEXT_UCD_WBP_ALetter }, /* 517 */
614 : : { 0x2139, 0x2139, PDF_TEXT_UCD_WBP_ALetter }, /* 518 */
615 : : { 0x213C, 0x213F, PDF_TEXT_UCD_WBP_ALetter }, /* 519 */
616 : : { 0x2145, 0x2149, PDF_TEXT_UCD_WBP_ALetter }, /* 520 */
617 : : { 0x214E, 0x214E, PDF_TEXT_UCD_WBP_ALetter }, /* 521 */
618 : : { 0x2160, 0x2182, PDF_TEXT_UCD_WBP_ALetter }, /* 522 */
619 : : { 0x2183, 0x2184, PDF_TEXT_UCD_WBP_ALetter }, /* 523 */
620 : : { 0x2185, 0x2188, PDF_TEXT_UCD_WBP_ALetter }, /* 524 */
621 : : { 0x24B6, 0x24E9, PDF_TEXT_UCD_WBP_ALetter }, /* 525 */
622 : : { 0x2C00, 0x2C2E, PDF_TEXT_UCD_WBP_ALetter }, /* 526 */
623 : : { 0x2C30, 0x2C5E, PDF_TEXT_UCD_WBP_ALetter }, /* 527 */
624 : : { 0x2C60, 0x2C6F, PDF_TEXT_UCD_WBP_ALetter }, /* 528 */
625 : : { 0x2C71, 0x2C7C, PDF_TEXT_UCD_WBP_ALetter }, /* 529 */
626 : : { 0x2C7D, 0x2C7D, PDF_TEXT_UCD_WBP_ALetter }, /* 530 */
627 : : { 0x2C80, 0x2CE4, PDF_TEXT_UCD_WBP_ALetter }, /* 531 */
628 : : { 0x2D00, 0x2D25, PDF_TEXT_UCD_WBP_ALetter }, /* 532 */
629 : : { 0x2D30, 0x2D65, PDF_TEXT_UCD_WBP_ALetter }, /* 533 */
630 : : { 0x2D6F, 0x2D6F, PDF_TEXT_UCD_WBP_ALetter }, /* 534 */
631 : : { 0x2D80, 0x2D96, PDF_TEXT_UCD_WBP_ALetter }, /* 535 */
632 : : { 0x2DA0, 0x2DA6, PDF_TEXT_UCD_WBP_ALetter }, /* 536 */
633 : : { 0x2DA8, 0x2DAE, PDF_TEXT_UCD_WBP_ALetter }, /* 537 */
634 : : { 0x2DB0, 0x2DB6, PDF_TEXT_UCD_WBP_ALetter }, /* 538 */
635 : : { 0x2DB8, 0x2DBE, PDF_TEXT_UCD_WBP_ALetter }, /* 539 */
636 : : { 0x2DC0, 0x2DC6, PDF_TEXT_UCD_WBP_ALetter }, /* 540 */
637 : : { 0x2DC8, 0x2DCE, PDF_TEXT_UCD_WBP_ALetter }, /* 541 */
638 : : { 0x2DD0, 0x2DD6, PDF_TEXT_UCD_WBP_ALetter }, /* 542 */
639 : : { 0x2DD8, 0x2DDE, PDF_TEXT_UCD_WBP_ALetter }, /* 543 */
640 : : { 0x2E2F, 0x2E2F, PDF_TEXT_UCD_WBP_ALetter }, /* 544 */
641 : : { 0x3005, 0x3005, PDF_TEXT_UCD_WBP_ALetter }, /* 545 */
642 : : { 0x303B, 0x303B, PDF_TEXT_UCD_WBP_ALetter }, /* 546 */
643 : : { 0x303C, 0x303C, PDF_TEXT_UCD_WBP_ALetter }, /* 547 */
644 : : { 0x3105, 0x312D, PDF_TEXT_UCD_WBP_ALetter }, /* 548 */
645 : : { 0x3131, 0x318E, PDF_TEXT_UCD_WBP_ALetter }, /* 549 */
646 : : { 0x31A0, 0x31B7, PDF_TEXT_UCD_WBP_ALetter }, /* 550 */
647 : : { 0xA000, 0xA014, PDF_TEXT_UCD_WBP_ALetter }, /* 551 */
648 : : { 0xA015, 0xA015, PDF_TEXT_UCD_WBP_ALetter }, /* 552 */
649 : : { 0xA016, 0xA48C, PDF_TEXT_UCD_WBP_ALetter }, /* 553 */
650 : : { 0xA500, 0xA60B, PDF_TEXT_UCD_WBP_ALetter }, /* 554 */
651 : : { 0xA60C, 0xA60C, PDF_TEXT_UCD_WBP_ALetter }, /* 555 */
652 : : { 0xA610, 0xA61F, PDF_TEXT_UCD_WBP_ALetter }, /* 556 */
653 : : { 0xA62A, 0xA62B, PDF_TEXT_UCD_WBP_ALetter }, /* 557 */
654 : : { 0xA640, 0xA65F, PDF_TEXT_UCD_WBP_ALetter }, /* 558 */
655 : : { 0xA662, 0xA66D, PDF_TEXT_UCD_WBP_ALetter }, /* 559 */
656 : : { 0xA66E, 0xA66E, PDF_TEXT_UCD_WBP_ALetter }, /* 560 */
657 : : { 0xA67F, 0xA67F, PDF_TEXT_UCD_WBP_ALetter }, /* 561 */
658 : : { 0xA680, 0xA697, PDF_TEXT_UCD_WBP_ALetter }, /* 562 */
659 : : { 0xA717, 0xA71F, PDF_TEXT_UCD_WBP_ALetter }, /* 563 */
660 : : { 0xA722, 0xA76F, PDF_TEXT_UCD_WBP_ALetter }, /* 564 */
661 : : { 0xA770, 0xA770, PDF_TEXT_UCD_WBP_ALetter }, /* 565 */
662 : : { 0xA771, 0xA787, PDF_TEXT_UCD_WBP_ALetter }, /* 566 */
663 : : { 0xA788, 0xA788, PDF_TEXT_UCD_WBP_ALetter }, /* 567 */
664 : : { 0xA78B, 0xA78C, PDF_TEXT_UCD_WBP_ALetter }, /* 568 */
665 : : { 0xA7FB, 0xA801, PDF_TEXT_UCD_WBP_ALetter }, /* 569 */
666 : : { 0xA803, 0xA805, PDF_TEXT_UCD_WBP_ALetter }, /* 570 */
667 : : { 0xA807, 0xA80A, PDF_TEXT_UCD_WBP_ALetter }, /* 571 */
668 : : { 0xA80C, 0xA822, PDF_TEXT_UCD_WBP_ALetter }, /* 572 */
669 : : { 0xA840, 0xA873, PDF_TEXT_UCD_WBP_ALetter }, /* 573 */
670 : : { 0xA882, 0xA8B3, PDF_TEXT_UCD_WBP_ALetter }, /* 574 */
671 : : { 0xA90A, 0xA925, PDF_TEXT_UCD_WBP_ALetter }, /* 575 */
672 : : { 0xA930, 0xA946, PDF_TEXT_UCD_WBP_ALetter }, /* 576 */
673 : : { 0xAA00, 0xAA28, PDF_TEXT_UCD_WBP_ALetter }, /* 577 */
674 : : { 0xAA40, 0xAA42, PDF_TEXT_UCD_WBP_ALetter }, /* 578 */
675 : : { 0xAA44, 0xAA4B, PDF_TEXT_UCD_WBP_ALetter }, /* 579 */
676 : : { 0xAC00, 0xD7A3, PDF_TEXT_UCD_WBP_ALetter }, /* 580 */
677 : : { 0xFB00, 0xFB06, PDF_TEXT_UCD_WBP_ALetter }, /* 581 */
678 : : { 0xFB13, 0xFB17, PDF_TEXT_UCD_WBP_ALetter }, /* 582 */
679 : : { 0xFB1D, 0xFB1D, PDF_TEXT_UCD_WBP_ALetter }, /* 583 */
680 : : { 0xFB1F, 0xFB28, PDF_TEXT_UCD_WBP_ALetter }, /* 584 */
681 : : { 0xFB2A, 0xFB36, PDF_TEXT_UCD_WBP_ALetter }, /* 585 */
682 : : { 0xFB38, 0xFB3C, PDF_TEXT_UCD_WBP_ALetter }, /* 586 */
683 : : { 0xFB3E, 0xFB3E, PDF_TEXT_UCD_WBP_ALetter }, /* 587 */
684 : : { 0xFB40, 0xFB41, PDF_TEXT_UCD_WBP_ALetter }, /* 588 */
685 : : { 0xFB43, 0xFB44, PDF_TEXT_UCD_WBP_ALetter }, /* 589 */
686 : : { 0xFB46, 0xFBB1, PDF_TEXT_UCD_WBP_ALetter }, /* 590 */
687 : : { 0xFBD3, 0xFD3D, PDF_TEXT_UCD_WBP_ALetter }, /* 591 */
688 : : { 0xFD50, 0xFD8F, PDF_TEXT_UCD_WBP_ALetter }, /* 592 */
689 : : { 0xFD92, 0xFDC7, PDF_TEXT_UCD_WBP_ALetter }, /* 593 */
690 : : { 0xFDF0, 0xFDFB, PDF_TEXT_UCD_WBP_ALetter }, /* 594 */
691 : : { 0xFE70, 0xFE74, PDF_TEXT_UCD_WBP_ALetter }, /* 595 */
692 : : { 0xFE76, 0xFEFC, PDF_TEXT_UCD_WBP_ALetter }, /* 596 */
693 : : { 0xFF21, 0xFF3A, PDF_TEXT_UCD_WBP_ALetter }, /* 597 */
694 : : { 0xFF41, 0xFF5A, PDF_TEXT_UCD_WBP_ALetter }, /* 598 */
695 : : { 0xFFA0, 0xFFBE, PDF_TEXT_UCD_WBP_ALetter }, /* 599 */
696 : : { 0xFFC2, 0xFFC7, PDF_TEXT_UCD_WBP_ALetter }, /* 600 */
697 : : { 0xFFCA, 0xFFCF, PDF_TEXT_UCD_WBP_ALetter }, /* 601 */
698 : : { 0xFFD2, 0xFFD7, PDF_TEXT_UCD_WBP_ALetter }, /* 602 */
699 : : { 0xFFDA, 0xFFDC, PDF_TEXT_UCD_WBP_ALetter }, /* 603 */
700 : : { 0x10000, 0x1000B, PDF_TEXT_UCD_WBP_ALetter }, /* 604 */
701 : : { 0x1000D, 0x10026, PDF_TEXT_UCD_WBP_ALetter }, /* 605 */
702 : : { 0x10028, 0x1003A, PDF_TEXT_UCD_WBP_ALetter }, /* 606 */
703 : : { 0x1003C, 0x1003D, PDF_TEXT_UCD_WBP_ALetter }, /* 607 */
704 : : { 0x1003F, 0x1004D, PDF_TEXT_UCD_WBP_ALetter }, /* 608 */
705 : : { 0x10050, 0x1005D, PDF_TEXT_UCD_WBP_ALetter }, /* 609 */
706 : : { 0x10080, 0x100FA, PDF_TEXT_UCD_WBP_ALetter }, /* 610 */
707 : : { 0x10140, 0x10174, PDF_TEXT_UCD_WBP_ALetter }, /* 611 */
708 : : { 0x10280, 0x1029C, PDF_TEXT_UCD_WBP_ALetter }, /* 612 */
709 : : { 0x102A0, 0x102D0, PDF_TEXT_UCD_WBP_ALetter }, /* 613 */
710 : : { 0x10300, 0x1031E, PDF_TEXT_UCD_WBP_ALetter }, /* 614 */
711 : : { 0x10330, 0x10340, PDF_TEXT_UCD_WBP_ALetter }, /* 615 */
712 : : { 0x10341, 0x10341, PDF_TEXT_UCD_WBP_ALetter }, /* 616 */
713 : : { 0x10342, 0x10349, PDF_TEXT_UCD_WBP_ALetter }, /* 617 */
714 : : { 0x1034A, 0x1034A, PDF_TEXT_UCD_WBP_ALetter }, /* 618 */
715 : : { 0x10380, 0x1039D, PDF_TEXT_UCD_WBP_ALetter }, /* 619 */
716 : : { 0x103A0, 0x103C3, PDF_TEXT_UCD_WBP_ALetter }, /* 620 */
717 : : { 0x103C8, 0x103CF, PDF_TEXT_UCD_WBP_ALetter }, /* 621 */
718 : : { 0x103D1, 0x103D5, PDF_TEXT_UCD_WBP_ALetter }, /* 622 */
719 : : { 0x10400, 0x1044F, PDF_TEXT_UCD_WBP_ALetter }, /* 623 */
720 : : { 0x10450, 0x1049D, PDF_TEXT_UCD_WBP_ALetter }, /* 624 */
721 : : { 0x10800, 0x10805, PDF_TEXT_UCD_WBP_ALetter }, /* 625 */
722 : : { 0x10808, 0x10808, PDF_TEXT_UCD_WBP_ALetter }, /* 626 */
723 : : { 0x1080A, 0x10835, PDF_TEXT_UCD_WBP_ALetter }, /* 627 */
724 : : { 0x10837, 0x10838, PDF_TEXT_UCD_WBP_ALetter }, /* 628 */
725 : : { 0x1083C, 0x1083C, PDF_TEXT_UCD_WBP_ALetter }, /* 629 */
726 : : { 0x1083F, 0x1083F, PDF_TEXT_UCD_WBP_ALetter }, /* 630 */
727 : : { 0x10900, 0x10915, PDF_TEXT_UCD_WBP_ALetter }, /* 631 */
728 : : { 0x10920, 0x10939, PDF_TEXT_UCD_WBP_ALetter }, /* 632 */
729 : : { 0x10A00, 0x10A00, PDF_TEXT_UCD_WBP_ALetter }, /* 633 */
730 : : { 0x10A10, 0x10A13, PDF_TEXT_UCD_WBP_ALetter }, /* 634 */
731 : : { 0x10A15, 0x10A17, PDF_TEXT_UCD_WBP_ALetter }, /* 635 */
732 : : { 0x10A19, 0x10A33, PDF_TEXT_UCD_WBP_ALetter }, /* 636 */
733 : : { 0x12000, 0x1236E, PDF_TEXT_UCD_WBP_ALetter }, /* 637 */
734 : : { 0x12400, 0x12462, PDF_TEXT_UCD_WBP_ALetter }, /* 638 */
735 : : { 0x1D400, 0x1D454, PDF_TEXT_UCD_WBP_ALetter }, /* 639 */
736 : : { 0x1D456, 0x1D49C, PDF_TEXT_UCD_WBP_ALetter }, /* 640 */
737 : : { 0x1D49E, 0x1D49F, PDF_TEXT_UCD_WBP_ALetter }, /* 641 */
738 : : { 0x1D4A2, 0x1D4A2, PDF_TEXT_UCD_WBP_ALetter }, /* 642 */
739 : : { 0x1D4A5, 0x1D4A6, PDF_TEXT_UCD_WBP_ALetter }, /* 643 */
740 : : { 0x1D4A9, 0x1D4AC, PDF_TEXT_UCD_WBP_ALetter }, /* 644 */
741 : : { 0x1D4AE, 0x1D4B9, PDF_TEXT_UCD_WBP_ALetter }, /* 645 */
742 : : { 0x1D4BB, 0x1D4BB, PDF_TEXT_UCD_WBP_ALetter }, /* 646 */
743 : : { 0x1D4BD, 0x1D4C3, PDF_TEXT_UCD_WBP_ALetter }, /* 647 */
744 : : { 0x1D4C5, 0x1D505, PDF_TEXT_UCD_WBP_ALetter }, /* 648 */
745 : : { 0x1D507, 0x1D50A, PDF_TEXT_UCD_WBP_ALetter }, /* 649 */
746 : : { 0x1D50D, 0x1D514, PDF_TEXT_UCD_WBP_ALetter }, /* 650 */
747 : : { 0x1D516, 0x1D51C, PDF_TEXT_UCD_WBP_ALetter }, /* 651 */
748 : : { 0x1D51E, 0x1D539, PDF_TEXT_UCD_WBP_ALetter }, /* 652 */
749 : : { 0x1D53B, 0x1D53E, PDF_TEXT_UCD_WBP_ALetter }, /* 653 */
750 : : { 0x1D540, 0x1D544, PDF_TEXT_UCD_WBP_ALetter }, /* 654 */
751 : : { 0x1D546, 0x1D546, PDF_TEXT_UCD_WBP_ALetter }, /* 655 */
752 : : { 0x1D54A, 0x1D550, PDF_TEXT_UCD_WBP_ALetter }, /* 656 */
753 : : { 0x1D552, 0x1D6A5, PDF_TEXT_UCD_WBP_ALetter }, /* 657 */
754 : : { 0x1D6A8, 0x1D6C0, PDF_TEXT_UCD_WBP_ALetter }, /* 658 */
755 : : { 0x1D6C2, 0x1D6DA, PDF_TEXT_UCD_WBP_ALetter }, /* 659 */
756 : : { 0x1D6DC, 0x1D6FA, PDF_TEXT_UCD_WBP_ALetter }, /* 660 */
757 : : { 0x1D6FC, 0x1D714, PDF_TEXT_UCD_WBP_ALetter }, /* 661 */
758 : : { 0x1D716, 0x1D734, PDF_TEXT_UCD_WBP_ALetter }, /* 662 */
759 : : { 0x1D736, 0x1D74E, PDF_TEXT_UCD_WBP_ALetter }, /* 663 */
760 : : { 0x1D750, 0x1D76E, PDF_TEXT_UCD_WBP_ALetter }, /* 664 */
761 : : { 0x1D770, 0x1D788, PDF_TEXT_UCD_WBP_ALetter }, /* 665 */
762 : : { 0x1D78A, 0x1D7A8, PDF_TEXT_UCD_WBP_ALetter }, /* 666 */
763 : : { 0x1D7AA, 0x1D7C2, PDF_TEXT_UCD_WBP_ALetter }, /* 667 */
764 : : { 0x1D7C4, 0x1D7CB, PDF_TEXT_UCD_WBP_ALetter }, /* 668 */
765 : : { 0x003A, 0x003A, PDF_TEXT_UCD_WBP_MidLetter }, /* 669 */
766 : : { 0x00B7, 0x00B7, PDF_TEXT_UCD_WBP_MidLetter }, /* 670 */
767 : : { 0x0387, 0x0387, PDF_TEXT_UCD_WBP_MidLetter }, /* 671 */
768 : : { 0x05F4, 0x05F4, PDF_TEXT_UCD_WBP_MidLetter }, /* 672 */
769 : : { 0x2027, 0x2027, PDF_TEXT_UCD_WBP_MidLetter }, /* 673 */
770 : : { 0xFE13, 0xFE13, PDF_TEXT_UCD_WBP_MidLetter }, /* 674 */
771 : : { 0xFE55, 0xFE55, PDF_TEXT_UCD_WBP_MidLetter }, /* 675 */
772 : : { 0xFF1A, 0xFF1A, PDF_TEXT_UCD_WBP_MidLetter }, /* 676 */
773 : : { 0x002C, 0x002C, PDF_TEXT_UCD_WBP_MidNum }, /* 677 */
774 : : { 0x003B, 0x003B, PDF_TEXT_UCD_WBP_MidNum }, /* 678 */
775 : : { 0x037E, 0x037E, PDF_TEXT_UCD_WBP_MidNum }, /* 679 */
776 : : { 0x0589, 0x0589, PDF_TEXT_UCD_WBP_MidNum }, /* 680 */
777 : : { 0x060C, 0x060D, PDF_TEXT_UCD_WBP_MidNum }, /* 681 */
778 : : { 0x066C, 0x066C, PDF_TEXT_UCD_WBP_MidNum }, /* 682 */
779 : : { 0x07F8, 0x07F8, PDF_TEXT_UCD_WBP_MidNum }, /* 683 */
780 : : { 0x2044, 0x2044, PDF_TEXT_UCD_WBP_MidNum }, /* 684 */
781 : : { 0xFE10, 0xFE10, PDF_TEXT_UCD_WBP_MidNum }, /* 685 */
782 : : { 0xFE14, 0xFE14, PDF_TEXT_UCD_WBP_MidNum }, /* 686 */
783 : : { 0xFE50, 0xFE50, PDF_TEXT_UCD_WBP_MidNum }, /* 687 */
784 : : { 0xFE54, 0xFE54, PDF_TEXT_UCD_WBP_MidNum }, /* 688 */
785 : : { 0xFF0C, 0xFF0C, PDF_TEXT_UCD_WBP_MidNum }, /* 689 */
786 : : { 0xFF1B, 0xFF1B, PDF_TEXT_UCD_WBP_MidNum }, /* 690 */
787 : : { 0x0027, 0x0027, PDF_TEXT_UCD_WBP_MidNumLet }, /* 691 */
788 : : { 0x002E, 0x002E, PDF_TEXT_UCD_WBP_MidNumLet }, /* 692 */
789 : : { 0x2018, 0x2018, PDF_TEXT_UCD_WBP_MidNumLet }, /* 693 */
790 : : { 0x2019, 0x2019, PDF_TEXT_UCD_WBP_MidNumLet }, /* 694 */
791 : : { 0x2024, 0x2024, PDF_TEXT_UCD_WBP_MidNumLet }, /* 695 */
792 : : { 0xFE52, 0xFE52, PDF_TEXT_UCD_WBP_MidNumLet }, /* 696 */
793 : : { 0xFF07, 0xFF07, PDF_TEXT_UCD_WBP_MidNumLet }, /* 697 */
794 : : { 0xFF0E, 0xFF0E, PDF_TEXT_UCD_WBP_MidNumLet }, /* 698 */
795 : : { 0x0030, 0x0039, PDF_TEXT_UCD_WBP_Numeric }, /* 699 */
796 : : { 0x0660, 0x0669, PDF_TEXT_UCD_WBP_Numeric }, /* 700 */
797 : : { 0x066B, 0x066B, PDF_TEXT_UCD_WBP_Numeric }, /* 701 */
798 : : { 0x06F0, 0x06F9, PDF_TEXT_UCD_WBP_Numeric }, /* 702 */
799 : : { 0x07C0, 0x07C9, PDF_TEXT_UCD_WBP_Numeric }, /* 703 */
800 : : { 0x0966, 0x096F, PDF_TEXT_UCD_WBP_Numeric }, /* 704 */
801 : : { 0x09E6, 0x09EF, PDF_TEXT_UCD_WBP_Numeric }, /* 705 */
802 : : { 0x0A66, 0x0A6F, PDF_TEXT_UCD_WBP_Numeric }, /* 706 */
803 : : { 0x0AE6, 0x0AEF, PDF_TEXT_UCD_WBP_Numeric }, /* 707 */
804 : : { 0x0B66, 0x0B6F, PDF_TEXT_UCD_WBP_Numeric }, /* 708 */
805 : : { 0x0BE6, 0x0BEF, PDF_TEXT_UCD_WBP_Numeric }, /* 709 */
806 : : { 0x0C66, 0x0C6F, PDF_TEXT_UCD_WBP_Numeric }, /* 710 */
807 : : { 0x0CE6, 0x0CEF, PDF_TEXT_UCD_WBP_Numeric }, /* 711 */
808 : : { 0x0D66, 0x0D6F, PDF_TEXT_UCD_WBP_Numeric }, /* 712 */
809 : : { 0x0E50, 0x0E59, PDF_TEXT_UCD_WBP_Numeric }, /* 713 */
810 : : { 0x0ED0, 0x0ED9, PDF_TEXT_UCD_WBP_Numeric }, /* 714 */
811 : : { 0x0F20, 0x0F29, PDF_TEXT_UCD_WBP_Numeric }, /* 715 */
812 : : { 0x1040, 0x1049, PDF_TEXT_UCD_WBP_Numeric }, /* 716 */
813 : : { 0x1090, 0x1099, PDF_TEXT_UCD_WBP_Numeric }, /* 717 */
814 : : { 0x17E0, 0x17E9, PDF_TEXT_UCD_WBP_Numeric }, /* 718 */
815 : : { 0x1810, 0x1819, PDF_TEXT_UCD_WBP_Numeric }, /* 719 */
816 : : { 0x1946, 0x194F, PDF_TEXT_UCD_WBP_Numeric }, /* 720 */
817 : : { 0x19D0, 0x19D9, PDF_TEXT_UCD_WBP_Numeric }, /* 721 */
818 : : { 0x1B50, 0x1B59, PDF_TEXT_UCD_WBP_Numeric }, /* 722 */
819 : : { 0x1BB0, 0x1BB9, PDF_TEXT_UCD_WBP_Numeric }, /* 723 */
820 : : { 0x1C40, 0x1C49, PDF_TEXT_UCD_WBP_Numeric }, /* 724 */
821 : : { 0x1C50, 0x1C59, PDF_TEXT_UCD_WBP_Numeric }, /* 725 */
822 : : { 0xA620, 0xA629, PDF_TEXT_UCD_WBP_Numeric }, /* 726 */
823 : : { 0xA8D0, 0xA8D9, PDF_TEXT_UCD_WBP_Numeric }, /* 727 */
824 : : { 0xA900, 0xA909, PDF_TEXT_UCD_WBP_Numeric }, /* 728 */
825 : : { 0xAA50, 0xAA59, PDF_TEXT_UCD_WBP_Numeric }, /* 729 */
826 : : { 0x104A0, 0x104A9, PDF_TEXT_UCD_WBP_Numeric }, /* 730 */
827 : : { 0x1D7CE, 0x1D7FF, PDF_TEXT_UCD_WBP_Numeric }, /* 731 */
828 : : { 0x005F, 0x005F, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 732 */
829 : : { 0x203F, 0x2040, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 733 */
830 : : { 0x2054, 0x2054, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 734 */
831 : : { 0xFE33, 0xFE34, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 735 */
832 : : { 0xFE4D, 0xFE4F, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 736 */
833 : : { 0xFF3F, 0xFF3F, PDF_TEXT_UCD_WBP_ExtendNumLet }, /* 737 */
834 : : };
835 : :
836 : : /***************** END OF SELF-GENERATED DATA *********************************/
837 : :
838 : : static pdf_bool_t
839 : : pdf_text_ucd_wb_in_interval (pdf_u32_t character,
840 : : pdf_u32_t first_interval,
841 : : pdf_u32_t last_interval)
842 : : {
843 : : int i;
844 : :
845 [ + + ][ + + ]: 137645 : for (i=first_interval; i<=last_interval; ++i)
[ + + ][ + + ]
[ + + ][ + + ]
[ + + ][ + + ]
[ + + ][ + + ]
[ + + ][ + + ]
846 : : {
847 [ + - ][ - + ]: 135541 : if ((character >= unicode_wordbreak_info[i].interval_start) &&
[ + - ][ - + ]
[ + + ][ - + ]
[ + + ][ + - ]
[ + + ][ - + ]
[ - + ][ # # ]
[ + + ][ + + ]
[ + + ][ + + ]
[ + + ][ - + ]
[ + + ][ + + ]
[ + + ][ - + ]
[ - + ][ # # ]
848 : 4628 : (character <= unicode_wordbreak_info[i].interval_stop))
849 : : {
850 : 464 : return PDF_TRUE;
851 : : }
852 : : }
853 : 2104 : return PDF_FALSE;
854 : : }
855 : :
856 : : /* Returns true if the given UTF-32HE unicode point has the CR value
857 : : * in the WordBreak property */
858 : : pdf_bool_t
859 : 177 : pdf_text_ucd_wb_is_cr (pdf_u32_t character)
860 : : {
861 : 177 : return pdf_text_ucd_wb_in_interval (character,
862 : : UCD_WB_CR_F,
863 : : UCD_WB_CR_L);
864 : : }
865 : :
866 : : /* Returns true if the given UTF-32HE unicode point has the LF value
867 : : * in the WordBreak property */
868 : : pdf_bool_t
869 : 177 : pdf_text_ucd_wb_is_lf (pdf_u32_t character)
870 : : {
871 : 177 : return pdf_text_ucd_wb_in_interval (character,
872 : : UCD_WB_LF_F,
873 : : UCD_WB_LF_L);
874 : : }
875 : :
876 : : /* Returns true if the given UTF-32HE unicode point has the Newline value
877 : : * in the WordBreak property */
878 : : pdf_bool_t
879 : 177 : pdf_text_ucd_wb_is_newline (pdf_u32_t character)
880 : : {
881 : 177 : return pdf_text_ucd_wb_in_interval (character,
882 : : UCD_WB_NEWLINE_F,
883 : : UCD_WB_NEWLINE_L);
884 : : }
885 : :
886 : : /* Returns true if the given UTF-32HE unicode point has the Extend value
887 : : * in the WordBreak property */
888 : : pdf_bool_t
889 : 177 : pdf_text_ucd_wb_is_extend (pdf_u32_t character)
890 : : {
891 : 177 : return pdf_text_ucd_wb_in_interval (character,
892 : : UCD_WB_EXTEND_F,
893 : : UCD_WB_EXTEND_L);
894 : : }
895 : :
896 : : /* Returns true if the given UTF-32HE unicode point has the Format value
897 : : * in the WordBreak property */
898 : : pdf_bool_t
899 : 177 : pdf_text_ucd_wb_is_format (pdf_u32_t character)
900 : : {
901 : 177 : return pdf_text_ucd_wb_in_interval (character,
902 : : UCD_WB_FORMAT_F,
903 : : UCD_WB_FORMAT_L);
904 : : }
905 : :
906 : : /* Returns true if the given UTF-32HE unicode point has the Katakana value
907 : : * in the WordBreak property */
908 : : pdf_bool_t
909 : 124 : pdf_text_ucd_wb_is_katakana (pdf_u32_t character)
910 : : {
911 : 124 : return pdf_text_ucd_wb_in_interval (character,
912 : : UCD_WB_KATAKANA_F,
913 : : UCD_WB_KATAKANA_L);
914 : : }
915 : :
916 : : /* Returns true if the given UTF-32HE unicode point has the ALetter value
917 : : * in the WordBreak property */
918 : : pdf_bool_t
919 : 584 : pdf_text_ucd_wb_is_aletter (pdf_u32_t character)
920 : : {
921 : 584 : return pdf_text_ucd_wb_in_interval (character,
922 : : UCD_WB_ALETTER_F,
923 : : UCD_WB_ALETTER_L);
924 : : }
925 : :
926 : : /* Returns true if the given UTF-32HE unicode point has the MidLetter value
927 : : * in the WordBreak property */
928 : : pdf_bool_t
929 : 228 : pdf_text_ucd_wb_is_midletter (pdf_u32_t character)
930 : : {
931 : 228 : return pdf_text_ucd_wb_in_interval (character,
932 : : UCD_WB_MIDLETTER_F,
933 : : UCD_WB_MIDLETTER_L);
934 : : }
935 : :
936 : : /* Returns true if the given UTF-32HE unicode point has the MidNum value
937 : : * in the WordBreak property */
938 : : pdf_bool_t
939 : 205 : pdf_text_ucd_wb_is_midnum (pdf_u32_t character)
940 : : {
941 : 205 : return pdf_text_ucd_wb_in_interval (character,
942 : : UCD_WB_MIDNUM_F,
943 : : UCD_WB_MIDNUM_L);
944 : : }
945 : :
946 : : /* Returns true if the given UTF-32HE unicode point has the MidNumLet value
947 : : * in the WordBreak property */
948 : : pdf_bool_t
949 : 213 : pdf_text_ucd_wb_is_midnumlet (pdf_u32_t character)
950 : : {
951 : 213 : return pdf_text_ucd_wb_in_interval (character,
952 : : UCD_WB_MIDNUMLET_F,
953 : : UCD_WB_MIDNUMLET_L);
954 : : }
955 : :
956 : : /* Returns true if the given UTF-32HE unicode point has the Numeric value
957 : : * in the WordBreak property */
958 : : pdf_bool_t
959 : 205 : pdf_text_ucd_wb_is_numeric (pdf_u32_t character)
960 : : {
961 : 205 : return pdf_text_ucd_wb_in_interval (character,
962 : : UCD_WB_NUMERIC_F,
963 : : UCD_WB_NUMERIC_L);
964 : : }
965 : :
966 : : /* Returns true if the given UTF-32HE unicode point has the ExtendNumLet value
967 : : * in the WordBreak property */
968 : : pdf_bool_t
969 : 124 : pdf_text_ucd_wb_is_extendnumlet (pdf_u32_t character)
970 : : {
971 : 124 : return pdf_text_ucd_wb_in_interval (character,
972 : : UCD_WB_EXTENDNUMLET_F,
973 : : UCD_WB_EXTENDNUMLET_L);
974 : : }
975 : :
976 : :
977 : : enum pdf_text_ucd_wb_property_e
978 : 584 : pdf_text_ucd_wb_get_property (pdf_u32_t character)
979 : : {
980 [ + + ]: 584 : if (pdf_text_ucd_wb_is_aletter (character))
981 : 368 : return PDF_TEXT_UCD_WBP_ALetter;
982 [ + + ]: 216 : if (pdf_text_ucd_wb_is_midletter (character))
983 : 11 : return PDF_TEXT_UCD_WBP_MidLetter;
984 [ - + ]: 205 : if (pdf_text_ucd_wb_is_numeric (character))
985 : 0 : return PDF_TEXT_UCD_WBP_Numeric;
986 [ - + ]: 205 : if (pdf_text_ucd_wb_is_midnum (character))
987 : 0 : return PDF_TEXT_UCD_WBP_MidNum;
988 [ + + ]: 205 : if (pdf_text_ucd_wb_is_midnumlet (character))
989 : 28 : return PDF_TEXT_UCD_WBP_MidNumLet;
990 [ - + ]: 177 : if (pdf_text_ucd_wb_is_format (character))
991 : 0 : return PDF_TEXT_UCD_WBP_Format;
992 [ - + ]: 177 : if (pdf_text_ucd_wb_is_cr (character))
993 : 0 : return PDF_TEXT_UCD_WBP_CR;
994 [ - + ]: 177 : if (pdf_text_ucd_wb_is_lf (character))
995 : 0 : return PDF_TEXT_UCD_WBP_LF;
996 [ - + ]: 177 : if (pdf_text_ucd_wb_is_newline (character))
997 : 0 : return PDF_TEXT_UCD_WBP_Newline;
998 [ + + ]: 177 : if (pdf_text_ucd_wb_is_extend (character))
999 : 53 : return PDF_TEXT_UCD_WBP_Extend;
1000 [ - + ]: 124 : if (pdf_text_ucd_wb_is_katakana (character))
1001 : 0 : return PDF_TEXT_UCD_WBP_Katakana;
1002 [ - + ]: 124 : if (pdf_text_ucd_wb_is_extendnumlet (character))
1003 : 0 : return PDF_TEXT_UCD_WBP_ExtendNumLet;
1004 : 584 : return PDF_TEXT_UCD_WBP_None;
1005 : : }
1006 : :
1007 : : /* Maximum number of code points needed for a word break check */
1008 : : #define PDF_TEXT_UCD_MWBCP 4
1009 : :
1010 : : /* Word break property information */
1011 : : typedef struct pdf_text_ucd_wb_s {
1012 : : pdf_char_t *walker;
1013 : : pdf_u32_t utf32val;
1014 : : enum pdf_text_ucd_wb_property_e wbp;
1015 : : } pdf_text_ucd_wb_t;
1016 : :
1017 : : /* RULE WB3: Do not break within CRLF (CR x LF) */
1018 : : static pdf_bool_t
1019 : : pdf_text_ucd_wb_rule_3 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1020 : : {
1021 [ - + ][ # # ]: 286 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_CR) &&
1022 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_LF)) ?
1023 : : PDF_TRUE : PDF_FALSE);
1024 : : }
1025 : :
1026 : : /* RULE WB3a: Break before and after Newlines (including CR and LF) */
1027 : : static pdf_bool_t
1028 : : pdf_text_ucd_wb_rule_3a (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1029 : : {
1030 : 286 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_CR) ||
1031 : : (buffer[1].wbp == PDF_TEXT_UCD_WBP_LF) ||
1032 : : (buffer[1].wbp == PDF_TEXT_UCD_WBP_Newline)) ?
1033 : : PDF_TRUE : PDF_FALSE);
1034 : : }
1035 : :
1036 : : /* RULE WB3b: Break before and after Newlines (including CR and LF) */
1037 : : static pdf_bool_t
1038 : : pdf_text_ucd_wb_rule_3b (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1039 : : {
1040 : 286 : return (((buffer[2].wbp == PDF_TEXT_UCD_WBP_CR) ||
1041 : : (buffer[2].wbp == PDF_TEXT_UCD_WBP_LF) ||
1042 : : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Newline)) ?
1043 : : PDF_TRUE : PDF_FALSE);
1044 : : }
1045 : :
1046 : : /* RULE WB4: Ignore Format and Extend characters, except when they appear at
1047 : : * the beginning of a region of text. */
1048 : : static pdf_bool_t
1049 : : pdf_text_ucd_wb_rule_4 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1050 : : {
1051 : 286 : return (((buffer[2].wbp == PDF_TEXT_UCD_WBP_Extend) ||
1052 : : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Format)) ?
1053 : : PDF_TRUE : PDF_FALSE);
1054 : : }
1055 : :
1056 : : /* RULE WB5: Do not break between most letters (ALetter X ALetter) */
1057 : : static pdf_bool_t
1058 : : pdf_text_ucd_wb_rule_5 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1059 : : {
1060 [ + + ][ + + ]: 250 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
1061 : 157 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
1062 : : PDF_TRUE : PDF_FALSE);
1063 : : }
1064 : :
1065 : : /* RULE WB6: Do not break letters across certain puntuation
1066 : : * (ALetter X MidLetter ALetter) */
1067 : : static pdf_bool_t
1068 : : pdf_text_ucd_wb_rule_6 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1069 : : {
1070 [ + + ][ + + ]: 142 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
[ + - ]
1071 : 49 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_MidLetter) &&
1072 : 4 : (buffer[3].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
1073 : : PDF_TRUE : PDF_FALSE);
1074 : : }
1075 : :
1076 : : /* RULE WB7: Do not break letters across certain punctuation
1077 : : * (ALetter MidLetter X ALetter) */
1078 : : static pdf_bool_t
1079 : : pdf_text_ucd_wb_rule_7 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1080 : : {
1081 [ + + ][ + + ]: 138 : return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
[ + - ]
1082 : 39 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_MidLetter) &&
1083 : 4 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter)) ?
1084 : : PDF_TRUE : PDF_FALSE);
1085 : : }
1086 : :
1087 : : /* RULE WB8: Do not break within sequences of digits, or digits adjacent
1088 : : * to letters (Numeric X Numeric) */
1089 : : static pdf_bool_t
1090 : : pdf_text_ucd_wb_rule_8 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1091 : : {
1092 [ - + ][ # # ]: 134 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
1093 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
1094 : : PDF_TRUE : PDF_FALSE);
1095 : : }
1096 : :
1097 : : /* RULE WB9: Do not break within sequences of digits, or digits adjacent
1098 : : * to letters (ALetter X Numeric) */
1099 : : static pdf_bool_t
1100 : : pdf_text_ucd_wb_rule_9 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1101 : : {
1102 [ + + ][ - + ]: 134 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) &&
1103 : 45 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
1104 : : PDF_TRUE : PDF_FALSE);
1105 : : }
1106 : :
1107 : : /* RULE WB10: Do not break within sequences of digits, or digits adjacent
1108 : : * to letters (Numeric X ALetter) */
1109 : : static pdf_bool_t
1110 : : pdf_text_ucd_wb_rule_10 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1111 : : {
1112 [ - + ][ # # ]: 134 : return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
1113 : 0 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter)) ? PDF_TRUE : PDF_FALSE);
1114 : : }
1115 : :
1116 : : /* RULE WB11: Do not break within sequences such as "3.2"
1117 : : * (Numeric MidNum X Numeric) */
1118 : : static pdf_bool_t
1119 : : pdf_text_ucd_wb_rule_11 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1120 : : {
1121 [ - + ][ # # ]: 134 : return (((buffer[0].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
[ # # ]
1122 : 0 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_MidNum) &&
1123 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
1124 : : PDF_TRUE : PDF_FALSE);
1125 : : }
1126 : :
1127 : : /* RULE WB12: Do not break within sequences such as "3.2"
1128 : : * (Numeric X MidNum Numeric) */
1129 : : static pdf_bool_t
1130 : : pdf_text_ucd_wb_rule_12 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1131 : : {
1132 [ - + ][ # # ]: 134 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) &&
[ # # ]
1133 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_MidNum) &&
1134 : 0 : (buffer[3].wbp == PDF_TEXT_UCD_WBP_Numeric)) ?
1135 : : PDF_TRUE : PDF_FALSE);
1136 : : }
1137 : :
1138 : : /* RULE WB13: Do not break between Katakana */
1139 : : static pdf_bool_t
1140 : : pdf_text_ucd_wb_rule_13 (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1141 : : {
1142 [ - + ][ # # ]: 134 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_Katakana) &&
1143 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Katakana)) ?
1144 : : PDF_TRUE :PDF_FALSE);
1145 : : }
1146 : :
1147 : : /* RULE WB13a: Do not break from extenders
1148 : : * ((ALetter | Numeric | Katakana | ExtendNumLet) X ExtendNumLet) */
1149 : : static pdf_bool_t
1150 : : pdf_text_ucd_wb_rule_13a (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1151 : : {
1152 [ + + ][ + - ]: 134 : return ((((buffer[1].wbp == PDF_TEXT_UCD_WBP_ALetter) ||
[ - + ][ - + ]
1153 : 268 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_Numeric) ||
1154 : 89 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_Katakana) ||
1155 : 89 : (buffer[1].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet)) &&
1156 : 45 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet)) ?
1157 : : PDF_TRUE : PDF_FALSE);
1158 : : }
1159 : :
1160 : : /* RULE WB13b: Do not break from extenders
1161 : : * (ExtendNumLet) X (ALetter | Numeric | Katakana ) */
1162 : : static pdf_bool_t
1163 : : pdf_text_ucd_wb_rule_13b (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1164 : : {
1165 [ - + ][ # # ]: 134 : return (((buffer[1].wbp == PDF_TEXT_UCD_WBP_ExtendNumLet) &&
[ # # ]
1166 : 0 : ((buffer[2].wbp == PDF_TEXT_UCD_WBP_ALetter) ||
1167 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Numeric) ||
1168 : 0 : (buffer[2].wbp == PDF_TEXT_UCD_WBP_Katakana))) ?
1169 : : PDF_TRUE : PDF_FALSE);
1170 : : }
1171 : :
1172 : : /* Check rules and stop if any of them is true (meaning that shouldn't be a
1173 : : * word break) */
1174 : : static pdf_bool_t
1175 : 286 : pdf_text_ucd_wb_check_rules (const pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP])
1176 : : {
1177 [ + - ][ + - ]: 1888 : return (((pdf_text_ucd_wb_rule_3(buffer)) ||
[ + - ][ + + ]
[ + + ][ + + ]
[ + + ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ + - ][ + - ]
[ - + ]
1178 : : (pdf_text_ucd_wb_rule_3a(buffer)) ||
1179 : : (pdf_text_ucd_wb_rule_3b(buffer)) ||
1180 : : (pdf_text_ucd_wb_rule_4(buffer)) ||
1181 : : (pdf_text_ucd_wb_rule_5(buffer)) ||
1182 : : (pdf_text_ucd_wb_rule_6(buffer)) ||
1183 : : (pdf_text_ucd_wb_rule_7(buffer)) ||
1184 : : (pdf_text_ucd_wb_rule_8(buffer)) ||
1185 : : (pdf_text_ucd_wb_rule_9(buffer)) ||
1186 : : (pdf_text_ucd_wb_rule_10(buffer)) ||
1187 : : (pdf_text_ucd_wb_rule_11(buffer)) ||
1188 : : (pdf_text_ucd_wb_rule_12(buffer)) ||
1189 : : (pdf_text_ucd_wb_rule_13(buffer)) ||
1190 : : (pdf_text_ucd_wb_rule_13a(buffer)) ||
1191 : : (pdf_text_ucd_wb_rule_13b(buffer))) ?
1192 : : PDF_TRUE : PDF_FALSE);
1193 : : }
1194 : :
1195 : : /* Word boundary search algorithm, based on Unicode Standard Annex #29
1196 : : * "Text Boundaries".
1197 : : * - `current' points to the next byte after the word break (so it points to the
1198 : : * FIRST byte of the word).
1199 : : * - `next' will point to the previous byte before the next word break (so it
1200 : : * points to the LAST byte of the word).
1201 : : */
1202 : : pdf_bool_t
1203 : 192 : pdf_text_ucd_wb_detect_next (const pdf_char_t *current,
1204 : : const pdf_size_t n_bytes_left_in,
1205 : : pdf_char_t **next,
1206 : : pdf_size_t *n_bytes_left_out)
1207 : : {
1208 : : /* Buffer to store the unicode points as they are being parsed in the
1209 : : * algorithm. Indexes are treated as follows:
1210 : : * [0] [1] x [2] [3]
1211 : : * This means that possible word breaks are ALWAYS considered between code
1212 : : * points [1] and [2], being [0] the previous character to [1] and being
1213 : : * [3] the next character to [2].
1214 : : * When the buffer is updated, the code points are moved one position to the
1215 : : * the left, so that code point in [0] disappears and a new code point
1216 : : * enters in [3], and the word break is again checked between [1] and [2].
1217 : : */
1218 : : pdf_text_ucd_wb_t buffer[PDF_TEXT_UCD_MWBCP];
1219 : :
1220 : : pdf_u32_t i;
1221 : : pdf_size_t n_bytes;
1222 : : pdf_bool_t found;
1223 : :
1224 : : /* Check validity of input number of bytes */
1225 [ - + ]: 192 : if (n_bytes_left_in % 4 != 0)
1226 : 0 : return PDF_FALSE;
1227 : :
1228 : : /* Check if the string is just one character long */
1229 [ + + ]: 192 : if (n_bytes_left_in == 4)
1230 : : {
1231 : 14 : *n_bytes_left_out = 0;
1232 : 14 : *next = (pdf_char_t *)current;
1233 : 14 : return PDF_TRUE;
1234 : : }
1235 : :
1236 : : /* Initialize buffer with first 3 unicode points, stored in [1],[2],[3] */
1237 [ + + ]: 890 : for (i = 0; i < PDF_TEXT_UCD_MWBCP; ++i)
1238 : : {
1239 [ + + ][ + + ]: 1222 : if ((i > 0) &&
1240 : 534 : (n_bytes_left_in >= (4*i)))
1241 : : {
1242 : : /* Store pointer */
1243 : 510 : buffer[i].walker = (pdf_char_t *)(¤t[4*(i-1)]);
1244 : : /* Store unsigned 32-bit number */
1245 : 510 : memcpy (&(buffer[i].utf32val), buffer[i].walker, 4);
1246 : : /* Get Word-Break property value from character */
1247 : 510 : buffer[i].wbp = pdf_text_ucd_wb_get_property(buffer[i].utf32val);
1248 : : }
1249 : : else
1250 : : {
1251 : 202 : buffer[i].walker = NULL;
1252 : 202 : buffer[i].utf32val = 0x0;
1253 : 202 : buffer[i].wbp = PDF_TEXT_UCD_WBP_None;
1254 : : }
1255 : : }
1256 : :
1257 : 178 : n_bytes = n_bytes_left_in;
1258 : 178 : found = 0;
1259 : :
1260 : : /* Start walking the unicode points. At each loop at least 2 unicode points
1261 : : * (8 bytes) must be available to check the word break!!!! */
1262 [ + + ][ + + ]: 464 : while ((!found) &&
1263 : : (n_bytes >= 8))
1264 : : {
1265 : : /* If any of the rules returns true, don't break word */
1266 [ + + ]: 286 : if (pdf_text_ucd_wb_check_rules (buffer))
1267 : : {
1268 : : /* If word break is not found, continue with next UTF-32 point */
1269 : : /* Update number of bytes pending */
1270 : 152 : n_bytes -= 4;
1271 : :
1272 : : /* Shift left contents of the buffer */
1273 [ + + ]: 608 : for (i = 1; i < PDF_TEXT_UCD_MWBCP; ++i)
1274 : : {
1275 : 456 : buffer[i-1] = buffer[i];
1276 : : }
1277 : :
1278 : : /* Insert new buffer element in position [3], if available */
1279 [ + + ]: 152 : if (n_bytes >= 12)
1280 : : {
1281 : 74 : buffer[3].walker = buffer[2].walker + 4;
1282 : : /* Store unsigned 32-bit number */
1283 : 74 : memcpy (&(buffer[3].utf32val), buffer[3].walker, 4);
1284 : : /* Get Word-Break property value from character */
1285 : 74 : buffer[3].wbp = pdf_text_ucd_wb_get_property (buffer[3].utf32val);
1286 : : }
1287 : : }
1288 : : else
1289 : : {
1290 : : /* RULE WB14: Otherwise, break everywhere (including around
1291 : : * ideographs) */
1292 : 134 : found = 1;
1293 : : }
1294 : : }
1295 : :
1296 : : /* The exit of the loop could be due to two different reasons:
1297 : : * 1. A word break was found in the loop. If it is found, the contents of
1298 : : * the buffer remain unchanged, so the word break is between [1] and [2],
1299 : : * and n_bytes considers the bytes of [1]
1300 : : * 2. RULE WB2: Break at end of text ( % EOT). In this case, n_bytes will be
1301 : : * equal to 4, and the contents of the buffer would have been shifted left
1302 : : * so that the last character is pointed by [1].
1303 : : * So, perfect, both cases can be handled in the same way.
1304 : : */
1305 : :
1306 : 178 : *next = buffer[1].walker;
1307 : 178 : *n_bytes_left_out = n_bytes - 4;
1308 : :
1309 : 192 : return PDF_TRUE;
1310 : : }
1311 : :
1312 : : /* End of pdf-text-ucd-wordbreak.c */
|