]>
Commit | Line | Data |
---|---|---|
6ac11130 AG |
1 | To: vim-dev@vim.org |
2 | Subject: Patch 7.2.330 | |
3 | Fcc: outbox | |
4 | From: Bram Moolenaar <Bram@moolenaar.net> | |
5 | Mime-Version: 1.0 | |
6 | Content-Type: text/plain; charset=UTF-8 | |
7 | Content-Transfer-Encoding: 8bit | |
8 | ------------ | |
9 | ||
10 | Patch 7.2.330 | |
11 | Problem: Tables for Unicode case operators are outdated. | |
12 | Solution: Add a Vim script for generating the tables. Include tables for | |
13 | Unicode 5.2. | |
14 | Files: runtime/tools/README.txt, runtime/tools/unicode.vim, src/mbyte.c | |
15 | ||
16 | ||
17 | *** ../vim-7.2.329/runtime/tools/README.txt 2005-12-02 01:47:43.000000000 +0100 | |
18 | --- runtime/tools/README.txt 2010-01-12 19:43:13.000000000 +0100 | |
19 | *************** | |
20 | *** 32,35 **** | |
21 | --- 32,37 ---- | |
22 | xcmdsrv_client.c: Example for a client program that communicates with a Vim | |
23 | server through the X-Windows interface. | |
24 | ||
25 | + unicode.vim Vim script to generate tables for src/mbyte.c. | |
26 | + | |
27 | [xxd (and tee for OS/2) can be found in the src directory] | |
28 | *** ../vim-7.2.329/runtime/tools/unicode.vim 2010-01-12 19:47:33.000000000 +0100 | |
29 | --- runtime/tools/unicode.vim 2010-01-12 19:42:14.000000000 +0100 | |
30 | *************** | |
31 | *** 0 **** | |
32 | --- 1,280 ---- | |
33 | + " Script to extract tables from Unicode .txt files, to be used in src/mbyte.c. | |
34 | + " The format of the UnicodeData.txt file is explained here: | |
35 | + " http://www.unicode.org/Public/5.1.0/ucd/UCD.html | |
36 | + " For the other files see the header. | |
37 | + " | |
38 | + " Usage: Vim -S <this-file> | |
39 | + " | |
40 | + " Author: Bram Moolenaar | |
41 | + " Last Update: 2010 Jan 12 | |
42 | + | |
43 | + " Parse lines of UnicodeData.txt. Creates a list of lists in s:dataprops. | |
44 | + func! ParseDataToProps() | |
45 | + let s:dataprops = [] | |
46 | + let lnum = 1 | |
47 | + while lnum <= line('$') | |
48 | + let l = split(getline(lnum), '\s*;\s*', 1) | |
49 | + if len(l) != 15 | |
50 | + echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 15' | |
51 | + return | |
52 | + endif | |
53 | + call add(s:dataprops, l) | |
54 | + let lnum += 1 | |
55 | + endwhile | |
56 | + endfunc | |
57 | + | |
58 | + " Parse lines of CaseFolding.txt. Creates a list of lists in s:foldprops. | |
59 | + func! ParseFoldProps() | |
60 | + let s:foldprops = [] | |
61 | + let lnum = 1 | |
62 | + while lnum <= line('$') | |
63 | + let line = getline(lnum) | |
64 | + if line !~ '^#' && line !~ '^\s*$' | |
65 | + let l = split(line, '\s*;\s*', 1) | |
66 | + if len(l) != 4 | |
67 | + echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 4' | |
68 | + return | |
69 | + endif | |
70 | + call add(s:foldprops, l) | |
71 | + endif | |
72 | + let lnum += 1 | |
73 | + endwhile | |
74 | + endfunc | |
75 | + | |
76 | + " Parse lines of EastAsianWidth.txt. Creates a list of lists in s:widthprops. | |
77 | + func! ParseWidthProps() | |
78 | + let s:widthprops = [] | |
79 | + let lnum = 1 | |
80 | + while lnum <= line('$') | |
81 | + let line = getline(lnum) | |
82 | + if line !~ '^#' && line !~ '^\s*$' | |
83 | + let l = split(line, '\s*;\s*', 1) | |
84 | + if len(l) != 2 | |
85 | + echoerr 'Found ' . len(l) . ' items in line ' . lnum . ', expected 2' | |
86 | + return | |
87 | + endif | |
88 | + call add(s:widthprops, l) | |
89 | + endif | |
90 | + let lnum += 1 | |
91 | + endwhile | |
92 | + endfunc | |
93 | + | |
94 | + " Build the toLower or toUpper table in a new buffer. | |
95 | + " Uses s:dataprops. | |
96 | + func! BuildCaseTable(name, index) | |
97 | + let start = -1 | |
98 | + let end = -1 | |
99 | + let step = 0 | |
100 | + let add = -1 | |
101 | + let ranges = [] | |
102 | + for p in s:dataprops | |
103 | + if p[a:index] != '' | |
104 | + let n = ('0x' . p[0]) + 0 | |
105 | + let nl = ('0x' . p[a:index]) + 0 | |
106 | + if start >= 0 && add == nl - n && (step == 0 || n - end == step) | |
107 | + " continue with same range. | |
108 | + let step = n - end | |
109 | + let end = n | |
110 | + else | |
111 | + if start >= 0 | |
112 | + " produce previous range | |
113 | + call Range(ranges, start, end, step, add) | |
114 | + endif | |
115 | + let start = n | |
116 | + let end = n | |
117 | + let step = 0 | |
118 | + let add = nl - n | |
119 | + endif | |
120 | + endif | |
121 | + endfor | |
122 | + if start >= 0 | |
123 | + call Range(ranges, start, end, step, add) | |
124 | + endif | |
125 | + | |
126 | + " New buffer to put the result in. | |
127 | + new | |
128 | + exe "file to" . a:name | |
129 | + call setline(1, "static convertStruct to" . a:name . "[] =") | |
130 | + call setline(2, "{") | |
131 | + call append('$', ranges) | |
132 | + call setline('$', getline('$')[:-2]) " remove last comma | |
133 | + call setline(line('$') + 1, "};") | |
134 | + wincmd p | |
135 | + endfunc | |
136 | + | |
137 | + " Build the foldCase table in a new buffer. | |
138 | + " Uses s:foldprops. | |
139 | + func! BuildFoldTable() | |
140 | + let start = -1 | |
141 | + let end = -1 | |
142 | + let step = 0 | |
143 | + let add = -1 | |
144 | + let ranges = [] | |
145 | + for p in s:foldprops | |
146 | + if p[1] == 'C' || p[1] == 'S' | |
147 | + let n = ('0x' . p[0]) + 0 | |
148 | + let nl = ('0x' . p[2]) + 0 | |
149 | + if start >= 0 && add == nl - n && (step == 0 || n - end == step) | |
150 | + " continue with same range. | |
151 | + let step = n - end | |
152 | + let end = n | |
153 | + else | |
154 | + if start >= 0 | |
155 | + " produce previous range | |
156 | + call Range(ranges, start, end, step, add) | |
157 | + endif | |
158 | + let start = n | |
159 | + let end = n | |
160 | + let step = 0 | |
161 | + let add = nl - n | |
162 | + endif | |
163 | + endif | |
164 | + endfor | |
165 | + if start >= 0 | |
166 | + call Range(ranges, start, end, step, add) | |
167 | + endif | |
168 | + | |
169 | + " New buffer to put the result in. | |
170 | + new | |
171 | + file foldCase | |
172 | + call setline(1, "static convertStruct foldCase[] =") | |
173 | + call setline(2, "{") | |
174 | + call append('$', ranges) | |
175 | + call setline('$', getline('$')[:-2]) " remove last comma | |
176 | + call setline(line('$') + 1, "};") | |
177 | + wincmd p | |
178 | + endfunc | |
179 | + | |
180 | + func! Range(ranges, start, end, step, add) | |
181 | + let s = printf("\t{0x%x,0x%x,%d,%d},", a:start, a:end, a:step == 0 ? -1 : a:step, a:add) | |
182 | + call add(a:ranges, s) | |
183 | + endfunc | |
184 | + | |
185 | + " Build the combining table. | |
186 | + " Uses s:dataprops. | |
187 | + func! BuildCombiningTable() | |
188 | + let start = -1 | |
189 | + let end = -1 | |
190 | + let ranges = [] | |
191 | + for p in s:dataprops | |
192 | + if p[2] == 'Mn' || p[2] == 'Mc' || p[2] == 'Me' | |
193 | + let n = ('0x' . p[0]) + 0 | |
194 | + if start >= 0 && end + 1 == n | |
195 | + " continue with same range. | |
196 | + let end = n | |
197 | + else | |
198 | + if start >= 0 | |
199 | + " produce previous range | |
200 | + call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) | |
201 | + endif | |
202 | + let start = n | |
203 | + let end = n | |
204 | + endif | |
205 | + endif | |
206 | + endfor | |
207 | + if start >= 0 | |
208 | + call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) | |
209 | + endif | |
210 | + | |
211 | + " New buffer to put the result in. | |
212 | + new | |
213 | + file combining | |
214 | + call setline(1, " static struct interval combining[] =") | |
215 | + call setline(2, " {") | |
216 | + call append('$', ranges) | |
217 | + call setline('$', getline('$')[:-2]) " remove last comma | |
218 | + call setline(line('$') + 1, " };") | |
219 | + wincmd p | |
220 | + endfunc | |
221 | + | |
222 | + " Build the ambiguous table in a new buffer. | |
223 | + " Uses s:widthprops and s:dataprops. | |
224 | + func! BuildAmbiguousTable() | |
225 | + let start = -1 | |
226 | + let end = -1 | |
227 | + let ranges = [] | |
228 | + let dataidx = 0 | |
229 | + for p in s:widthprops | |
230 | + if p[1][0] == 'A' | |
231 | + let n = ('0x' . p[0]) + 0 | |
232 | + " Find this char in the data table. | |
233 | + while 1 | |
234 | + let dn = ('0x' . s:dataprops[dataidx][0]) + 0 | |
235 | + if dn >= n | |
236 | + break | |
237 | + endif | |
238 | + let dataidx += 1 | |
239 | + endwhile | |
240 | + if dn != n | |
241 | + echoerr "Cannot find character " . n . " in data table" | |
242 | + endif | |
243 | + " Only use the char when it's not a composing char. | |
244 | + let dp = s:dataprops[dataidx] | |
245 | + if dp[2] != 'Mn' && dp[2] != 'Mc' && dp[2] != 'Me' | |
246 | + if start >= 0 && end + 1 == n | |
247 | + " continue with same range. | |
248 | + let end = n | |
249 | + else | |
250 | + if start >= 0 | |
251 | + " produce previous range | |
252 | + call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) | |
253 | + endif | |
254 | + let start = n | |
255 | + if p[0] =~ '\.\.' | |
256 | + let end = ('0x' . substitute(p[0], '.*\.\.', '', '')) + 0 | |
257 | + else | |
258 | + let end = n | |
259 | + endif | |
260 | + endif | |
261 | + endif | |
262 | + endif | |
263 | + endfor | |
264 | + if start >= 0 | |
265 | + call add(ranges, printf("\t{0x%04x, 0x%04x},", start, end)) | |
266 | + endif | |
267 | + | |
268 | + " New buffer to put the result in. | |
269 | + new | |
270 | + file ambiguous | |
271 | + call setline(1, " static struct interval ambiguous[] =") | |
272 | + call setline(2, " {") | |
273 | + call append('$', ranges) | |
274 | + call setline('$', getline('$')[:-2]) " remove last comma | |
275 | + call setline(line('$') + 1, " };") | |
276 | + wincmd p | |
277 | + endfunc | |
278 | + | |
279 | + | |
280 | + | |
281 | + " Edit the Unicode text file. Requires the netrw plugin. | |
282 | + edit http://unicode.org/Public/UNIDATA/UnicodeData.txt | |
283 | + | |
284 | + " Parse each line, create a list of lists. | |
285 | + call ParseDataToProps() | |
286 | + | |
287 | + " Build the toLower table. | |
288 | + call BuildCaseTable("Lower", 13) | |
289 | + | |
290 | + " Build the toUpper table. | |
291 | + call BuildCaseTable("Upper", 12) | |
292 | + | |
293 | + " Build the ranges of composing chars. | |
294 | + call BuildCombiningTable() | |
295 | + | |
296 | + " Edit the case folding text file. Requires the netrw plugin. | |
297 | + edit http://www.unicode.org/Public/UNIDATA/CaseFolding.txt | |
298 | + | |
299 | + " Parse each line, create a list of lists. | |
300 | + call ParseFoldProps() | |
301 | + | |
302 | + " Build the foldCase table. | |
303 | + call BuildFoldTable() | |
304 | + | |
305 | + " Edit the width text file. Requires the netrw plugin. | |
306 | + edit http://www.unicode.org/Public/UNIDATA/EastAsianWidth.txt | |
307 | + | |
308 | + " Parse each line, create a list of lists. | |
309 | + call ParseWidthProps() | |
310 | + | |
311 | + " Build the ambiguous table. | |
312 | + call BuildAmbiguousTable() | |
313 | *** ../vim-7.2.329/src/mbyte.c 2009-12-02 15:03:24.000000000 +0100 | |
314 | --- src/mbyte.c 2010-01-12 19:35:49.000000000 +0100 | |
315 | *************** | |
316 | *** 26,32 **** | |
317 | * Recognizing bytes is easy: 0xxx.xxxx is a single-byte | |
318 | * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading | |
319 | * byte of a multi-byte character. | |
320 | ! * To make things complicated, up to two composing characters | |
321 | * are allowed. These are drawn on top of the first char. | |
322 | * For most editing the sequence of bytes with composing | |
323 | * characters included is considered to be one character. | |
324 | --- 26,32 ---- | |
325 | * Recognizing bytes is easy: 0xxx.xxxx is a single-byte | |
326 | * char, 10xx.xxxx is a trailing byte, 11xx.xxxx is a leading | |
327 | * byte of a multi-byte character. | |
328 | ! * To make things complicated, up to six composing characters | |
329 | * are allowed. These are drawn on top of the first char. | |
330 | * For most editing the sequence of bytes with composing | |
331 | * characters included is considered to be one character. | |
332 | *************** | |
333 | *** 1153,1160 **** | |
334 | ||
335 | struct interval | |
336 | { | |
337 | ! unsigned short first; | |
338 | ! unsigned short last; | |
339 | }; | |
340 | static int intable __ARGS((struct interval *table, size_t size, int c)); | |
341 | ||
342 | --- 1153,1160 ---- | |
343 | ||
344 | struct interval | |
345 | { | |
346 | ! long first; | |
347 | ! long last; | |
348 | }; | |
349 | static int intable __ARGS((struct interval *table, size_t size, int c)); | |
350 | ||
351 | *************** | |
352 | *** 1200,1261 **** | |
353 | utf_char2cells(c) | |
354 | int c; | |
355 | { | |
356 | ! /* sorted list of non-overlapping intervals of East Asian Ambiguous | |
357 | ! * characters, generated with: | |
358 | ! * "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */ | |
359 | ! static struct interval ambiguous[] = { | |
360 | ! {0x00A1, 0x00A1}, {0x00A4, 0x00A4}, {0x00A7, 0x00A8}, | |
361 | ! {0x00AA, 0x00AA}, {0x00AE, 0x00AE}, {0x00B0, 0x00B4}, | |
362 | ! {0x00B6, 0x00BA}, {0x00BC, 0x00BF}, {0x00C6, 0x00C6}, | |
363 | ! {0x00D0, 0x00D0}, {0x00D7, 0x00D8}, {0x00DE, 0x00E1}, | |
364 | ! {0x00E6, 0x00E6}, {0x00E8, 0x00EA}, {0x00EC, 0x00ED}, | |
365 | ! {0x00F0, 0x00F0}, {0x00F2, 0x00F3}, {0x00F7, 0x00FA}, | |
366 | ! {0x00FC, 0x00FC}, {0x00FE, 0x00FE}, {0x0101, 0x0101}, | |
367 | ! {0x0111, 0x0111}, {0x0113, 0x0113}, {0x011B, 0x011B}, | |
368 | ! {0x0126, 0x0127}, {0x012B, 0x012B}, {0x0131, 0x0133}, | |
369 | ! {0x0138, 0x0138}, {0x013F, 0x0142}, {0x0144, 0x0144}, | |
370 | ! {0x0148, 0x014B}, {0x014D, 0x014D}, {0x0152, 0x0153}, | |
371 | ! {0x0166, 0x0167}, {0x016B, 0x016B}, {0x01CE, 0x01CE}, | |
372 | ! {0x01D0, 0x01D0}, {0x01D2, 0x01D2}, {0x01D4, 0x01D4}, | |
373 | ! {0x01D6, 0x01D6}, {0x01D8, 0x01D8}, {0x01DA, 0x01DA}, | |
374 | ! {0x01DC, 0x01DC}, {0x0251, 0x0251}, {0x0261, 0x0261}, | |
375 | ! {0x02C4, 0x02C4}, {0x02C7, 0x02C7}, {0x02C9, 0x02CB}, | |
376 | ! {0x02CD, 0x02CD}, {0x02D0, 0x02D0}, {0x02D8, 0x02DB}, | |
377 | ! {0x02DD, 0x02DD}, {0x02DF, 0x02DF}, {0x0391, 0x03A1}, | |
378 | ! {0x03A3, 0x03A9}, {0x03B1, 0x03C1}, {0x03C3, 0x03C9}, | |
379 | ! {0x0401, 0x0401}, {0x0410, 0x044F}, {0x0451, 0x0451}, | |
380 | ! {0x2010, 0x2010}, {0x2013, 0x2016}, {0x2018, 0x2019}, | |
381 | ! {0x201C, 0x201D}, {0x2020, 0x2022}, {0x2024, 0x2027}, | |
382 | ! {0x2030, 0x2030}, {0x2032, 0x2033}, {0x2035, 0x2035}, | |
383 | ! {0x203B, 0x203B}, {0x203E, 0x203E}, {0x2074, 0x2074}, | |
384 | ! {0x207F, 0x207F}, {0x2081, 0x2084}, {0x20AC, 0x20AC}, | |
385 | ! {0x2103, 0x2103}, {0x2105, 0x2105}, {0x2109, 0x2109}, | |
386 | ! {0x2113, 0x2113}, {0x2116, 0x2116}, {0x2121, 0x2122}, | |
387 | ! {0x2126, 0x2126}, {0x212B, 0x212B}, {0x2153, 0x2154}, | |
388 | ! {0x215B, 0x215E}, {0x2160, 0x216B}, {0x2170, 0x2179}, | |
389 | ! {0x2190, 0x2199}, {0x21B8, 0x21B9}, {0x21D2, 0x21D2}, | |
390 | ! {0x21D4, 0x21D4}, {0x21E7, 0x21E7}, {0x2200, 0x2200}, | |
391 | ! {0x2202, 0x2203}, {0x2207, 0x2208}, {0x220B, 0x220B}, | |
392 | ! {0x220F, 0x220F}, {0x2211, 0x2211}, {0x2215, 0x2215}, | |
393 | ! {0x221A, 0x221A}, {0x221D, 0x2220}, {0x2223, 0x2223}, | |
394 | ! {0x2225, 0x2225}, {0x2227, 0x222C}, {0x222E, 0x222E}, | |
395 | ! {0x2234, 0x2237}, {0x223C, 0x223D}, {0x2248, 0x2248}, | |
396 | ! {0x224C, 0x224C}, {0x2252, 0x2252}, {0x2260, 0x2261}, | |
397 | ! {0x2264, 0x2267}, {0x226A, 0x226B}, {0x226E, 0x226F}, | |
398 | ! {0x2282, 0x2283}, {0x2286, 0x2287}, {0x2295, 0x2295}, | |
399 | ! {0x2299, 0x2299}, {0x22A5, 0x22A5}, {0x22BF, 0x22BF}, | |
400 | ! {0x2312, 0x2312}, {0x2460, 0x24E9}, {0x24EB, 0x254B}, | |
401 | ! {0x2550, 0x2573}, {0x2580, 0x258F}, {0x2592, 0x2595}, | |
402 | ! {0x25A0, 0x25A1}, {0x25A3, 0x25A9}, {0x25B2, 0x25B3}, | |
403 | ! {0x25B6, 0x25B7}, {0x25BC, 0x25BD}, {0x25C0, 0x25C1}, | |
404 | ! {0x25C6, 0x25C8}, {0x25CB, 0x25CB}, {0x25CE, 0x25D1}, | |
405 | ! {0x25E2, 0x25E5}, {0x25EF, 0x25EF}, {0x2605, 0x2606}, | |
406 | ! {0x2609, 0x2609}, {0x260E, 0x260F}, {0x2614, 0x2615}, | |
407 | ! {0x261C, 0x261C}, {0x261E, 0x261E}, {0x2640, 0x2640}, | |
408 | ! {0x2642, 0x2642}, {0x2660, 0x2661}, {0x2663, 0x2665}, | |
409 | ! {0x2667, 0x266A}, {0x266C, 0x266D}, {0x266F, 0x266F}, | |
410 | ! {0x273D, 0x273D}, {0x2776, 0x277F}, {0xE000, 0xF8FF}, | |
411 | ! {0xFFFD, 0xFFFD}, /* {0xF0000, 0xFFFFD}, {0x100000, 0x10FFFD} */ | |
412 | }; | |
413 | ||
414 | if (c >= 0x100) | |
415 | --- 1200,1390 ---- | |
416 | utf_char2cells(c) | |
417 | int c; | |
418 | { | |
419 | ! /* Sorted list of non-overlapping intervals of East Asian Ambiguous | |
420 | ! * characters, generated with ../runtime/tools/unicode.vim. */ | |
421 | ! static struct interval ambiguous[] = | |
422 | ! { | |
423 | ! {0x00a1, 0x00a1}, | |
424 | ! {0x00a4, 0x00a4}, | |
425 | ! {0x00a7, 0x00a8}, | |
426 | ! {0x00aa, 0x00aa}, | |
427 | ! {0x00ad, 0x00ae}, | |
428 | ! {0x00b0, 0x00b4}, | |
429 | ! {0x00b6, 0x00ba}, | |
430 | ! {0x00bc, 0x00bf}, | |
431 | ! {0x00c6, 0x00c6}, | |
432 | ! {0x00d0, 0x00d0}, | |
433 | ! {0x00d7, 0x00d8}, | |
434 | ! {0x00de, 0x00e1}, | |
435 | ! {0x00e6, 0x00e6}, | |
436 | ! {0x00e8, 0x00ea}, | |
437 | ! {0x00ec, 0x00ed}, | |
438 | ! {0x00f0, 0x00f0}, | |
439 | ! {0x00f2, 0x00f3}, | |
440 | ! {0x00f7, 0x00fa}, | |
441 | ! {0x00fc, 0x00fc}, | |
442 | ! {0x00fe, 0x00fe}, | |
443 | ! {0x0101, 0x0101}, | |
444 | ! {0x0111, 0x0111}, | |
445 | ! {0x0113, 0x0113}, | |
446 | ! {0x011b, 0x011b}, | |
447 | ! {0x0126, 0x0127}, | |
448 | ! {0x012b, 0x012b}, | |
449 | ! {0x0131, 0x0133}, | |
450 | ! {0x0138, 0x0138}, | |
451 | ! {0x013f, 0x0142}, | |
452 | ! {0x0144, 0x0144}, | |
453 | ! {0x0148, 0x014b}, | |
454 | ! {0x014d, 0x014d}, | |
455 | ! {0x0152, 0x0153}, | |
456 | ! {0x0166, 0x0167}, | |
457 | ! {0x016b, 0x016b}, | |
458 | ! {0x01ce, 0x01ce}, | |
459 | ! {0x01d0, 0x01d0}, | |
460 | ! {0x01d2, 0x01d2}, | |
461 | ! {0x01d4, 0x01d4}, | |
462 | ! {0x01d6, 0x01d6}, | |
463 | ! {0x01d8, 0x01d8}, | |
464 | ! {0x01da, 0x01da}, | |
465 | ! {0x01dc, 0x01dc}, | |
466 | ! {0x0251, 0x0251}, | |
467 | ! {0x0261, 0x0261}, | |
468 | ! {0x02c4, 0x02c4}, | |
469 | ! {0x02c7, 0x02c7}, | |
470 | ! {0x02c9, 0x02cb}, | |
471 | ! {0x02cd, 0x02cd}, | |
472 | ! {0x02d0, 0x02d0}, | |
473 | ! {0x02d8, 0x02db}, | |
474 | ! {0x02dd, 0x02dd}, | |
475 | ! {0x02df, 0x02df}, | |
476 | ! {0x0391, 0x03a1}, | |
477 | ! {0x03a3, 0x03a9}, | |
478 | ! {0x03b1, 0x03c1}, | |
479 | ! {0x03c3, 0x03c9}, | |
480 | ! {0x0401, 0x0401}, | |
481 | ! {0x0410, 0x044f}, | |
482 | ! {0x0451, 0x0451}, | |
483 | ! {0x2010, 0x2010}, | |
484 | ! {0x2013, 0x2016}, | |
485 | ! {0x2018, 0x2019}, | |
486 | ! {0x201c, 0x201d}, | |
487 | ! {0x2020, 0x2022}, | |
488 | ! {0x2024, 0x2027}, | |
489 | ! {0x2030, 0x2030}, | |
490 | ! {0x2032, 0x2033}, | |
491 | ! {0x2035, 0x2035}, | |
492 | ! {0x203b, 0x203b}, | |
493 | ! {0x203e, 0x203e}, | |
494 | ! {0x2074, 0x2074}, | |
495 | ! {0x207f, 0x207f}, | |
496 | ! {0x2081, 0x2084}, | |
497 | ! {0x20ac, 0x20ac}, | |
498 | ! {0x2103, 0x2103}, | |
499 | ! {0x2105, 0x2105}, | |
500 | ! {0x2109, 0x2109}, | |
501 | ! {0x2113, 0x2113}, | |
502 | ! {0x2116, 0x2116}, | |
503 | ! {0x2121, 0x2122}, | |
504 | ! {0x2126, 0x2126}, | |
505 | ! {0x212b, 0x212b}, | |
506 | ! {0x2153, 0x2154}, | |
507 | ! {0x215b, 0x215e}, | |
508 | ! {0x2160, 0x216b}, | |
509 | ! {0x2170, 0x2179}, | |
510 | ! {0x2189, 0x2189}, | |
511 | ! {0x2190, 0x2199}, | |
512 | ! {0x21b8, 0x21b9}, | |
513 | ! {0x21d2, 0x21d2}, | |
514 | ! {0x21d4, 0x21d4}, | |
515 | ! {0x21e7, 0x21e7}, | |
516 | ! {0x2200, 0x2200}, | |
517 | ! {0x2202, 0x2203}, | |
518 | ! {0x2207, 0x2208}, | |
519 | ! {0x220b, 0x220b}, | |
520 | ! {0x220f, 0x220f}, | |
521 | ! {0x2211, 0x2211}, | |
522 | ! {0x2215, 0x2215}, | |
523 | ! {0x221a, 0x221a}, | |
524 | ! {0x221d, 0x2220}, | |
525 | ! {0x2223, 0x2223}, | |
526 | ! {0x2225, 0x2225}, | |
527 | ! {0x2227, 0x222c}, | |
528 | ! {0x222e, 0x222e}, | |
529 | ! {0x2234, 0x2237}, | |
530 | ! {0x223c, 0x223d}, | |
531 | ! {0x2248, 0x2248}, | |
532 | ! {0x224c, 0x224c}, | |
533 | ! {0x2252, 0x2252}, | |
534 | ! {0x2260, 0x2261}, | |
535 | ! {0x2264, 0x2267}, | |
536 | ! {0x226a, 0x226b}, | |
537 | ! {0x226e, 0x226f}, | |
538 | ! {0x2282, 0x2283}, | |
539 | ! {0x2286, 0x2287}, | |
540 | ! {0x2295, 0x2295}, | |
541 | ! {0x2299, 0x2299}, | |
542 | ! {0x22a5, 0x22a5}, | |
543 | ! {0x22bf, 0x22bf}, | |
544 | ! {0x2312, 0x2312}, | |
545 | ! {0x2460, 0x24e9}, | |
546 | ! {0x24eb, 0x254b}, | |
547 | ! {0x2550, 0x2573}, | |
548 | ! {0x2580, 0x258f}, | |
549 | ! {0x2592, 0x2595}, | |
550 | ! {0x25a0, 0x25a1}, | |
551 | ! {0x25a3, 0x25a9}, | |
552 | ! {0x25b2, 0x25b3}, | |
553 | ! {0x25b6, 0x25b7}, | |
554 | ! {0x25bc, 0x25bd}, | |
555 | ! {0x25c0, 0x25c1}, | |
556 | ! {0x25c6, 0x25c8}, | |
557 | ! {0x25cb, 0x25cb}, | |
558 | ! {0x25ce, 0x25d1}, | |
559 | ! {0x25e2, 0x25e5}, | |
560 | ! {0x25ef, 0x25ef}, | |
561 | ! {0x2605, 0x2606}, | |
562 | ! {0x2609, 0x2609}, | |
563 | ! {0x260e, 0x260f}, | |
564 | ! {0x2614, 0x2615}, | |
565 | ! {0x261c, 0x261c}, | |
566 | ! {0x261e, 0x261e}, | |
567 | ! {0x2640, 0x2640}, | |
568 | ! {0x2642, 0x2642}, | |
569 | ! {0x2660, 0x2661}, | |
570 | ! {0x2663, 0x2665}, | |
571 | ! {0x2667, 0x266a}, | |
572 | ! {0x266c, 0x266d}, | |
573 | ! {0x266f, 0x266f}, | |
574 | ! {0x269e, 0x269f}, | |
575 | ! {0x26be, 0x26bf}, | |
576 | ! {0x26c4, 0x26cd}, | |
577 | ! {0x26cf, 0x26e1}, | |
578 | ! {0x26e3, 0x26e3}, | |
579 | ! {0x26e8, 0x26ff}, | |
580 | ! {0x273d, 0x273d}, | |
581 | ! {0x2757, 0x2757}, | |
582 | ! {0x2776, 0x277f}, | |
583 | ! {0x2b55, 0x2b59}, | |
584 | ! {0x3248, 0x324f}, | |
585 | ! {0xe000, 0xf8ff}, | |
586 | ! {0xfffd, 0xfffd}, | |
587 | ! {0x1f100, 0x1f10a}, | |
588 | ! {0x1f110, 0x1f12d}, | |
589 | ! {0x1f131, 0x1f131}, | |
590 | ! {0x1f13d, 0x1f13d}, | |
591 | ! {0x1f13f, 0x1f13f}, | |
592 | ! {0x1f142, 0x1f142}, | |
593 | ! {0x1f146, 0x1f146}, | |
594 | ! {0x1f14a, 0x1f14e}, | |
595 | ! {0x1f157, 0x1f157}, | |
596 | ! {0x1f15f, 0x1f15f}, | |
597 | ! {0x1f179, 0x1f179}, | |
598 | ! {0x1f17b, 0x1f17c}, | |
599 | ! {0x1f17f, 0x1f17f}, | |
600 | ! {0x1f18a, 0x1f18d}, | |
601 | ! {0x1f190, 0x1f190}, | |
602 | ! {0xf0000, 0xffffd}, | |
603 | ! {0x100000, 0x10fffd} | |
604 | }; | |
605 | ||
606 | if (c >= 0x100) | |
607 | *************** | |
608 | *** 1807,1813 **** | |
609 | return 1; | |
610 | ||
611 | /* | |
612 | ! * Check for composing characters. We can handle only the first two, but | |
613 | * skip all of them (otherwise the cursor would get stuck). | |
614 | */ | |
615 | #ifdef FEAT_ARABIC | |
616 | --- 1936,1942 ---- | |
617 | return 1; | |
618 | ||
619 | /* | |
620 | ! * Check for composing characters. We can handle only the first six, but | |
621 | * skip all of them (otherwise the cursor would get stuck). | |
622 | */ | |
623 | #ifdef FEAT_ARABIC | |
624 | *************** | |
625 | *** 1855,1861 **** | |
626 | return 1; | |
627 | ||
628 | /* | |
629 | ! * Check for composing characters. We can handle only the first two, but | |
630 | * skip all of them (otherwise the cursor would get stuck). | |
631 | */ | |
632 | #ifdef FEAT_ARABIC | |
633 | --- 1984,1990 ---- | |
634 | return 1; | |
635 | ||
636 | /* | |
637 | ! * Check for composing characters. We can handle only the first six, but | |
638 | * skip all of them (otherwise the cursor would get stuck). | |
639 | */ | |
640 | #ifdef FEAT_ARABIC | |
641 | *************** | |
642 | *** 1973,2010 **** | |
643 | utf_iscomposing(c) | |
644 | int c; | |
645 | { | |
646 | ! /* sorted list of non-overlapping intervals */ | |
647 | static struct interval combining[] = | |
648 | { | |
649 | ! {0x0300, 0x034f}, {0x0360, 0x036f}, {0x0483, 0x0486}, {0x0488, 0x0489}, | |
650 | ! {0x0591, 0x05a1}, {0x05a3, 0x05b9}, {0x05bb, 0x05bd}, {0x05bf, 0x05bf}, | |
651 | ! {0x05c1, 0x05c2}, {0x05c4, 0x05c4}, {0x0610, 0x0615}, {0x064b, 0x0658}, | |
652 | ! {0x0670, 0x0670}, {0x06d6, 0x06dc}, {0x06de, 0x06e4}, {0x06e7, 0x06e8}, | |
653 | ! {0x06ea, 0x06ed}, {0x0711, 0x0711}, {0x0730, 0x074a}, {0x07a6, 0x07b0}, | |
654 | ! {0x0901, 0x0903}, {0x093c, 0x093c}, {0x093e, 0x094d}, {0x0951, 0x0954}, | |
655 | ! {0x0962, 0x0963}, {0x0981, 0x0983}, {0x09bc, 0x09bc}, {0x09be, 0x09c4}, | |
656 | ! {0x09c7, 0x09c8}, {0x09cb, 0x09cd}, {0x09d7, 0x09d7}, {0x09e2, 0x09e3}, | |
657 | ! {0x0a01, 0x0a03}, {0x0a3c, 0x0a3c}, {0x0a3e, 0x0a42}, {0x0a47, 0x0a48}, | |
658 | ! {0x0a4b, 0x0a4d}, {0x0a70, 0x0a71}, {0x0a81, 0x0a83}, {0x0abc, 0x0abc}, | |
659 | ! {0x0abe, 0x0ac5}, {0x0ac7, 0x0ac9}, {0x0acb, 0x0acd}, {0x0ae2, 0x0ae3}, | |
660 | ! {0x0b01, 0x0b03}, {0x0b3c, 0x0b3c}, {0x0b3e, 0x0b43}, {0x0b47, 0x0b48}, | |
661 | ! {0x0b4b, 0x0b4d}, {0x0b56, 0x0b57}, {0x0b82, 0x0b82}, {0x0bbe, 0x0bc2}, | |
662 | ! {0x0bc6, 0x0bc8}, {0x0bca, 0x0bcd}, {0x0bd7, 0x0bd7}, {0x0c01, 0x0c03}, | |
663 | ! {0x0c3e, 0x0c44}, {0x0c46, 0x0c48}, {0x0c4a, 0x0c4d}, {0x0c55, 0x0c56}, | |
664 | ! {0x0c82, 0x0c83}, {0x0cbc, 0x0cbc}, {0x0cbe, 0x0cc4}, {0x0cc6, 0x0cc8}, | |
665 | ! {0x0cca, 0x0ccd}, {0x0cd5, 0x0cd6}, {0x0d02, 0x0d03}, {0x0d3e, 0x0d43}, | |
666 | ! {0x0d46, 0x0d48}, {0x0d4a, 0x0d4d}, {0x0d57, 0x0d57}, {0x0d82, 0x0d83}, | |
667 | ! {0x0dca, 0x0dca}, {0x0dcf, 0x0dd4}, {0x0dd6, 0x0dd6}, {0x0dd8, 0x0ddf}, | |
668 | ! {0x0df2, 0x0df3}, {0x0e31, 0x0e31}, {0x0e34, 0x0e3a}, {0x0e47, 0x0e4e}, | |
669 | ! {0x0eb1, 0x0eb1}, {0x0eb4, 0x0eb9}, {0x0ebb, 0x0ebc}, {0x0ec8, 0x0ecd}, | |
670 | ! {0x0f18, 0x0f19}, {0x0f35, 0x0f35}, {0x0f37, 0x0f37}, {0x0f39, 0x0f39}, | |
671 | ! {0x0f3e, 0x0f3f}, {0x0f71, 0x0f84}, {0x0f86, 0x0f87}, {0x0f90, 0x0f97}, | |
672 | ! {0x0f99, 0x0fbc}, {0x0fc6, 0x0fc6}, {0x102c, 0x1032}, {0x1036, 0x1039}, | |
673 | ! {0x1056, 0x1059}, {0x1712, 0x1714}, {0x1732, 0x1734}, {0x1752, 0x1753}, | |
674 | ! {0x1772, 0x1773}, {0x17b6, 0x17d3}, {0x17dd, 0x17dd}, {0x180b, 0x180d}, | |
675 | ! {0x18a9, 0x18a9}, {0x1920, 0x192b}, {0x1930, 0x193b}, {0x20d0, 0x20ea}, | |
676 | ! {0x302a, 0x302f}, {0x3099, 0x309a}, {0xfb1e, 0xfb1e}, {0xfe00, 0xfe0f}, | |
677 | ! {0xfe20, 0xfe23}, | |
678 | }; | |
679 | ||
680 | return intable(combining, sizeof(combining), c); | |
681 | --- 2102,2299 ---- | |
682 | utf_iscomposing(c) | |
683 | int c; | |
684 | { | |
685 | ! /* Sorted list of non-overlapping intervals. | |
686 | ! * Generated by ../runtime/tools/unicode.vim. */ | |
687 | static struct interval combining[] = | |
688 | { | |
689 | ! {0x0300, 0x036f}, | |
690 | ! {0x0483, 0x0489}, | |
691 | ! {0x0591, 0x05bd}, | |
692 | ! {0x05bf, 0x05bf}, | |
693 | ! {0x05c1, 0x05c2}, | |
694 | ! {0x05c4, 0x05c5}, | |
695 | ! {0x05c7, 0x05c7}, | |
696 | ! {0x0610, 0x061a}, | |
697 | ! {0x064b, 0x065e}, | |
698 | ! {0x0670, 0x0670}, | |
699 | ! {0x06d6, 0x06dc}, | |
700 | ! {0x06de, 0x06e4}, | |
701 | ! {0x06e7, 0x06e8}, | |
702 | ! {0x06ea, 0x06ed}, | |
703 | ! {0x0711, 0x0711}, | |
704 | ! {0x0730, 0x074a}, | |
705 | ! {0x07a6, 0x07b0}, | |
706 | ! {0x07eb, 0x07f3}, | |
707 | ! {0x0816, 0x0819}, | |
708 | ! {0x081b, 0x0823}, | |
709 | ! {0x0825, 0x0827}, | |
710 | ! {0x0829, 0x082d}, | |
711 | ! {0x0900, 0x0903}, | |
712 | ! {0x093c, 0x093c}, | |
713 | ! {0x093e, 0x094e}, | |
714 | ! {0x0951, 0x0955}, | |
715 | ! {0x0962, 0x0963}, | |
716 | ! {0x0981, 0x0983}, | |
717 | ! {0x09bc, 0x09bc}, | |
718 | ! {0x09be, 0x09c4}, | |
719 | ! {0x09c7, 0x09c8}, | |
720 | ! {0x09cb, 0x09cd}, | |
721 | ! {0x09d7, 0x09d7}, | |
722 | ! {0x09e2, 0x09e3}, | |
723 | ! {0x0a01, 0x0a03}, | |
724 | ! {0x0a3c, 0x0a3c}, | |
725 | ! {0x0a3e, 0x0a42}, | |
726 | ! {0x0a47, 0x0a48}, | |
727 | ! {0x0a4b, 0x0a4d}, | |
728 | ! {0x0a51, 0x0a51}, | |
729 | ! {0x0a70, 0x0a71}, | |
730 | ! {0x0a75, 0x0a75}, | |
731 | ! {0x0a81, 0x0a83}, | |
732 | ! {0x0abc, 0x0abc}, | |
733 | ! {0x0abe, 0x0ac5}, | |
734 | ! {0x0ac7, 0x0ac9}, | |
735 | ! {0x0acb, 0x0acd}, | |
736 | ! {0x0ae2, 0x0ae3}, | |
737 | ! {0x0b01, 0x0b03}, | |
738 | ! {0x0b3c, 0x0b3c}, | |
739 | ! {0x0b3e, 0x0b44}, | |
740 | ! {0x0b47, 0x0b48}, | |
741 | ! {0x0b4b, 0x0b4d}, | |
742 | ! {0x0b56, 0x0b57}, | |
743 | ! {0x0b62, 0x0b63}, | |
744 | ! {0x0b82, 0x0b82}, | |
745 | ! {0x0bbe, 0x0bc2}, | |
746 | ! {0x0bc6, 0x0bc8}, | |
747 | ! {0x0bca, 0x0bcd}, | |
748 | ! {0x0bd7, 0x0bd7}, | |
749 | ! {0x0c01, 0x0c03}, | |
750 | ! {0x0c3e, 0x0c44}, | |
751 | ! {0x0c46, 0x0c48}, | |
752 | ! {0x0c4a, 0x0c4d}, | |
753 | ! {0x0c55, 0x0c56}, | |
754 | ! {0x0c62, 0x0c63}, | |
755 | ! {0x0c82, 0x0c83}, | |
756 | ! {0x0cbc, 0x0cbc}, | |
757 | ! {0x0cbe, 0x0cc4}, | |
758 | ! {0x0cc6, 0x0cc8}, | |
759 | ! {0x0cca, 0x0ccd}, | |
760 | ! {0x0cd5, 0x0cd6}, | |
761 | ! {0x0ce2, 0x0ce3}, | |
762 | ! {0x0d02, 0x0d03}, | |
763 | ! {0x0d3e, 0x0d44}, | |
764 | ! {0x0d46, 0x0d48}, | |
765 | ! {0x0d4a, 0x0d4d}, | |
766 | ! {0x0d57, 0x0d57}, | |
767 | ! {0x0d62, 0x0d63}, | |
768 | ! {0x0d82, 0x0d83}, | |
769 | ! {0x0dca, 0x0dca}, | |
770 | ! {0x0dcf, 0x0dd4}, | |
771 | ! {0x0dd6, 0x0dd6}, | |
772 | ! {0x0dd8, 0x0ddf}, | |
773 | ! {0x0df2, 0x0df3}, | |
774 | ! {0x0e31, 0x0e31}, | |
775 | ! {0x0e34, 0x0e3a}, | |
776 | ! {0x0e47, 0x0e4e}, | |
777 | ! {0x0eb1, 0x0eb1}, | |
778 | ! {0x0eb4, 0x0eb9}, | |
779 | ! {0x0ebb, 0x0ebc}, | |
780 | ! {0x0ec8, 0x0ecd}, | |
781 | ! {0x0f18, 0x0f19}, | |
782 | ! {0x0f35, 0x0f35}, | |
783 | ! {0x0f37, 0x0f37}, | |
784 | ! {0x0f39, 0x0f39}, | |
785 | ! {0x0f3e, 0x0f3f}, | |
786 | ! {0x0f71, 0x0f84}, | |
787 | ! {0x0f86, 0x0f87}, | |
788 | ! {0x0f90, 0x0f97}, | |
789 | ! {0x0f99, 0x0fbc}, | |
790 | ! {0x0fc6, 0x0fc6}, | |
791 | ! {0x102b, 0x103e}, | |
792 | ! {0x1056, 0x1059}, | |
793 | ! {0x105e, 0x1060}, | |
794 | ! {0x1062, 0x1064}, | |
795 | ! {0x1067, 0x106d}, | |
796 | ! {0x1071, 0x1074}, | |
797 | ! {0x1082, 0x108d}, | |
798 | ! {0x108f, 0x108f}, | |
799 | ! {0x109a, 0x109d}, | |
800 | ! {0x135f, 0x135f}, | |
801 | ! {0x1712, 0x1714}, | |
802 | ! {0x1732, 0x1734}, | |
803 | ! {0x1752, 0x1753}, | |
804 | ! {0x1772, 0x1773}, | |
805 | ! {0x17b6, 0x17d3}, | |
806 | ! {0x17dd, 0x17dd}, | |
807 | ! {0x180b, 0x180d}, | |
808 | ! {0x18a9, 0x18a9}, | |
809 | ! {0x1920, 0x192b}, | |
810 | ! {0x1930, 0x193b}, | |
811 | ! {0x19b0, 0x19c0}, | |
812 | ! {0x19c8, 0x19c9}, | |
813 | ! {0x1a17, 0x1a1b}, | |
814 | ! {0x1a55, 0x1a5e}, | |
815 | ! {0x1a60, 0x1a7c}, | |
816 | ! {0x1a7f, 0x1a7f}, | |
817 | ! {0x1b00, 0x1b04}, | |
818 | ! {0x1b34, 0x1b44}, | |
819 | ! {0x1b6b, 0x1b73}, | |
820 | ! {0x1b80, 0x1b82}, | |
821 | ! {0x1ba1, 0x1baa}, | |
822 | ! {0x1c24, 0x1c37}, | |
823 | ! {0x1cd0, 0x1cd2}, | |
824 | ! {0x1cd4, 0x1ce8}, | |
825 | ! {0x1ced, 0x1ced}, | |
826 | ! {0x1cf2, 0x1cf2}, | |
827 | ! {0x1dc0, 0x1de6}, | |
828 | ! {0x1dfd, 0x1dff}, | |
829 | ! {0x20d0, 0x20f0}, | |
830 | ! {0x2cef, 0x2cf1}, | |
831 | ! {0x2de0, 0x2dff}, | |
832 | ! {0x302a, 0x302f}, | |
833 | ! {0x3099, 0x309a}, | |
834 | ! {0xa66f, 0xa672}, | |
835 | ! {0xa67c, 0xa67d}, | |
836 | ! {0xa6f0, 0xa6f1}, | |
837 | ! {0xa802, 0xa802}, | |
838 | ! {0xa806, 0xa806}, | |
839 | ! {0xa80b, 0xa80b}, | |
840 | ! {0xa823, 0xa827}, | |
841 | ! {0xa880, 0xa881}, | |
842 | ! {0xa8b4, 0xa8c4}, | |
843 | ! {0xa8e0, 0xa8f1}, | |
844 | ! {0xa926, 0xa92d}, | |
845 | ! {0xa947, 0xa953}, | |
846 | ! {0xa980, 0xa983}, | |
847 | ! {0xa9b3, 0xa9c0}, | |
848 | ! {0xaa29, 0xaa36}, | |
849 | ! {0xaa43, 0xaa43}, | |
850 | ! {0xaa4c, 0xaa4d}, | |
851 | ! {0xaa7b, 0xaa7b}, | |
852 | ! {0xaab0, 0xaab0}, | |
853 | ! {0xaab2, 0xaab4}, | |
854 | ! {0xaab7, 0xaab8}, | |
855 | ! {0xaabe, 0xaabf}, | |
856 | ! {0xaac1, 0xaac1}, | |
857 | ! {0xabe3, 0xabea}, | |
858 | ! {0xabec, 0xabed}, | |
859 | ! {0xfb1e, 0xfb1e}, | |
860 | ! {0xfe00, 0xfe0f}, | |
861 | ! {0xfe20, 0xfe26}, | |
862 | ! {0x101fd, 0x101fd}, | |
863 | ! {0x10a01, 0x10a03}, | |
864 | ! {0x10a05, 0x10a06}, | |
865 | ! {0x10a0c, 0x10a0f}, | |
866 | ! {0x10a38, 0x10a3a}, | |
867 | ! {0x10a3f, 0x10a3f}, | |
868 | ! {0x11080, 0x11082}, | |
869 | ! {0x110b0, 0x110ba}, | |
870 | ! {0x1d165, 0x1d169}, | |
871 | ! {0x1d16d, 0x1d172}, | |
872 | ! {0x1d17b, 0x1d182}, | |
873 | ! {0x1d185, 0x1d18b}, | |
874 | ! {0x1d1aa, 0x1d1ad}, | |
875 | ! {0x1d242, 0x1d244}, | |
876 | ! {0xe0100, 0xe01ef} | |
877 | }; | |
878 | ||
879 | return intable(combining, sizeof(combining), c); | |
880 | *************** | |
881 | *** 2152,2166 **** | |
882 | * Code for Unicode case-dependent operations. Based on notes in | |
883 | * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt | |
884 | * This code uses simple case folding, not full case folding. | |
885 | */ | |
886 | ||
887 | /* | |
888 | ! * The following table is built by foldExtract.pl < CaseFolding.txt . | |
889 | ! * It must be in numeric order, because we use binary search on it. | |
890 | ! * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range | |
891 | ! * from 0x41 to 0x5a inclusive, stepping by 1, are folded by adding 32. | |
892 | */ | |
893 | - | |
894 | typedef struct | |
895 | { | |
896 | int rangeStart; | |
897 | --- 2441,2456 ---- | |
898 | * Code for Unicode case-dependent operations. Based on notes in | |
899 | * http://www.unicode.org/Public/UNIDATA/CaseFolding.txt | |
900 | * This code uses simple case folding, not full case folding. | |
901 | + * Last updated for Unicode 5.2. | |
902 | */ | |
903 | ||
904 | /* | |
905 | ! * The following tables are built by ../runtime/tools/unicode.vim. | |
906 | ! * They must be in numeric order, because we use binary search. | |
907 | ! * An entry such as {0x41,0x5a,1,32} means that Unicode characters in the | |
908 | ! * range from 0x41 to 0x5a inclusive, stepping by 1, are changed to | |
909 | ! * folded/upper/lower by adding 32. | |
910 | */ | |
911 | typedef struct | |
912 | { | |
913 | int rangeStart; | |
914 | *************** | |
915 | *** 2171,2211 **** | |
916 | ||
917 | static convertStruct foldCase[] = | |
918 | { | |
919 | ! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32}, | |
920 | ! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1}, | |
921 | ! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121}, | |
922 | ! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1}, | |
923 | ! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205}, | |
924 | ! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202}, | |
925 | ! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205}, | |
926 | ! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209}, | |
927 | ! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213}, | |
928 | ! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218}, | |
929 | ! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1}, | |
930 | ! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217}, | |
931 | ! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1}, | |
932 | ! {0x1c4,0x1c4,-1,2}, {0x1c5,0x1c5,-1,1}, {0x1c7,0x1c7,-1,2}, | |
933 | ! {0x1c8,0x1c8,-1,1}, {0x1ca,0x1ca,-1,2}, {0x1cb,0x1db,2,1}, | |
934 | ! {0x1de,0x1ee,2,1}, {0x1f1,0x1f1,-1,2}, {0x1f2,0x1f4,2,1}, | |
935 | ! {0x1f6,0x1f6,-1,-97}, {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1}, | |
936 | ! {0x220,0x220,-1,-130}, {0x222,0x232,2,1}, {0x386,0x386,-1,38}, | |
937 | ! {0x388,0x38a,1,37}, {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63}, | |
938 | ! {0x391,0x3a1,1,32}, {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1}, | |
939 | ! {0x3f4,0x3f4,-1,-60}, {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7}, | |
940 | ! {0x3fa,0x3fa,-1,1}, {0x400,0x40f,1,80}, {0x410,0x42f,1,32}, | |
941 | ! {0x460,0x480,2,1}, {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1}, | |
942 | ! {0x4d0,0x4f4,2,1}, {0x4f8,0x500,8,1}, {0x502,0x50e,2,1}, | |
943 | ! {0x531,0x556,1,48}, {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1}, | |
944 | ! {0x1f08,0x1f0f,1,-8}, {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8}, | |
945 | ! {0x1f38,0x1f3f,1,-8}, {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8}, | |
946 | ! {0x1f68,0x1f6f,1,-8}, {0x1f88,0x1f8f,1,-8}, {0x1f98,0x1f9f,1,-8}, | |
947 | ! {0x1fa8,0x1faf,1,-8}, {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74}, | |
948 | ! {0x1fbc,0x1fbc,-1,-9}, {0x1fc8,0x1fcb,1,-86}, {0x1fcc,0x1fcc,-1,-9}, | |
949 | ! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8}, | |
950 | ! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128}, | |
951 | ! {0x1ffa,0x1ffb,1,-126}, {0x1ffc,0x1ffc,-1,-9}, {0x2126,0x2126,-1,-7517}, | |
952 | ! {0x212a,0x212a,-1,-8383}, {0x212b,0x212b,-1,-8262}, | |
953 | ! {0x2160,0x216f,1,16}, {0x24b6,0x24cf,1,26}, {0xff21,0xff3a,1,32}, | |
954 | {0x10400,0x10427,1,40} | |
955 | }; | |
956 | ||
957 | --- 2461,2621 ---- | |
958 | ||
959 | static convertStruct foldCase[] = | |
960 | { | |
961 | ! {0x41,0x5a,1,32}, | |
962 | ! {0xb5,0xb5,-1,775}, | |
963 | ! {0xc0,0xd6,1,32}, | |
964 | ! {0xd8,0xde,1,32}, | |
965 | ! {0x100,0x12e,2,1}, | |
966 | ! {0x132,0x136,2,1}, | |
967 | ! {0x139,0x147,2,1}, | |
968 | ! {0x14a,0x176,2,1}, | |
969 | ! {0x178,0x178,-1,-121}, | |
970 | ! {0x179,0x17d,2,1}, | |
971 | ! {0x17f,0x17f,-1,-268}, | |
972 | ! {0x181,0x181,-1,210}, | |
973 | ! {0x182,0x184,2,1}, | |
974 | ! {0x186,0x186,-1,206}, | |
975 | ! {0x187,0x187,-1,1}, | |
976 | ! {0x189,0x18a,1,205}, | |
977 | ! {0x18b,0x18b,-1,1}, | |
978 | ! {0x18e,0x18e,-1,79}, | |
979 | ! {0x18f,0x18f,-1,202}, | |
980 | ! {0x190,0x190,-1,203}, | |
981 | ! {0x191,0x191,-1,1}, | |
982 | ! {0x193,0x193,-1,205}, | |
983 | ! {0x194,0x194,-1,207}, | |
984 | ! {0x196,0x196,-1,211}, | |
985 | ! {0x197,0x197,-1,209}, | |
986 | ! {0x198,0x198,-1,1}, | |
987 | ! {0x19c,0x19c,-1,211}, | |
988 | ! {0x19d,0x19d,-1,213}, | |
989 | ! {0x19f,0x19f,-1,214}, | |
990 | ! {0x1a0,0x1a4,2,1}, | |
991 | ! {0x1a6,0x1a6,-1,218}, | |
992 | ! {0x1a7,0x1a7,-1,1}, | |
993 | ! {0x1a9,0x1a9,-1,218}, | |
994 | ! {0x1ac,0x1ac,-1,1}, | |
995 | ! {0x1ae,0x1ae,-1,218}, | |
996 | ! {0x1af,0x1af,-1,1}, | |
997 | ! {0x1b1,0x1b2,1,217}, | |
998 | ! {0x1b3,0x1b5,2,1}, | |
999 | ! {0x1b7,0x1b7,-1,219}, | |
1000 | ! {0x1b8,0x1bc,4,1}, | |
1001 | ! {0x1c4,0x1c4,-1,2}, | |
1002 | ! {0x1c5,0x1c5,-1,1}, | |
1003 | ! {0x1c7,0x1c7,-1,2}, | |
1004 | ! {0x1c8,0x1c8,-1,1}, | |
1005 | ! {0x1ca,0x1ca,-1,2}, | |
1006 | ! {0x1cb,0x1db,2,1}, | |
1007 | ! {0x1de,0x1ee,2,1}, | |
1008 | ! {0x1f1,0x1f1,-1,2}, | |
1009 | ! {0x1f2,0x1f4,2,1}, | |
1010 | ! {0x1f6,0x1f6,-1,-97}, | |
1011 | ! {0x1f7,0x1f7,-1,-56}, | |
1012 | ! {0x1f8,0x21e,2,1}, | |
1013 | ! {0x220,0x220,-1,-130}, | |
1014 | ! {0x222,0x232,2,1}, | |
1015 | ! {0x23a,0x23a,-1,10795}, | |
1016 | ! {0x23b,0x23b,-1,1}, | |
1017 | ! {0x23d,0x23d,-1,-163}, | |
1018 | ! {0x23e,0x23e,-1,10792}, | |
1019 | ! {0x241,0x241,-1,1}, | |
1020 | ! {0x243,0x243,-1,-195}, | |
1021 | ! {0x244,0x244,-1,69}, | |
1022 | ! {0x245,0x245,-1,71}, | |
1023 | ! {0x246,0x24e,2,1}, | |
1024 | ! {0x345,0x345,-1,116}, | |
1025 | ! {0x370,0x372,2,1}, | |
1026 | ! {0x376,0x376,-1,1}, | |
1027 | ! {0x386,0x386,-1,38}, | |
1028 | ! {0x388,0x38a,1,37}, | |
1029 | ! {0x38c,0x38c,-1,64}, | |
1030 | ! {0x38e,0x38f,1,63}, | |
1031 | ! {0x391,0x3a1,1,32}, | |
1032 | ! {0x3a3,0x3ab,1,32}, | |
1033 | ! {0x3c2,0x3c2,-1,1}, | |
1034 | ! {0x3cf,0x3cf,-1,8}, | |
1035 | ! {0x3d0,0x3d0,-1,-30}, | |
1036 | ! {0x3d1,0x3d1,-1,-25}, | |
1037 | ! {0x3d5,0x3d5,-1,-15}, | |
1038 | ! {0x3d6,0x3d6,-1,-22}, | |
1039 | ! {0x3d8,0x3ee,2,1}, | |
1040 | ! {0x3f0,0x3f0,-1,-54}, | |
1041 | ! {0x3f1,0x3f1,-1,-48}, | |
1042 | ! {0x3f4,0x3f4,-1,-60}, | |
1043 | ! {0x3f5,0x3f5,-1,-64}, | |
1044 | ! {0x3f7,0x3f7,-1,1}, | |
1045 | ! {0x3f9,0x3f9,-1,-7}, | |
1046 | ! {0x3fa,0x3fa,-1,1}, | |
1047 | ! {0x3fd,0x3ff,1,-130}, | |
1048 | ! {0x400,0x40f,1,80}, | |
1049 | ! {0x410,0x42f,1,32}, | |
1050 | ! {0x460,0x480,2,1}, | |
1051 | ! {0x48a,0x4be,2,1}, | |
1052 | ! {0x4c0,0x4c0,-1,15}, | |
1053 | ! {0x4c1,0x4cd,2,1}, | |
1054 | ! {0x4d0,0x524,2,1}, | |
1055 | ! {0x531,0x556,1,48}, | |
1056 | ! {0x10a0,0x10c5,1,7264}, | |
1057 | ! {0x1e00,0x1e94,2,1}, | |
1058 | ! {0x1e9b,0x1e9b,-1,-58}, | |
1059 | ! {0x1e9e,0x1e9e,-1,-7615}, | |
1060 | ! {0x1ea0,0x1efe,2,1}, | |
1061 | ! {0x1f08,0x1f0f,1,-8}, | |
1062 | ! {0x1f18,0x1f1d,1,-8}, | |
1063 | ! {0x1f28,0x1f2f,1,-8}, | |
1064 | ! {0x1f38,0x1f3f,1,-8}, | |
1065 | ! {0x1f48,0x1f4d,1,-8}, | |
1066 | ! {0x1f59,0x1f5f,2,-8}, | |
1067 | ! {0x1f68,0x1f6f,1,-8}, | |
1068 | ! {0x1f88,0x1f8f,1,-8}, | |
1069 | ! {0x1f98,0x1f9f,1,-8}, | |
1070 | ! {0x1fa8,0x1faf,1,-8}, | |
1071 | ! {0x1fb8,0x1fb9,1,-8}, | |
1072 | ! {0x1fba,0x1fbb,1,-74}, | |
1073 | ! {0x1fbc,0x1fbc,-1,-9}, | |
1074 | ! {0x1fbe,0x1fbe,-1,-7173}, | |
1075 | ! {0x1fc8,0x1fcb,1,-86}, | |
1076 | ! {0x1fcc,0x1fcc,-1,-9}, | |
1077 | ! {0x1fd8,0x1fd9,1,-8}, | |
1078 | ! {0x1fda,0x1fdb,1,-100}, | |
1079 | ! {0x1fe8,0x1fe9,1,-8}, | |
1080 | ! {0x1fea,0x1feb,1,-112}, | |
1081 | ! {0x1fec,0x1fec,-1,-7}, | |
1082 | ! {0x1ff8,0x1ff9,1,-128}, | |
1083 | ! {0x1ffa,0x1ffb,1,-126}, | |
1084 | ! {0x1ffc,0x1ffc,-1,-9}, | |
1085 | ! {0x2126,0x2126,-1,-7517}, | |
1086 | ! {0x212a,0x212a,-1,-8383}, | |
1087 | ! {0x212b,0x212b,-1,-8262}, | |
1088 | ! {0x2132,0x2132,-1,28}, | |
1089 | ! {0x2160,0x216f,1,16}, | |
1090 | ! {0x2183,0x2183,-1,1}, | |
1091 | ! {0x24b6,0x24cf,1,26}, | |
1092 | ! {0x2c00,0x2c2e,1,48}, | |
1093 | ! {0x2c60,0x2c60,-1,1}, | |
1094 | ! {0x2c62,0x2c62,-1,-10743}, | |
1095 | ! {0x2c63,0x2c63,-1,-3814}, | |
1096 | ! {0x2c64,0x2c64,-1,-10727}, | |
1097 | ! {0x2c67,0x2c6b,2,1}, | |
1098 | ! {0x2c6d,0x2c6d,-1,-10780}, | |
1099 | ! {0x2c6e,0x2c6e,-1,-10749}, | |
1100 | ! {0x2c6f,0x2c6f,-1,-10783}, | |
1101 | ! {0x2c70,0x2c70,-1,-10782}, | |
1102 | ! {0x2c72,0x2c75,3,1}, | |
1103 | ! {0x2c7e,0x2c7f,1,-10815}, | |
1104 | ! {0x2c80,0x2ce2,2,1}, | |
1105 | ! {0x2ceb,0x2ced,2,1}, | |
1106 | ! {0xa640,0xa65e,2,1}, | |
1107 | ! {0xa662,0xa66c,2,1}, | |
1108 | ! {0xa680,0xa696,2,1}, | |
1109 | ! {0xa722,0xa72e,2,1}, | |
1110 | ! {0xa732,0xa76e,2,1}, | |
1111 | ! {0xa779,0xa77b,2,1}, | |
1112 | ! {0xa77d,0xa77d,-1,-35332}, | |
1113 | ! {0xa77e,0xa786,2,1}, | |
1114 | ! {0xa78b,0xa78b,-1,1}, | |
1115 | ! {0xff21,0xff3a,1,32}, | |
1116 | {0x10400,0x10427,1,40} | |
1117 | }; | |
1118 | ||
1119 | *************** | |
1120 | *** 2253,2337 **** | |
1121 | return utf_convert(a, foldCase, sizeof(foldCase)); | |
1122 | } | |
1123 | ||
1124 | - /* | |
1125 | - * The following tables are built by upperLowerExtract.pl < UnicodeData.txt . | |
1126 | - * They must be in numeric order, because we use binary search on them. | |
1127 | - * An entry such as {0x41,0x5a,1,32} means that UCS-4 characters in the range | |
1128 | - * from 0x41 to 0x5a inclusive, stepping by 1, are switched to lower (for | |
1129 | - * example) by adding 32. | |
1130 | - */ | |
1131 | static convertStruct toLower[] = | |
1132 | { | |
1133 | ! {0x41,0x5a,1,32}, {0xc0,0xd6,1,32}, {0xd8,0xde,1,32}, | |
1134 | ! {0x100,0x12e,2,1}, {0x130,0x130,-1,-199}, {0x132,0x136,2,1}, | |
1135 | ! {0x139,0x147,2,1}, {0x14a,0x176,2,1}, {0x178,0x178,-1,-121}, | |
1136 | ! {0x179,0x17d,2,1}, {0x181,0x181,-1,210}, {0x182,0x184,2,1}, | |
1137 | ! {0x186,0x186,-1,206}, {0x187,0x187,-1,1}, {0x189,0x18a,1,205}, | |
1138 | ! {0x18b,0x18b,-1,1}, {0x18e,0x18e,-1,79}, {0x18f,0x18f,-1,202}, | |
1139 | ! {0x190,0x190,-1,203}, {0x191,0x191,-1,1}, {0x193,0x193,-1,205}, | |
1140 | ! {0x194,0x194,-1,207}, {0x196,0x196,-1,211}, {0x197,0x197,-1,209}, | |
1141 | ! {0x198,0x198,-1,1}, {0x19c,0x19c,-1,211}, {0x19d,0x19d,-1,213}, | |
1142 | ! {0x19f,0x19f,-1,214}, {0x1a0,0x1a4,2,1}, {0x1a6,0x1a6,-1,218}, | |
1143 | ! {0x1a7,0x1a7,-1,1}, {0x1a9,0x1a9,-1,218}, {0x1ac,0x1ac,-1,1}, | |
1144 | ! {0x1ae,0x1ae,-1,218}, {0x1af,0x1af,-1,1}, {0x1b1,0x1b2,1,217}, | |
1145 | ! {0x1b3,0x1b5,2,1}, {0x1b7,0x1b7,-1,219}, {0x1b8,0x1bc,4,1}, | |
1146 | ! {0x1c4,0x1ca,3,2}, {0x1cd,0x1db,2,1}, {0x1de,0x1ee,2,1}, | |
1147 | ! {0x1f1,0x1f1,-1,2}, {0x1f4,0x1f4,-1,1}, {0x1f6,0x1f6,-1,-97}, | |
1148 | ! {0x1f7,0x1f7,-1,-56}, {0x1f8,0x21e,2,1}, {0x220,0x220,-1,-130}, | |
1149 | ! {0x222,0x232,2,1}, {0x386,0x386,-1,38}, {0x388,0x38a,1,37}, | |
1150 | ! {0x38c,0x38c,-1,64}, {0x38e,0x38f,1,63}, {0x391,0x3a1,1,32}, | |
1151 | ! {0x3a3,0x3ab,1,32}, {0x3d8,0x3ee,2,1}, {0x3f4,0x3f4,-1,-60}, | |
1152 | ! {0x3f7,0x3f7,-1,1}, {0x3f9,0x3f9,-1,-7}, {0x3fa,0x3fa,-1,1}, | |
1153 | ! {0x400,0x40f,1,80}, {0x410,0x42f,1,32}, {0x460,0x480,2,1}, | |
1154 | ! {0x48a,0x4be,2,1}, {0x4c1,0x4cd,2,1}, {0x4d0,0x4f4,2,1}, | |
1155 | ! {0x4f8,0x500,8,1}, {0x502,0x50e,2,1}, {0x531,0x556,1,48}, | |
1156 | ! {0x1e00,0x1e94,2,1}, {0x1ea0,0x1ef8,2,1}, {0x1f08,0x1f0f,1,-8}, | |
1157 | ! {0x1f18,0x1f1d,1,-8}, {0x1f28,0x1f2f,1,-8}, {0x1f38,0x1f3f,1,-8}, | |
1158 | ! {0x1f48,0x1f4d,1,-8}, {0x1f59,0x1f5f,2,-8}, {0x1f68,0x1f6f,1,-8}, | |
1159 | ! {0x1fb8,0x1fb9,1,-8}, {0x1fba,0x1fbb,1,-74}, {0x1fc8,0x1fcb,1,-86}, | |
1160 | ! {0x1fd8,0x1fd9,1,-8}, {0x1fda,0x1fdb,1,-100}, {0x1fe8,0x1fe9,1,-8}, | |
1161 | ! {0x1fea,0x1feb,1,-112}, {0x1fec,0x1fec,-1,-7}, {0x1ff8,0x1ff9,1,-128}, | |
1162 | ! {0x1ffa,0x1ffb,1,-126}, {0x2126,0x2126,-1,-7517}, {0x212a,0x212a,-1,-8383}, | |
1163 | ! {0x212b,0x212b,-1,-8262}, {0xff21,0xff3a,1,32}, {0x10400,0x10427,1,40} | |
1164 | }; | |
1165 | ||
1166 | static convertStruct toUpper[] = | |
1167 | { | |
1168 | ! {0x61,0x7a,1,-32}, {0xb5,0xb5,-1,743}, {0xe0,0xf6,1,-32}, | |
1169 | ! {0xf8,0xfe,1,-32}, {0xff,0xff,-1,121}, {0x101,0x12f,2,-1}, | |
1170 | ! {0x131,0x131,-1,-232}, {0x133,0x137,2,-1}, {0x13a,0x148,2,-1}, | |
1171 | ! {0x14b,0x177,2,-1}, {0x17a,0x17e,2,-1}, {0x17f,0x17f,-1,-300}, | |
1172 | ! {0x183,0x185,2,-1}, {0x188,0x18c,4,-1}, {0x192,0x192,-1,-1}, | |
1173 | ! {0x195,0x195,-1,97}, {0x199,0x199,-1,-1}, {0x19e,0x19e,-1,130}, | |
1174 | ! {0x1a1,0x1a5,2,-1}, {0x1a8,0x1ad,5,-1}, {0x1b0,0x1b4,4,-1}, | |
1175 | ! {0x1b6,0x1b9,3,-1}, {0x1bd,0x1bd,-1,-1}, {0x1bf,0x1bf,-1,56}, | |
1176 | ! {0x1c5,0x1c6,1,-1}, {0x1c8,0x1c9,1,-1}, {0x1cb,0x1cc,1,-1}, | |
1177 | ! {0x1ce,0x1dc,2,-1}, {0x1dd,0x1dd,-1,-79}, {0x1df,0x1ef,2,-1}, | |
1178 | ! {0x1f2,0x1f3,1,-1}, {0x1f5,0x1f9,4,-1}, {0x1fb,0x21f,2,-1}, | |
1179 | ! {0x223,0x233,2,-1}, {0x253,0x253,-1,-210}, {0x254,0x254,-1,-206}, | |
1180 | ! {0x256,0x257,1,-205}, {0x259,0x259,-1,-202}, {0x25b,0x25b,-1,-203}, | |
1181 | ! {0x260,0x260,-1,-205}, {0x263,0x263,-1,-207}, {0x268,0x268,-1,-209}, | |
1182 | ! {0x269,0x26f,6,-211}, {0x272,0x272,-1,-213}, {0x275,0x275,-1,-214}, | |
1183 | ! {0x280,0x283,3,-218}, {0x288,0x288,-1,-218}, {0x28a,0x28b,1,-217}, | |
1184 | ! {0x292,0x292,-1,-219}, {0x3ac,0x3ac,-1,-38}, {0x3ad,0x3af,1,-37}, | |
1185 | ! {0x3b1,0x3c1,1,-32}, {0x3c2,0x3c2,-1,-31}, {0x3c3,0x3cb,1,-32}, | |
1186 | ! {0x3cc,0x3cc,-1,-64}, {0x3cd,0x3ce,1,-63}, {0x3d0,0x3d0,-1,-62}, | |
1187 | ! {0x3d1,0x3d1,-1,-57}, {0x3d5,0x3d5,-1,-47}, {0x3d6,0x3d6,-1,-54}, | |
1188 | ! {0x3d9,0x3ef,2,-1}, {0x3f0,0x3f0,-1,-86}, {0x3f1,0x3f1,-1,-80}, | |
1189 | ! {0x3f2,0x3f2,-1,7}, {0x3f5,0x3f5,-1,-96}, {0x3f8,0x3fb,3,-1}, | |
1190 | ! {0x430,0x44f,1,-32}, {0x450,0x45f,1,-80}, {0x461,0x481,2,-1}, | |
1191 | ! {0x48b,0x4bf,2,-1}, {0x4c2,0x4ce,2,-1}, {0x4d1,0x4f5,2,-1}, | |
1192 | ! {0x4f9,0x501,8,-1}, {0x503,0x50f,2,-1}, {0x561,0x586,1,-48}, | |
1193 | ! {0x1e01,0x1e95,2,-1}, {0x1e9b,0x1e9b,-1,-59}, {0x1ea1,0x1ef9,2,-1}, | |
1194 | ! {0x1f00,0x1f07,1,8}, {0x1f10,0x1f15,1,8}, {0x1f20,0x1f27,1,8}, | |
1195 | ! {0x1f30,0x1f37,1,8}, {0x1f40,0x1f45,1,8}, {0x1f51,0x1f57,2,8}, | |
1196 | ! {0x1f60,0x1f67,1,8}, {0x1f70,0x1f71,1,74}, {0x1f72,0x1f75,1,86}, | |
1197 | ! {0x1f76,0x1f77,1,100}, {0x1f78,0x1f79,1,128}, {0x1f7a,0x1f7b,1,112}, | |
1198 | ! {0x1f7c,0x1f7d,1,126}, {0x1f80,0x1f87,1,8}, {0x1f90,0x1f97,1,8}, | |
1199 | ! {0x1fa0,0x1fa7,1,8}, {0x1fb0,0x1fb1,1,8}, {0x1fb3,0x1fb3,-1,9}, | |
1200 | ! {0x1fbe,0x1fbe,-1,-7205}, {0x1fc3,0x1fc3,-1,9}, {0x1fd0,0x1fd1,1,8}, | |
1201 | ! {0x1fe0,0x1fe1,1,8}, {0x1fe5,0x1fe5,-1,7}, {0x1ff3,0x1ff3,-1,9}, | |
1202 | ! {0xff41,0xff5a,1,-32}, {0x10428,0x1044f,1,-40} | |
1203 | }; | |
1204 | ||
1205 | /* | |
1206 | --- 2663,2968 ---- | |
1207 | return utf_convert(a, foldCase, sizeof(foldCase)); | |
1208 | } | |
1209 | ||
1210 | static convertStruct toLower[] = | |
1211 | { | |
1212 | ! {0x41,0x5a,1,32}, | |
1213 | ! {0xc0,0xd6,1,32}, | |
1214 | ! {0xd8,0xde,1,32}, | |
1215 | ! {0x100,0x12e,2,1}, | |
1216 | ! {0x130,0x130,-1,-199}, | |
1217 | ! {0x132,0x136,2,1}, | |
1218 | ! {0x139,0x147,2,1}, | |
1219 | ! {0x14a,0x176,2,1}, | |
1220 | ! {0x178,0x178,-1,-121}, | |
1221 | ! {0x179,0x17d,2,1}, | |
1222 | ! {0x181,0x181,-1,210}, | |
1223 | ! {0x182,0x184,2,1}, | |
1224 | ! {0x186,0x186,-1,206}, | |
1225 | ! {0x187,0x187,-1,1}, | |
1226 | ! {0x189,0x18a,1,205}, | |
1227 | ! {0x18b,0x18b,-1,1}, | |
1228 | ! {0x18e,0x18e,-1,79}, | |
1229 | ! {0x18f,0x18f,-1,202}, | |
1230 | ! {0x190,0x190,-1,203}, | |
1231 | ! {0x191,0x191,-1,1}, | |
1232 | ! {0x193,0x193,-1,205}, | |
1233 | ! {0x194,0x194,-1,207}, | |
1234 | ! {0x196,0x196,-1,211}, | |
1235 | ! {0x197,0x197,-1,209}, | |
1236 | ! {0x198,0x198,-1,1}, | |
1237 | ! {0x19c,0x19c,-1,211}, | |
1238 | ! {0x19d,0x19d,-1,213}, | |
1239 | ! {0x19f,0x19f,-1,214}, | |
1240 | ! {0x1a0,0x1a4,2,1}, | |
1241 | ! {0x1a6,0x1a6,-1,218}, | |
1242 | ! {0x1a7,0x1a7,-1,1}, | |
1243 | ! {0x1a9,0x1a9,-1,218}, | |
1244 | ! {0x1ac,0x1ac,-1,1}, | |
1245 | ! {0x1ae,0x1ae,-1,218}, | |
1246 | ! {0x1af,0x1af,-1,1}, | |
1247 | ! {0x1b1,0x1b2,1,217}, | |
1248 | ! {0x1b3,0x1b5,2,1}, | |
1249 | ! {0x1b7,0x1b7,-1,219}, | |
1250 | ! {0x1b8,0x1bc,4,1}, | |
1251 | ! {0x1c4,0x1c4,-1,2}, | |
1252 | ! {0x1c5,0x1c5,-1,1}, | |
1253 | ! {0x1c7,0x1c7,-1,2}, | |
1254 | ! {0x1c8,0x1c8,-1,1}, | |
1255 | ! {0x1ca,0x1ca,-1,2}, | |
1256 | ! {0x1cb,0x1db,2,1}, | |
1257 | ! {0x1de,0x1ee,2,1}, | |
1258 | ! {0x1f1,0x1f1,-1,2}, | |
1259 | ! {0x1f2,0x1f4,2,1}, | |
1260 | ! {0x1f6,0x1f6,-1,-97}, | |
1261 | ! {0x1f7,0x1f7,-1,-56}, | |
1262 | ! {0x1f8,0x21e,2,1}, | |
1263 | ! {0x220,0x220,-1,-130}, | |
1264 | ! {0x222,0x232,2,1}, | |
1265 | ! {0x23a,0x23a,-1,10795}, | |
1266 | ! {0x23b,0x23b,-1,1}, | |
1267 | ! {0x23d,0x23d,-1,-163}, | |
1268 | ! {0x23e,0x23e,-1,10792}, | |
1269 | ! {0x241,0x241,-1,1}, | |
1270 | ! {0x243,0x243,-1,-195}, | |
1271 | ! {0x244,0x244,-1,69}, | |
1272 | ! {0x245,0x245,-1,71}, | |
1273 | ! {0x246,0x24e,2,1}, | |
1274 | ! {0x370,0x372,2,1}, | |
1275 | ! {0x376,0x376,-1,1}, | |
1276 | ! {0x386,0x386,-1,38}, | |
1277 | ! {0x388,0x38a,1,37}, | |
1278 | ! {0x38c,0x38c,-1,64}, | |
1279 | ! {0x38e,0x38f,1,63}, | |
1280 | ! {0x391,0x3a1,1,32}, | |
1281 | ! {0x3a3,0x3ab,1,32}, | |
1282 | ! {0x3cf,0x3cf,-1,8}, | |
1283 | ! {0x3d8,0x3ee,2,1}, | |
1284 | ! {0x3f4,0x3f4,-1,-60}, | |
1285 | ! {0x3f7,0x3f7,-1,1}, | |
1286 | ! {0x3f9,0x3f9,-1,-7}, | |
1287 | ! {0x3fa,0x3fa,-1,1}, | |
1288 | ! {0x3fd,0x3ff,1,-130}, | |
1289 | ! {0x400,0x40f,1,80}, | |
1290 | ! {0x410,0x42f,1,32}, | |
1291 | ! {0x460,0x480,2,1}, | |
1292 | ! {0x48a,0x4be,2,1}, | |
1293 | ! {0x4c0,0x4c0,-1,15}, | |
1294 | ! {0x4c1,0x4cd,2,1}, | |
1295 | ! {0x4d0,0x524,2,1}, | |
1296 | ! {0x531,0x556,1,48}, | |
1297 | ! {0x10a0,0x10c5,1,7264}, | |
1298 | ! {0x1e00,0x1e94,2,1}, | |
1299 | ! {0x1e9e,0x1e9e,-1,-7615}, | |
1300 | ! {0x1ea0,0x1efe,2,1}, | |
1301 | ! {0x1f08,0x1f0f,1,-8}, | |
1302 | ! {0x1f18,0x1f1d,1,-8}, | |
1303 | ! {0x1f28,0x1f2f,1,-8}, | |
1304 | ! {0x1f38,0x1f3f,1,-8}, | |
1305 | ! {0x1f48,0x1f4d,1,-8}, | |
1306 | ! {0x1f59,0x1f5f,2,-8}, | |
1307 | ! {0x1f68,0x1f6f,1,-8}, | |
1308 | ! {0x1f88,0x1f8f,1,-8}, | |
1309 | ! {0x1f98,0x1f9f,1,-8}, | |
1310 | ! {0x1fa8,0x1faf,1,-8}, | |
1311 | ! {0x1fb8,0x1fb9,1,-8}, | |
1312 | ! {0x1fba,0x1fbb,1,-74}, | |
1313 | ! {0x1fbc,0x1fbc,-1,-9}, | |
1314 | ! {0x1fc8,0x1fcb,1,-86}, | |
1315 | ! {0x1fcc,0x1fcc,-1,-9}, | |
1316 | ! {0x1fd8,0x1fd9,1,-8}, | |
1317 | ! {0x1fda,0x1fdb,1,-100}, | |
1318 | ! {0x1fe8,0x1fe9,1,-8}, | |
1319 | ! {0x1fea,0x1feb,1,-112}, | |
1320 | ! {0x1fec,0x1fec,-1,-7}, | |
1321 | ! {0x1ff8,0x1ff9,1,-128}, | |
1322 | ! {0x1ffa,0x1ffb,1,-126}, | |
1323 | ! {0x1ffc,0x1ffc,-1,-9}, | |
1324 | ! {0x2126,0x2126,-1,-7517}, | |
1325 | ! {0x212a,0x212a,-1,-8383}, | |
1326 | ! {0x212b,0x212b,-1,-8262}, | |
1327 | ! {0x2132,0x2132,-1,28}, | |
1328 | ! {0x2160,0x216f,1,16}, | |
1329 | ! {0x2183,0x2183,-1,1}, | |
1330 | ! {0x24b6,0x24cf,1,26}, | |
1331 | ! {0x2c00,0x2c2e,1,48}, | |
1332 | ! {0x2c60,0x2c60,-1,1}, | |
1333 | ! {0x2c62,0x2c62,-1,-10743}, | |
1334 | ! {0x2c63,0x2c63,-1,-3814}, | |
1335 | ! {0x2c64,0x2c64,-1,-10727}, | |
1336 | ! {0x2c67,0x2c6b,2,1}, | |
1337 | ! {0x2c6d,0x2c6d,-1,-10780}, | |
1338 | ! {0x2c6e,0x2c6e,-1,-10749}, | |
1339 | ! {0x2c6f,0x2c6f,-1,-10783}, | |
1340 | ! {0x2c70,0x2c70,-1,-10782}, | |
1341 | ! {0x2c72,0x2c75,3,1}, | |
1342 | ! {0x2c7e,0x2c7f,1,-10815}, | |
1343 | ! {0x2c80,0x2ce2,2,1}, | |
1344 | ! {0x2ceb,0x2ced,2,1}, | |
1345 | ! {0xa640,0xa65e,2,1}, | |
1346 | ! {0xa662,0xa66c,2,1}, | |
1347 | ! {0xa680,0xa696,2,1}, | |
1348 | ! {0xa722,0xa72e,2,1}, | |
1349 | ! {0xa732,0xa76e,2,1}, | |
1350 | ! {0xa779,0xa77b,2,1}, | |
1351 | ! {0xa77d,0xa77d,-1,-35332}, | |
1352 | ! {0xa77e,0xa786,2,1}, | |
1353 | ! {0xa78b,0xa78b,-1,1}, | |
1354 | ! {0xff21,0xff3a,1,32}, | |
1355 | ! {0x10400,0x10427,1,40} | |
1356 | }; | |
1357 | ||
1358 | static convertStruct toUpper[] = | |
1359 | { | |
1360 | ! {0x61,0x7a,1,-32}, | |
1361 | ! {0xb5,0xb5,-1,743}, | |
1362 | ! {0xe0,0xf6,1,-32}, | |
1363 | ! {0xf8,0xfe,1,-32}, | |
1364 | ! {0xff,0xff,-1,121}, | |
1365 | ! {0x101,0x12f,2,-1}, | |
1366 | ! {0x131,0x131,-1,-232}, | |
1367 | ! {0x133,0x137,2,-1}, | |
1368 | ! {0x13a,0x148,2,-1}, | |
1369 | ! {0x14b,0x177,2,-1}, | |
1370 | ! {0x17a,0x17e,2,-1}, | |
1371 | ! {0x17f,0x17f,-1,-300}, | |
1372 | ! {0x180,0x180,-1,195}, | |
1373 | ! {0x183,0x185,2,-1}, | |
1374 | ! {0x188,0x18c,4,-1}, | |
1375 | ! {0x192,0x192,-1,-1}, | |
1376 | ! {0x195,0x195,-1,97}, | |
1377 | ! {0x199,0x199,-1,-1}, | |
1378 | ! {0x19a,0x19a,-1,163}, | |
1379 | ! {0x19e,0x19e,-1,130}, | |
1380 | ! {0x1a1,0x1a5,2,-1}, | |
1381 | ! {0x1a8,0x1ad,5,-1}, | |
1382 | ! {0x1b0,0x1b4,4,-1}, | |
1383 | ! {0x1b6,0x1b9,3,-1}, | |
1384 | ! {0x1bd,0x1bd,-1,-1}, | |
1385 | ! {0x1bf,0x1bf,-1,56}, | |
1386 | ! {0x1c5,0x1c5,-1,-1}, | |
1387 | ! {0x1c6,0x1c6,-1,-2}, | |
1388 | ! {0x1c8,0x1c8,-1,-1}, | |
1389 | ! {0x1c9,0x1c9,-1,-2}, | |
1390 | ! {0x1cb,0x1cb,-1,-1}, | |
1391 | ! {0x1cc,0x1cc,-1,-2}, | |
1392 | ! {0x1ce,0x1dc,2,-1}, | |
1393 | ! {0x1dd,0x1dd,-1,-79}, | |
1394 | ! {0x1df,0x1ef,2,-1}, | |
1395 | ! {0x1f2,0x1f2,-1,-1}, | |
1396 | ! {0x1f3,0x1f3,-1,-2}, | |
1397 | ! {0x1f5,0x1f9,4,-1}, | |
1398 | ! {0x1fb,0x21f,2,-1}, | |
1399 | ! {0x223,0x233,2,-1}, | |
1400 | ! {0x23c,0x23c,-1,-1}, | |
1401 | ! {0x23f,0x240,1,10815}, | |
1402 | ! {0x242,0x247,5,-1}, | |
1403 | ! {0x249,0x24f,2,-1}, | |
1404 | ! {0x250,0x250,-1,10783}, | |
1405 | ! {0x251,0x251,-1,10780}, | |
1406 | ! {0x252,0x252,-1,10782}, | |
1407 | ! {0x253,0x253,-1,-210}, | |
1408 | ! {0x254,0x254,-1,-206}, | |
1409 | ! {0x256,0x257,1,-205}, | |
1410 | ! {0x259,0x259,-1,-202}, | |
1411 | ! {0x25b,0x25b,-1,-203}, | |
1412 | ! {0x260,0x260,-1,-205}, | |
1413 | ! {0x263,0x263,-1,-207}, | |
1414 | ! {0x268,0x268,-1,-209}, | |
1415 | ! {0x269,0x269,-1,-211}, | |
1416 | ! {0x26b,0x26b,-1,10743}, | |
1417 | ! {0x26f,0x26f,-1,-211}, | |
1418 | ! {0x271,0x271,-1,10749}, | |
1419 | ! {0x272,0x272,-1,-213}, | |
1420 | ! {0x275,0x275,-1,-214}, | |
1421 | ! {0x27d,0x27d,-1,10727}, | |
1422 | ! {0x280,0x283,3,-218}, | |
1423 | ! {0x288,0x288,-1,-218}, | |
1424 | ! {0x289,0x289,-1,-69}, | |
1425 | ! {0x28a,0x28b,1,-217}, | |
1426 | ! {0x28c,0x28c,-1,-71}, | |
1427 | ! {0x292,0x292,-1,-219}, | |
1428 | ! {0x345,0x345,-1,84}, | |
1429 | ! {0x371,0x373,2,-1}, | |
1430 | ! {0x377,0x377,-1,-1}, | |
1431 | ! {0x37b,0x37d,1,130}, | |
1432 | ! {0x3ac,0x3ac,-1,-38}, | |
1433 | ! {0x3ad,0x3af,1,-37}, | |
1434 | ! {0x3b1,0x3c1,1,-32}, | |
1435 | ! {0x3c2,0x3c2,-1,-31}, | |
1436 | ! {0x3c3,0x3cb,1,-32}, | |
1437 | ! {0x3cc,0x3cc,-1,-64}, | |
1438 | ! {0x3cd,0x3ce,1,-63}, | |
1439 | ! {0x3d0,0x3d0,-1,-62}, | |
1440 | ! {0x3d1,0x3d1,-1,-57}, | |
1441 | ! {0x3d5,0x3d5,-1,-47}, | |
1442 | ! {0x3d6,0x3d6,-1,-54}, | |
1443 | ! {0x3d7,0x3d7,-1,-8}, | |
1444 | ! {0x3d9,0x3ef,2,-1}, | |
1445 | ! {0x3f0,0x3f0,-1,-86}, | |
1446 | ! {0x3f1,0x3f1,-1,-80}, | |
1447 | ! {0x3f2,0x3f2,-1,7}, | |
1448 | ! {0x3f5,0x3f5,-1,-96}, | |
1449 | ! {0x3f8,0x3fb,3,-1}, | |
1450 | ! {0x430,0x44f,1,-32}, | |
1451 | ! {0x450,0x45f,1,-80}, | |
1452 | ! {0x461,0x481,2,-1}, | |
1453 | ! {0x48b,0x4bf,2,-1}, | |
1454 | ! {0x4c2,0x4ce,2,-1}, | |
1455 | ! {0x4cf,0x4cf,-1,-15}, | |
1456 | ! {0x4d1,0x525,2,-1}, | |
1457 | ! {0x561,0x586,1,-48}, | |
1458 | ! {0x1d79,0x1d79,-1,35332}, | |
1459 | ! {0x1d7d,0x1d7d,-1,3814}, | |
1460 | ! {0x1e01,0x1e95,2,-1}, | |
1461 | ! {0x1e9b,0x1e9b,-1,-59}, | |
1462 | ! {0x1ea1,0x1eff,2,-1}, | |
1463 | ! {0x1f00,0x1f07,1,8}, | |
1464 | ! {0x1f10,0x1f15,1,8}, | |
1465 | ! {0x1f20,0x1f27,1,8}, | |
1466 | ! {0x1f30,0x1f37,1,8}, | |
1467 | ! {0x1f40,0x1f45,1,8}, | |
1468 | ! {0x1f51,0x1f57,2,8}, | |
1469 | ! {0x1f60,0x1f67,1,8}, | |
1470 | ! {0x1f70,0x1f71,1,74}, | |
1471 | ! {0x1f72,0x1f75,1,86}, | |
1472 | ! {0x1f76,0x1f77,1,100}, | |
1473 | ! {0x1f78,0x1f79,1,128}, | |
1474 | ! {0x1f7a,0x1f7b,1,112}, | |
1475 | ! {0x1f7c,0x1f7d,1,126}, | |
1476 | ! {0x1f80,0x1f87,1,8}, | |
1477 | ! {0x1f90,0x1f97,1,8}, | |
1478 | ! {0x1fa0,0x1fa7,1,8}, | |
1479 | ! {0x1fb0,0x1fb1,1,8}, | |
1480 | ! {0x1fb3,0x1fb3,-1,9}, | |
1481 | ! {0x1fbe,0x1fbe,-1,-7205}, | |
1482 | ! {0x1fc3,0x1fc3,-1,9}, | |
1483 | ! {0x1fd0,0x1fd1,1,8}, | |
1484 | ! {0x1fe0,0x1fe1,1,8}, | |
1485 | ! {0x1fe5,0x1fe5,-1,7}, | |
1486 | ! {0x1ff3,0x1ff3,-1,9}, | |
1487 | ! {0x214e,0x214e,-1,-28}, | |
1488 | ! {0x2170,0x217f,1,-16}, | |
1489 | ! {0x2184,0x2184,-1,-1}, | |
1490 | ! {0x24d0,0x24e9,1,-26}, | |
1491 | ! {0x2c30,0x2c5e,1,-48}, | |
1492 | ! {0x2c61,0x2c61,-1,-1}, | |
1493 | ! {0x2c65,0x2c65,-1,-10795}, | |
1494 | ! {0x2c66,0x2c66,-1,-10792}, | |
1495 | ! {0x2c68,0x2c6c,2,-1}, | |
1496 | ! {0x2c73,0x2c76,3,-1}, | |
1497 | ! {0x2c81,0x2ce3,2,-1}, | |
1498 | ! {0x2cec,0x2cee,2,-1}, | |
1499 | ! {0x2d00,0x2d25,1,-7264}, | |
1500 | ! {0xa641,0xa65f,2,-1}, | |
1501 | ! {0xa663,0xa66d,2,-1}, | |
1502 | ! {0xa681,0xa697,2,-1}, | |
1503 | ! {0xa723,0xa72f,2,-1}, | |
1504 | ! {0xa733,0xa76f,2,-1}, | |
1505 | ! {0xa77a,0xa77c,2,-1}, | |
1506 | ! {0xa77f,0xa787,2,-1}, | |
1507 | ! {0xa78c,0xa78c,-1,-1}, | |
1508 | ! {0xff41,0xff5a,1,-32}, | |
1509 | ! {0x10428,0x1044f,1,-40} | |
1510 | }; | |
1511 | ||
1512 | /* | |
1513 | *** ../vim-7.2.329/src/version.c 2010-01-12 15:42:03.000000000 +0100 | |
1514 | --- src/version.c 2010-01-12 18:16:55.000000000 +0100 | |
1515 | *************** | |
1516 | *** 683,684 **** | |
1517 | --- 683,686 ---- | |
1518 | { /* Add new patch number below this line */ | |
1519 | + /**/ | |
1520 | + 330, | |
1521 | /**/ | |
1522 | ||
1523 | -- | |
1524 | From "know your smileys": | |
1525 | <|-) Chinese | |
1526 | <|-( Chinese and doesn't like these kind of jokes | |
1527 | ||
1528 | /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ | |
1529 | /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ | |
1530 | \\\ download, build and distribute -- http://www.A-A-P.org /// | |
1531 | \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |