pulldown_cmark/puncttable.rs
1// Copyright 2015 Google Inc. All rights reserved.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a copy
4// of this software and associated documentation files (the "Software"), to deal
5// in the Software without restriction, including without limitation the rights
6// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7// copies of the Software, and to permit persons to whom the Software is
8// furnished to do so, subject to the following conditions:
9//
10// The above copyright notice and this permission notice shall be included in
11// all copies or substantial portions of the Software.
12//
13// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19// THE SOFTWARE.
20
21//! CommonMark punctuation set based on spec and Unicode properties.
22
23// Autogenerated by mk_puncttable.py
24
25const PUNCT_MASKS_ASCII: [u16; 8] = [
26 0x0000, // U+0000...U+000F
27 0x0000, // U+0010...U+001F
28 0xfffe, // U+0020...U+002F
29 0xfc00, // U+0030...U+003F
30 0x0001, // U+0040...U+004F
31 0xf800, // U+0050...U+005F
32 0x0001, // U+0060...U+006F
33 0x7800, // U+0070...U+007F
34];
35
36const PUNCT_TAB: [u16; 727] = [
37 10, // U+00A0...U+00AF
38 11, // U+00B0...U+00BF
39 13, // U+00D0...U+00DF
40 15, // U+00F0...U+00FF
41 44, // U+02C0...U+02CF
42 45, // U+02D0...U+02DF
43 46, // U+02E0...U+02EF
44 47, // U+02F0...U+02FF
45 55, // U+0370...U+037F
46 56, // U+0380...U+038F
47 63, // U+03F0...U+03FF
48 72, // U+0480...U+048F
49 85, // U+0550...U+055F
50 88, // U+0580...U+058F
51 91, // U+05B0...U+05BF
52 92, // U+05C0...U+05CF
53 95, // U+05F0...U+05FF
54 96, // U+0600...U+060F
55 97, // U+0610...U+061F
56 102, // U+0660...U+066F
57 109, // U+06D0...U+06DF
58 110, // U+06E0...U+06EF
59 111, // U+06F0...U+06FF
60 112, // U+0700...U+070F
61 127, // U+07F0...U+07FF
62 131, // U+0830...U+083F
63 133, // U+0850...U+085F
64 136, // U+0880...U+088F
65 150, // U+0960...U+096F
66 151, // U+0970...U+097F
67 159, // U+09F0...U+09FF
68 167, // U+0A70...U+0A7F
69 175, // U+0AF0...U+0AFF
70 183, // U+0B70...U+0B7F
71 191, // U+0BF0...U+0BFF
72 199, // U+0C70...U+0C7F
73 200, // U+0C80...U+0C8F
74 212, // U+0D40...U+0D4F
75 215, // U+0D70...U+0D7F
76 223, // U+0DF0...U+0DFF
77 227, // U+0E30...U+0E3F
78 228, // U+0E40...U+0E4F
79 229, // U+0E50...U+0E5F
80 240, // U+0F00...U+0F0F
81 241, // U+0F10...U+0F1F
82 243, // U+0F30...U+0F3F
83 248, // U+0F80...U+0F8F
84 251, // U+0FB0...U+0FBF
85 252, // U+0FC0...U+0FCF
86 253, // U+0FD0...U+0FDF
87 260, // U+1040...U+104F
88 265, // U+1090...U+109F
89 271, // U+10F0...U+10FF
90 310, // U+1360...U+136F
91 313, // U+1390...U+139F
92 320, // U+1400...U+140F
93 358, // U+1660...U+166F
94 361, // U+1690...U+169F
95 366, // U+16E0...U+16EF
96 371, // U+1730...U+173F
97 381, // U+17D0...U+17DF
98 384, // U+1800...U+180F
99 404, // U+1940...U+194F
100 413, // U+19D0...U+19DF
101 414, // U+19E0...U+19EF
102 415, // U+19F0...U+19FF
103 417, // U+1A10...U+1A1F
104 426, // U+1AA0...U+1AAF
105 437, // U+1B50...U+1B5F
106 438, // U+1B60...U+1B6F
107 439, // U+1B70...U+1B7F
108 447, // U+1BF0...U+1BFF
109 451, // U+1C30...U+1C3F
110 455, // U+1C70...U+1C7F
111 460, // U+1CC0...U+1CCF
112 461, // U+1CD0...U+1CDF
113 507, // U+1FB0...U+1FBF
114 508, // U+1FC0...U+1FCF
115 509, // U+1FD0...U+1FDF
116 510, // U+1FE0...U+1FEF
117 511, // U+1FF0...U+1FFF
118 513, // U+2010...U+201F
119 514, // U+2020...U+202F
120 515, // U+2030...U+203F
121 516, // U+2040...U+204F
122 517, // U+2050...U+205F
123 519, // U+2070...U+207F
124 520, // U+2080...U+208F
125 522, // U+20A0...U+20AF
126 523, // U+20B0...U+20BF
127 524, // U+20C0...U+20CF
128 528, // U+2100...U+210F
129 529, // U+2110...U+211F
130 530, // U+2120...U+212F
131 531, // U+2130...U+213F
132 532, // U+2140...U+214F
133 536, // U+2180...U+218F
134 537, // U+2190...U+219F
135 538, // U+21A0...U+21AF
136 539, // U+21B0...U+21BF
137 540, // U+21C0...U+21CF
138 541, // U+21D0...U+21DF
139 542, // U+21E0...U+21EF
140 543, // U+21F0...U+21FF
141 544, // U+2200...U+220F
142 545, // U+2210...U+221F
143 546, // U+2220...U+222F
144 547, // U+2230...U+223F
145 548, // U+2240...U+224F
146 549, // U+2250...U+225F
147 550, // U+2260...U+226F
148 551, // U+2270...U+227F
149 552, // U+2280...U+228F
150 553, // U+2290...U+229F
151 554, // U+22A0...U+22AF
152 555, // U+22B0...U+22BF
153 556, // U+22C0...U+22CF
154 557, // U+22D0...U+22DF
155 558, // U+22E0...U+22EF
156 559, // U+22F0...U+22FF
157 560, // U+2300...U+230F
158 561, // U+2310...U+231F
159 562, // U+2320...U+232F
160 563, // U+2330...U+233F
161 564, // U+2340...U+234F
162 565, // U+2350...U+235F
163 566, // U+2360...U+236F
164 567, // U+2370...U+237F
165 568, // U+2380...U+238F
166 569, // U+2390...U+239F
167 570, // U+23A0...U+23AF
168 571, // U+23B0...U+23BF
169 572, // U+23C0...U+23CF
170 573, // U+23D0...U+23DF
171 574, // U+23E0...U+23EF
172 575, // U+23F0...U+23FF
173 576, // U+2400...U+240F
174 577, // U+2410...U+241F
175 578, // U+2420...U+242F
176 580, // U+2440...U+244F
177 585, // U+2490...U+249F
178 586, // U+24A0...U+24AF
179 587, // U+24B0...U+24BF
180 588, // U+24C0...U+24CF
181 589, // U+24D0...U+24DF
182 590, // U+24E0...U+24EF
183 592, // U+2500...U+250F
184 593, // U+2510...U+251F
185 594, // U+2520...U+252F
186 595, // U+2530...U+253F
187 596, // U+2540...U+254F
188 597, // U+2550...U+255F
189 598, // U+2560...U+256F
190 599, // U+2570...U+257F
191 600, // U+2580...U+258F
192 601, // U+2590...U+259F
193 602, // U+25A0...U+25AF
194 603, // U+25B0...U+25BF
195 604, // U+25C0...U+25CF
196 605, // U+25D0...U+25DF
197 606, // U+25E0...U+25EF
198 607, // U+25F0...U+25FF
199 608, // U+2600...U+260F
200 609, // U+2610...U+261F
201 610, // U+2620...U+262F
202 611, // U+2630...U+263F
203 612, // U+2640...U+264F
204 613, // U+2650...U+265F
205 614, // U+2660...U+266F
206 615, // U+2670...U+267F
207 616, // U+2680...U+268F
208 617, // U+2690...U+269F
209 618, // U+26A0...U+26AF
210 619, // U+26B0...U+26BF
211 620, // U+26C0...U+26CF
212 621, // U+26D0...U+26DF
213 622, // U+26E0...U+26EF
214 623, // U+26F0...U+26FF
215 624, // U+2700...U+270F
216 625, // U+2710...U+271F
217 626, // U+2720...U+272F
218 627, // U+2730...U+273F
219 628, // U+2740...U+274F
220 629, // U+2750...U+275F
221 630, // U+2760...U+276F
222 631, // U+2770...U+277F
223 633, // U+2790...U+279F
224 634, // U+27A0...U+27AF
225 635, // U+27B0...U+27BF
226 636, // U+27C0...U+27CF
227 637, // U+27D0...U+27DF
228 638, // U+27E0...U+27EF
229 639, // U+27F0...U+27FF
230 640, // U+2800...U+280F
231 641, // U+2810...U+281F
232 642, // U+2820...U+282F
233 643, // U+2830...U+283F
234 644, // U+2840...U+284F
235 645, // U+2850...U+285F
236 646, // U+2860...U+286F
237 647, // U+2870...U+287F
238 648, // U+2880...U+288F
239 649, // U+2890...U+289F
240 650, // U+28A0...U+28AF
241 651, // U+28B0...U+28BF
242 652, // U+28C0...U+28CF
243 653, // U+28D0...U+28DF
244 654, // U+28E0...U+28EF
245 655, // U+28F0...U+28FF
246 656, // U+2900...U+290F
247 657, // U+2910...U+291F
248 658, // U+2920...U+292F
249 659, // U+2930...U+293F
250 660, // U+2940...U+294F
251 661, // U+2950...U+295F
252 662, // U+2960...U+296F
253 663, // U+2970...U+297F
254 664, // U+2980...U+298F
255 665, // U+2990...U+299F
256 666, // U+29A0...U+29AF
257 667, // U+29B0...U+29BF
258 668, // U+29C0...U+29CF
259 669, // U+29D0...U+29DF
260 670, // U+29E0...U+29EF
261 671, // U+29F0...U+29FF
262 672, // U+2A00...U+2A0F
263 673, // U+2A10...U+2A1F
264 674, // U+2A20...U+2A2F
265 675, // U+2A30...U+2A3F
266 676, // U+2A40...U+2A4F
267 677, // U+2A50...U+2A5F
268 678, // U+2A60...U+2A6F
269 679, // U+2A70...U+2A7F
270 680, // U+2A80...U+2A8F
271 681, // U+2A90...U+2A9F
272 682, // U+2AA0...U+2AAF
273 683, // U+2AB0...U+2ABF
274 684, // U+2AC0...U+2ACF
275 685, // U+2AD0...U+2ADF
276 686, // U+2AE0...U+2AEF
277 687, // U+2AF0...U+2AFF
278 688, // U+2B00...U+2B0F
279 689, // U+2B10...U+2B1F
280 690, // U+2B20...U+2B2F
281 691, // U+2B30...U+2B3F
282 692, // U+2B40...U+2B4F
283 693, // U+2B50...U+2B5F
284 694, // U+2B60...U+2B6F
285 695, // U+2B70...U+2B7F
286 696, // U+2B80...U+2B8F
287 697, // U+2B90...U+2B9F
288 698, // U+2BA0...U+2BAF
289 699, // U+2BB0...U+2BBF
290 700, // U+2BC0...U+2BCF
291 701, // U+2BD0...U+2BDF
292 702, // U+2BE0...U+2BEF
293 703, // U+2BF0...U+2BFF
294 718, // U+2CE0...U+2CEF
295 719, // U+2CF0...U+2CFF
296 727, // U+2D70...U+2D7F
297 736, // U+2E00...U+2E0F
298 737, // U+2E10...U+2E1F
299 738, // U+2E20...U+2E2F
300 739, // U+2E30...U+2E3F
301 740, // U+2E40...U+2E4F
302 741, // U+2E50...U+2E5F
303 744, // U+2E80...U+2E8F
304 745, // U+2E90...U+2E9F
305 746, // U+2EA0...U+2EAF
306 747, // U+2EB0...U+2EBF
307 748, // U+2EC0...U+2ECF
308 749, // U+2ED0...U+2EDF
309 750, // U+2EE0...U+2EEF
310 751, // U+2EF0...U+2EFF
311 752, // U+2F00...U+2F0F
312 753, // U+2F10...U+2F1F
313 754, // U+2F20...U+2F2F
314 755, // U+2F30...U+2F3F
315 756, // U+2F40...U+2F4F
316 757, // U+2F50...U+2F5F
317 758, // U+2F60...U+2F6F
318 759, // U+2F70...U+2F7F
319 760, // U+2F80...U+2F8F
320 761, // U+2F90...U+2F9F
321 762, // U+2FA0...U+2FAF
322 763, // U+2FB0...U+2FBF
323 764, // U+2FC0...U+2FCF
324 765, // U+2FD0...U+2FDF
325 767, // U+2FF0...U+2FFF
326 768, // U+3000...U+300F
327 769, // U+3010...U+301F
328 770, // U+3020...U+302F
329 771, // U+3030...U+303F
330 777, // U+3090...U+309F
331 778, // U+30A0...U+30AF
332 783, // U+30F0...U+30FF
333 793, // U+3190...U+319F
334 796, // U+31C0...U+31CF
335 797, // U+31D0...U+31DF
336 798, // U+31E0...U+31EF
337 800, // U+3200...U+320F
338 801, // U+3210...U+321F
339 802, // U+3220...U+322F
340 803, // U+3230...U+323F
341 804, // U+3240...U+324F
342 805, // U+3250...U+325F
343 806, // U+3260...U+326F
344 807, // U+3270...U+327F
345 808, // U+3280...U+328F
346 809, // U+3290...U+329F
347 810, // U+32A0...U+32AF
348 811, // U+32B0...U+32BF
349 812, // U+32C0...U+32CF
350 813, // U+32D0...U+32DF
351 814, // U+32E0...U+32EF
352 815, // U+32F0...U+32FF
353 816, // U+3300...U+330F
354 817, // U+3310...U+331F
355 818, // U+3320...U+332F
356 819, // U+3330...U+333F
357 820, // U+3340...U+334F
358 821, // U+3350...U+335F
359 822, // U+3360...U+336F
360 823, // U+3370...U+337F
361 824, // U+3380...U+338F
362 825, // U+3390...U+339F
363 826, // U+33A0...U+33AF
364 827, // U+33B0...U+33BF
365 828, // U+33C0...U+33CF
366 829, // U+33D0...U+33DF
367 830, // U+33E0...U+33EF
368 831, // U+33F0...U+33FF
369 1244, // U+4DC0...U+4DCF
370 1245, // U+4DD0...U+4DDF
371 1246, // U+4DE0...U+4DEF
372 1247, // U+4DF0...U+4DFF
373 2633, // U+A490...U+A49F
374 2634, // U+A4A0...U+A4AF
375 2635, // U+A4B0...U+A4BF
376 2636, // U+A4C0...U+A4CF
377 2639, // U+A4F0...U+A4FF
378 2656, // U+A600...U+A60F
379 2663, // U+A670...U+A67F
380 2671, // U+A6F0...U+A6FF
381 2672, // U+A700...U+A70F
382 2673, // U+A710...U+A71F
383 2674, // U+A720...U+A72F
384 2680, // U+A780...U+A78F
385 2690, // U+A820...U+A82F
386 2691, // U+A830...U+A83F
387 2695, // U+A870...U+A87F
388 2700, // U+A8C0...U+A8CF
389 2703, // U+A8F0...U+A8FF
390 2706, // U+A920...U+A92F
391 2709, // U+A950...U+A95F
392 2716, // U+A9C0...U+A9CF
393 2717, // U+A9D0...U+A9DF
394 2725, // U+AA50...U+AA5F
395 2727, // U+AA70...U+AA7F
396 2733, // U+AAD0...U+AADF
397 2735, // U+AAF0...U+AAFF
398 2741, // U+AB50...U+AB5F
399 2742, // U+AB60...U+AB6F
400 2750, // U+ABE0...U+ABEF
401 4018, // U+FB20...U+FB2F
402 4027, // U+FBB0...U+FBBF
403 4028, // U+FBC0...U+FBCF
404 4051, // U+FD30...U+FD3F
405 4052, // U+FD40...U+FD4F
406 4060, // U+FDC0...U+FDCF
407 4063, // U+FDF0...U+FDFF
408 4065, // U+FE10...U+FE1F
409 4067, // U+FE30...U+FE3F
410 4068, // U+FE40...U+FE4F
411 4069, // U+FE50...U+FE5F
412 4070, // U+FE60...U+FE6F
413 4080, // U+FF00...U+FF0F
414 4081, // U+FF10...U+FF1F
415 4082, // U+FF20...U+FF2F
416 4083, // U+FF30...U+FF3F
417 4084, // U+FF40...U+FF4F
418 4085, // U+FF50...U+FF5F
419 4086, // U+FF60...U+FF6F
420 4094, // U+FFE0...U+FFEF
421 4095, // U+FFF0...U+FFFF
422 4112, // U+10100...U+1010F
423 4115, // U+10130...U+1013F
424 4119, // U+10170...U+1017F
425 4120, // U+10180...U+1018F
426 4121, // U+10190...U+1019F
427 4122, // U+101A0...U+101AF
428 4125, // U+101D0...U+101DF
429 4126, // U+101E0...U+101EF
430 4127, // U+101F0...U+101FF
431 4153, // U+10390...U+1039F
432 4157, // U+103D0...U+103DF
433 4182, // U+10560...U+1056F
434 4229, // U+10850...U+1085F
435 4231, // U+10870...U+1087F
436 4241, // U+10910...U+1091F
437 4243, // U+10930...U+1093F
438 4261, // U+10A50...U+10A5F
439 4263, // U+10A70...U+10A7F
440 4268, // U+10AC0...U+10ACF
441 4271, // U+10AF0...U+10AFF
442 4275, // U+10B30...U+10B3F
443 4281, // U+10B90...U+10B9F
444 4330, // U+10EA0...U+10EAF
445 4341, // U+10F50...U+10F5F
446 4344, // U+10F80...U+10F8F
447 4356, // U+11040...U+1104F
448 4363, // U+110B0...U+110BF
449 4364, // U+110C0...U+110CF
450 4372, // U+11140...U+1114F
451 4375, // U+11170...U+1117F
452 4380, // U+111C0...U+111CF
453 4381, // U+111D0...U+111DF
454 4387, // U+11230...U+1123F
455 4394, // U+112A0...U+112AF
456 4420, // U+11440...U+1144F
457 4421, // U+11450...U+1145F
458 4428, // U+114C0...U+114CF
459 4444, // U+115C0...U+115CF
460 4445, // U+115D0...U+115DF
461 4452, // U+11640...U+1164F
462 4454, // U+11660...U+1166F
463 4459, // U+116B0...U+116BF
464 4467, // U+11730...U+1173F
465 4483, // U+11830...U+1183F
466 4500, // U+11940...U+1194F
467 4510, // U+119E0...U+119EF
468 4515, // U+11A30...U+11A3F
469 4516, // U+11A40...U+11A4F
470 4521, // U+11A90...U+11A9F
471 4522, // U+11AA0...U+11AAF
472 4528, // U+11B00...U+11B0F
473 4548, // U+11C40...U+11C4F
474 4551, // U+11C70...U+11C7F
475 4591, // U+11EF0...U+11EFF
476 4596, // U+11F40...U+11F4F
477 4605, // U+11FD0...U+11FDF
478 4606, // U+11FE0...U+11FEF
479 4607, // U+11FF0...U+11FFF
480 4679, // U+12470...U+1247F
481 4863, // U+12FF0...U+12FFF
482 5798, // U+16A60...U+16A6F
483 5807, // U+16AF0...U+16AFF
484 5811, // U+16B30...U+16B3F
485 5812, // U+16B40...U+16B4F
486 5865, // U+16E90...U+16E9F
487 5886, // U+16FE0...U+16FEF
488 7113, // U+1BC90...U+1BC9F
489 7413, // U+1CF50...U+1CF5F
490 7414, // U+1CF60...U+1CF6F
491 7415, // U+1CF70...U+1CF7F
492 7416, // U+1CF80...U+1CF8F
493 7417, // U+1CF90...U+1CF9F
494 7418, // U+1CFA0...U+1CFAF
495 7419, // U+1CFB0...U+1CFBF
496 7420, // U+1CFC0...U+1CFCF
497 7424, // U+1D000...U+1D00F
498 7425, // U+1D010...U+1D01F
499 7426, // U+1D020...U+1D02F
500 7427, // U+1D030...U+1D03F
501 7428, // U+1D040...U+1D04F
502 7429, // U+1D050...U+1D05F
503 7430, // U+1D060...U+1D06F
504 7431, // U+1D070...U+1D07F
505 7432, // U+1D080...U+1D08F
506 7433, // U+1D090...U+1D09F
507 7434, // U+1D0A0...U+1D0AF
508 7435, // U+1D0B0...U+1D0BF
509 7436, // U+1D0C0...U+1D0CF
510 7437, // U+1D0D0...U+1D0DF
511 7438, // U+1D0E0...U+1D0EF
512 7439, // U+1D0F0...U+1D0FF
513 7440, // U+1D100...U+1D10F
514 7441, // U+1D110...U+1D11F
515 7442, // U+1D120...U+1D12F
516 7443, // U+1D130...U+1D13F
517 7444, // U+1D140...U+1D14F
518 7445, // U+1D150...U+1D15F
519 7446, // U+1D160...U+1D16F
520 7448, // U+1D180...U+1D18F
521 7449, // U+1D190...U+1D19F
522 7450, // U+1D1A0...U+1D1AF
523 7451, // U+1D1B0...U+1D1BF
524 7452, // U+1D1C0...U+1D1CF
525 7453, // U+1D1D0...U+1D1DF
526 7454, // U+1D1E0...U+1D1EF
527 7456, // U+1D200...U+1D20F
528 7457, // U+1D210...U+1D21F
529 7458, // U+1D220...U+1D22F
530 7459, // U+1D230...U+1D23F
531 7460, // U+1D240...U+1D24F
532 7472, // U+1D300...U+1D30F
533 7473, // U+1D310...U+1D31F
534 7474, // U+1D320...U+1D32F
535 7475, // U+1D330...U+1D33F
536 7476, // U+1D340...U+1D34F
537 7477, // U+1D350...U+1D35F
538 7532, // U+1D6C0...U+1D6CF
539 7533, // U+1D6D0...U+1D6DF
540 7535, // U+1D6F0...U+1D6FF
541 7537, // U+1D710...U+1D71F
542 7539, // U+1D730...U+1D73F
543 7540, // U+1D740...U+1D74F
544 7542, // U+1D760...U+1D76F
545 7544, // U+1D780...U+1D78F
546 7546, // U+1D7A0...U+1D7AF
547 7548, // U+1D7C0...U+1D7CF
548 7552, // U+1D800...U+1D80F
549 7553, // U+1D810...U+1D81F
550 7554, // U+1D820...U+1D82F
551 7555, // U+1D830...U+1D83F
552 7556, // U+1D840...U+1D84F
553 7557, // U+1D850...U+1D85F
554 7558, // U+1D860...U+1D86F
555 7559, // U+1D870...U+1D87F
556 7560, // U+1D880...U+1D88F
557 7561, // U+1D890...U+1D89F
558 7562, // U+1D8A0...U+1D8AF
559 7563, // U+1D8B0...U+1D8BF
560 7564, // U+1D8C0...U+1D8CF
561 7565, // U+1D8D0...U+1D8DF
562 7566, // U+1D8E0...U+1D8EF
563 7567, // U+1D8F0...U+1D8FF
564 7568, // U+1D900...U+1D90F
565 7569, // U+1D910...U+1D91F
566 7570, // U+1D920...U+1D92F
567 7571, // U+1D930...U+1D93F
568 7572, // U+1D940...U+1D94F
569 7573, // U+1D950...U+1D95F
570 7574, // U+1D960...U+1D96F
571 7575, // U+1D970...U+1D97F
572 7576, // U+1D980...U+1D98F
573 7577, // U+1D990...U+1D99F
574 7578, // U+1D9A0...U+1D9AF
575 7579, // U+1D9B0...U+1D9BF
576 7580, // U+1D9C0...U+1D9CF
577 7581, // U+1D9D0...U+1D9DF
578 7582, // U+1D9E0...U+1D9EF
579 7583, // U+1D9F0...U+1D9FF
580 7587, // U+1DA30...U+1DA3F
581 7590, // U+1DA60...U+1DA6F
582 7591, // U+1DA70...U+1DA7F
583 7592, // U+1DA80...U+1DA8F
584 7700, // U+1E140...U+1E14F
585 7727, // U+1E2F0...U+1E2FF
586 7829, // U+1E950...U+1E95F
587 7882, // U+1ECA0...U+1ECAF
588 7883, // U+1ECB0...U+1ECBF
589 7890, // U+1ED20...U+1ED2F
590 7919, // U+1EEF0...U+1EEFF
591 7936, // U+1F000...U+1F00F
592 7937, // U+1F010...U+1F01F
593 7938, // U+1F020...U+1F02F
594 7939, // U+1F030...U+1F03F
595 7940, // U+1F040...U+1F04F
596 7941, // U+1F050...U+1F05F
597 7942, // U+1F060...U+1F06F
598 7943, // U+1F070...U+1F07F
599 7944, // U+1F080...U+1F08F
600 7945, // U+1F090...U+1F09F
601 7946, // U+1F0A0...U+1F0AF
602 7947, // U+1F0B0...U+1F0BF
603 7948, // U+1F0C0...U+1F0CF
604 7949, // U+1F0D0...U+1F0DF
605 7950, // U+1F0E0...U+1F0EF
606 7951, // U+1F0F0...U+1F0FF
607 7952, // U+1F100...U+1F10F
608 7953, // U+1F110...U+1F11F
609 7954, // U+1F120...U+1F12F
610 7955, // U+1F130...U+1F13F
611 7956, // U+1F140...U+1F14F
612 7957, // U+1F150...U+1F15F
613 7958, // U+1F160...U+1F16F
614 7959, // U+1F170...U+1F17F
615 7960, // U+1F180...U+1F18F
616 7961, // U+1F190...U+1F19F
617 7962, // U+1F1A0...U+1F1AF
618 7966, // U+1F1E0...U+1F1EF
619 7967, // U+1F1F0...U+1F1FF
620 7968, // U+1F200...U+1F20F
621 7969, // U+1F210...U+1F21F
622 7970, // U+1F220...U+1F22F
623 7971, // U+1F230...U+1F23F
624 7972, // U+1F240...U+1F24F
625 7973, // U+1F250...U+1F25F
626 7974, // U+1F260...U+1F26F
627 7984, // U+1F300...U+1F30F
628 7985, // U+1F310...U+1F31F
629 7986, // U+1F320...U+1F32F
630 7987, // U+1F330...U+1F33F
631 7988, // U+1F340...U+1F34F
632 7989, // U+1F350...U+1F35F
633 7990, // U+1F360...U+1F36F
634 7991, // U+1F370...U+1F37F
635 7992, // U+1F380...U+1F38F
636 7993, // U+1F390...U+1F39F
637 7994, // U+1F3A0...U+1F3AF
638 7995, // U+1F3B0...U+1F3BF
639 7996, // U+1F3C0...U+1F3CF
640 7997, // U+1F3D0...U+1F3DF
641 7998, // U+1F3E0...U+1F3EF
642 7999, // U+1F3F0...U+1F3FF
643 8000, // U+1F400...U+1F40F
644 8001, // U+1F410...U+1F41F
645 8002, // U+1F420...U+1F42F
646 8003, // U+1F430...U+1F43F
647 8004, // U+1F440...U+1F44F
648 8005, // U+1F450...U+1F45F
649 8006, // U+1F460...U+1F46F
650 8007, // U+1F470...U+1F47F
651 8008, // U+1F480...U+1F48F
652 8009, // U+1F490...U+1F49F
653 8010, // U+1F4A0...U+1F4AF
654 8011, // U+1F4B0...U+1F4BF
655 8012, // U+1F4C0...U+1F4CF
656 8013, // U+1F4D0...U+1F4DF
657 8014, // U+1F4E0...U+1F4EF
658 8015, // U+1F4F0...U+1F4FF
659 8016, // U+1F500...U+1F50F
660 8017, // U+1F510...U+1F51F
661 8018, // U+1F520...U+1F52F
662 8019, // U+1F530...U+1F53F
663 8020, // U+1F540...U+1F54F
664 8021, // U+1F550...U+1F55F
665 8022, // U+1F560...U+1F56F
666 8023, // U+1F570...U+1F57F
667 8024, // U+1F580...U+1F58F
668 8025, // U+1F590...U+1F59F
669 8026, // U+1F5A0...U+1F5AF
670 8027, // U+1F5B0...U+1F5BF
671 8028, // U+1F5C0...U+1F5CF
672 8029, // U+1F5D0...U+1F5DF
673 8030, // U+1F5E0...U+1F5EF
674 8031, // U+1F5F0...U+1F5FF
675 8032, // U+1F600...U+1F60F
676 8033, // U+1F610...U+1F61F
677 8034, // U+1F620...U+1F62F
678 8035, // U+1F630...U+1F63F
679 8036, // U+1F640...U+1F64F
680 8037, // U+1F650...U+1F65F
681 8038, // U+1F660...U+1F66F
682 8039, // U+1F670...U+1F67F
683 8040, // U+1F680...U+1F68F
684 8041, // U+1F690...U+1F69F
685 8042, // U+1F6A0...U+1F6AF
686 8043, // U+1F6B0...U+1F6BF
687 8044, // U+1F6C0...U+1F6CF
688 8045, // U+1F6D0...U+1F6DF
689 8046, // U+1F6E0...U+1F6EF
690 8047, // U+1F6F0...U+1F6FF
691 8048, // U+1F700...U+1F70F
692 8049, // U+1F710...U+1F71F
693 8050, // U+1F720...U+1F72F
694 8051, // U+1F730...U+1F73F
695 8052, // U+1F740...U+1F74F
696 8053, // U+1F750...U+1F75F
697 8054, // U+1F760...U+1F76F
698 8055, // U+1F770...U+1F77F
699 8056, // U+1F780...U+1F78F
700 8057, // U+1F790...U+1F79F
701 8058, // U+1F7A0...U+1F7AF
702 8059, // U+1F7B0...U+1F7BF
703 8060, // U+1F7C0...U+1F7CF
704 8061, // U+1F7D0...U+1F7DF
705 8062, // U+1F7E0...U+1F7EF
706 8063, // U+1F7F0...U+1F7FF
707 8064, // U+1F800...U+1F80F
708 8065, // U+1F810...U+1F81F
709 8066, // U+1F820...U+1F82F
710 8067, // U+1F830...U+1F83F
711 8068, // U+1F840...U+1F84F
712 8069, // U+1F850...U+1F85F
713 8070, // U+1F860...U+1F86F
714 8071, // U+1F870...U+1F87F
715 8072, // U+1F880...U+1F88F
716 8073, // U+1F890...U+1F89F
717 8074, // U+1F8A0...U+1F8AF
718 8075, // U+1F8B0...U+1F8BF
719 8080, // U+1F900...U+1F90F
720 8081, // U+1F910...U+1F91F
721 8082, // U+1F920...U+1F92F
722 8083, // U+1F930...U+1F93F
723 8084, // U+1F940...U+1F94F
724 8085, // U+1F950...U+1F95F
725 8086, // U+1F960...U+1F96F
726 8087, // U+1F970...U+1F97F
727 8088, // U+1F980...U+1F98F
728 8089, // U+1F990...U+1F99F
729 8090, // U+1F9A0...U+1F9AF
730 8091, // U+1F9B0...U+1F9BF
731 8092, // U+1F9C0...U+1F9CF
732 8093, // U+1F9D0...U+1F9DF
733 8094, // U+1F9E0...U+1F9EF
734 8095, // U+1F9F0...U+1F9FF
735 8096, // U+1FA00...U+1FA0F
736 8097, // U+1FA10...U+1FA1F
737 8098, // U+1FA20...U+1FA2F
738 8099, // U+1FA30...U+1FA3F
739 8100, // U+1FA40...U+1FA4F
740 8101, // U+1FA50...U+1FA5F
741 8102, // U+1FA60...U+1FA6F
742 8103, // U+1FA70...U+1FA7F
743 8104, // U+1FA80...U+1FA8F
744 8105, // U+1FA90...U+1FA9F
745 8106, // U+1FAA0...U+1FAAF
746 8107, // U+1FAB0...U+1FABF
747 8108, // U+1FAC0...U+1FACF
748 8109, // U+1FAD0...U+1FADF
749 8110, // U+1FAE0...U+1FAEF
750 8111, // U+1FAF0...U+1FAFF
751 8112, // U+1FB00...U+1FB0F
752 8113, // U+1FB10...U+1FB1F
753 8114, // U+1FB20...U+1FB2F
754 8115, // U+1FB30...U+1FB3F
755 8116, // U+1FB40...U+1FB4F
756 8117, // U+1FB50...U+1FB5F
757 8118, // U+1FB60...U+1FB6F
758 8119, // U+1FB70...U+1FB7F
759 8120, // U+1FB80...U+1FB8F
760 8121, // U+1FB90...U+1FB9F
761 8122, // U+1FBA0...U+1FBAF
762 8123, // U+1FBB0...U+1FBBF
763 8124, // U+1FBC0...U+1FBCF
764];
765
766const PUNCT_MASKS: [u16; 727] = [
767 0xdbfe, // U+00A0...U+00AF
768 0x89d3, // U+00B0...U+00BF
769 0x0080, // U+00D0...U+00DF
770 0x0080, // U+00F0...U+00FF
771 0x003c, // U+02C0...U+02CF
772 0xfffc, // U+02D0...U+02DF
773 0xafe0, // U+02E0...U+02EF
774 0xffff, // U+02F0...U+02FF
775 0x4020, // U+0370...U+037F
776 0x00b0, // U+0380...U+038F
777 0x0040, // U+03F0...U+03FF
778 0x0004, // U+0480...U+048F
779 0xfc00, // U+0550...U+055F
780 0xe600, // U+0580...U+058F
781 0x4000, // U+05B0...U+05BF
782 0x0049, // U+05C0...U+05CF
783 0x0018, // U+05F0...U+05FF
784 0xffc0, // U+0600...U+060F
785 0xe800, // U+0610...U+061F
786 0x3c00, // U+0660...U+066F
787 0x4010, // U+06D0...U+06DF
788 0x0200, // U+06E0...U+06EF
789 0x6000, // U+06F0...U+06FF
790 0x3fff, // U+0700...U+070F
791 0xc3c0, // U+07F0...U+07FF
792 0x7fff, // U+0830...U+083F
793 0x4000, // U+0850...U+085F
794 0x0100, // U+0880...U+088F
795 0x0030, // U+0960...U+096F
796 0x0001, // U+0970...U+097F
797 0x2c0c, // U+09F0...U+09FF
798 0x0040, // U+0A70...U+0A7F
799 0x0003, // U+0AF0...U+0AFF
800 0x0001, // U+0B70...U+0B7F
801 0x07f8, // U+0BF0...U+0BFF
802 0x8080, // U+0C70...U+0C7F
803 0x0010, // U+0C80...U+0C8F
804 0x8000, // U+0D40...U+0D4F
805 0x0200, // U+0D70...U+0D7F
806 0x0010, // U+0DF0...U+0DFF
807 0x8000, // U+0E30...U+0E3F
808 0x8000, // U+0E40...U+0E4F
809 0x0c00, // U+0E50...U+0E5F
810 0xfffe, // U+0F00...U+0F0F
811 0xfcff, // U+0F10...U+0F1F
812 0x3d50, // U+0F30...U+0F3F
813 0x0020, // U+0F80...U+0F8F
814 0xc000, // U+0FB0...U+0FBF
815 0xdfbf, // U+0FC0...U+0FCF
816 0x07ff, // U+0FD0...U+0FDF
817 0xfc00, // U+1040...U+104F
818 0xc000, // U+1090...U+109F
819 0x0800, // U+10F0...U+10FF
820 0x01ff, // U+1360...U+136F
821 0x03ff, // U+1390...U+139F
822 0x0001, // U+1400...U+140F
823 0x6000, // U+1660...U+166F
824 0x1800, // U+1690...U+169F
825 0x3800, // U+16E0...U+16EF
826 0x0060, // U+1730...U+173F
827 0x0f70, // U+17D0...U+17DF
828 0x07ff, // U+1800...U+180F
829 0x0031, // U+1940...U+194F
830 0xc000, // U+19D0...U+19DF
831 0xffff, // U+19E0...U+19EF
832 0xffff, // U+19F0...U+19FF
833 0xc000, // U+1A10...U+1A1F
834 0x3f7f, // U+1AA0...U+1AAF
835 0xfc00, // U+1B50...U+1B5F
836 0x07ff, // U+1B60...U+1B6F
837 0x7ff0, // U+1B70...U+1B7F
838 0xf000, // U+1BF0...U+1BFF
839 0xf800, // U+1C30...U+1C3F
840 0xc000, // U+1C70...U+1C7F
841 0x00ff, // U+1CC0...U+1CCF
842 0x0008, // U+1CD0...U+1CDF
843 0xa000, // U+1FB0...U+1FBF
844 0xe003, // U+1FC0...U+1FCF
845 0xe000, // U+1FD0...U+1FDF
846 0xe000, // U+1FE0...U+1FEF
847 0x6000, // U+1FF0...U+1FFF
848 0xffff, // U+2010...U+201F
849 0x00ff, // U+2020...U+202F
850 0xffff, // U+2030...U+203F
851 0xffff, // U+2040...U+204F
852 0x7fff, // U+2050...U+205F
853 0x7c00, // U+2070...U+207F
854 0x7c00, // U+2080...U+208F
855 0xffff, // U+20A0...U+20AF
856 0xffff, // U+20B0...U+20BF
857 0x0001, // U+20C0...U+20CF
858 0x037b, // U+2100...U+210F
859 0xc1d0, // U+2110...U+211F
860 0x42af, // U+2120...U+212F
861 0x0c00, // U+2130...U+213F
862 0xbc1f, // U+2140...U+214F
863 0x0c00, // U+2180...U+218F
864 0xffff, // U+2190...U+219F
865 0xffff, // U+21A0...U+21AF
866 0xffff, // U+21B0...U+21BF
867 0xffff, // U+21C0...U+21CF
868 0xffff, // U+21D0...U+21DF
869 0xffff, // U+21E0...U+21EF
870 0xffff, // U+21F0...U+21FF
871 0xffff, // U+2200...U+220F
872 0xffff, // U+2210...U+221F
873 0xffff, // U+2220...U+222F
874 0xffff, // U+2230...U+223F
875 0xffff, // U+2240...U+224F
876 0xffff, // U+2250...U+225F
877 0xffff, // U+2260...U+226F
878 0xffff, // U+2270...U+227F
879 0xffff, // U+2280...U+228F
880 0xffff, // U+2290...U+229F
881 0xffff, // U+22A0...U+22AF
882 0xffff, // U+22B0...U+22BF
883 0xffff, // U+22C0...U+22CF
884 0xffff, // U+22D0...U+22DF
885 0xffff, // U+22E0...U+22EF
886 0xffff, // U+22F0...U+22FF
887 0xffff, // U+2300...U+230F
888 0xffff, // U+2310...U+231F
889 0xffff, // U+2320...U+232F
890 0xffff, // U+2330...U+233F
891 0xffff, // U+2340...U+234F
892 0xffff, // U+2350...U+235F
893 0xffff, // U+2360...U+236F
894 0xffff, // U+2370...U+237F
895 0xffff, // U+2380...U+238F
896 0xffff, // U+2390...U+239F
897 0xffff, // U+23A0...U+23AF
898 0xffff, // U+23B0...U+23BF
899 0xffff, // U+23C0...U+23CF
900 0xffff, // U+23D0...U+23DF
901 0xffff, // U+23E0...U+23EF
902 0xffff, // U+23F0...U+23FF
903 0xffff, // U+2400...U+240F
904 0xffff, // U+2410...U+241F
905 0x007f, // U+2420...U+242F
906 0x07ff, // U+2440...U+244F
907 0xf000, // U+2490...U+249F
908 0xffff, // U+24A0...U+24AF
909 0xffff, // U+24B0...U+24BF
910 0xffff, // U+24C0...U+24CF
911 0xffff, // U+24D0...U+24DF
912 0x03ff, // U+24E0...U+24EF
913 0xffff, // U+2500...U+250F
914 0xffff, // U+2510...U+251F
915 0xffff, // U+2520...U+252F
916 0xffff, // U+2530...U+253F
917 0xffff, // U+2540...U+254F
918 0xffff, // U+2550...U+255F
919 0xffff, // U+2560...U+256F
920 0xffff, // U+2570...U+257F
921 0xffff, // U+2580...U+258F
922 0xffff, // U+2590...U+259F
923 0xffff, // U+25A0...U+25AF
924 0xffff, // U+25B0...U+25BF
925 0xffff, // U+25C0...U+25CF
926 0xffff, // U+25D0...U+25DF
927 0xffff, // U+25E0...U+25EF
928 0xffff, // U+25F0...U+25FF
929 0xffff, // U+2600...U+260F
930 0xffff, // U+2610...U+261F
931 0xffff, // U+2620...U+262F
932 0xffff, // U+2630...U+263F
933 0xffff, // U+2640...U+264F
934 0xffff, // U+2650...U+265F
935 0xffff, // U+2660...U+266F
936 0xffff, // U+2670...U+267F
937 0xffff, // U+2680...U+268F
938 0xffff, // U+2690...U+269F
939 0xffff, // U+26A0...U+26AF
940 0xffff, // U+26B0...U+26BF
941 0xffff, // U+26C0...U+26CF
942 0xffff, // U+26D0...U+26DF
943 0xffff, // U+26E0...U+26EF
944 0xffff, // U+26F0...U+26FF
945 0xffff, // U+2700...U+270F
946 0xffff, // U+2710...U+271F
947 0xffff, // U+2720...U+272F
948 0xffff, // U+2730...U+273F
949 0xffff, // U+2740...U+274F
950 0xffff, // U+2750...U+275F
951 0xffff, // U+2760...U+276F
952 0x003f, // U+2770...U+277F
953 0xfff0, // U+2790...U+279F
954 0xffff, // U+27A0...U+27AF
955 0xffff, // U+27B0...U+27BF
956 0xffff, // U+27C0...U+27CF
957 0xffff, // U+27D0...U+27DF
958 0xffff, // U+27E0...U+27EF
959 0xffff, // U+27F0...U+27FF
960 0xffff, // U+2800...U+280F
961 0xffff, // U+2810...U+281F
962 0xffff, // U+2820...U+282F
963 0xffff, // U+2830...U+283F
964 0xffff, // U+2840...U+284F
965 0xffff, // U+2850...U+285F
966 0xffff, // U+2860...U+286F
967 0xffff, // U+2870...U+287F
968 0xffff, // U+2880...U+288F
969 0xffff, // U+2890...U+289F
970 0xffff, // U+28A0...U+28AF
971 0xffff, // U+28B0...U+28BF
972 0xffff, // U+28C0...U+28CF
973 0xffff, // U+28D0...U+28DF
974 0xffff, // U+28E0...U+28EF
975 0xffff, // U+28F0...U+28FF
976 0xffff, // U+2900...U+290F
977 0xffff, // U+2910...U+291F
978 0xffff, // U+2920...U+292F
979 0xffff, // U+2930...U+293F
980 0xffff, // U+2940...U+294F
981 0xffff, // U+2950...U+295F
982 0xffff, // U+2960...U+296F
983 0xffff, // U+2970...U+297F
984 0xffff, // U+2980...U+298F
985 0xffff, // U+2990...U+299F
986 0xffff, // U+29A0...U+29AF
987 0xffff, // U+29B0...U+29BF
988 0xffff, // U+29C0...U+29CF
989 0xffff, // U+29D0...U+29DF
990 0xffff, // U+29E0...U+29EF
991 0xffff, // U+29F0...U+29FF
992 0xffff, // U+2A00...U+2A0F
993 0xffff, // U+2A10...U+2A1F
994 0xffff, // U+2A20...U+2A2F
995 0xffff, // U+2A30...U+2A3F
996 0xffff, // U+2A40...U+2A4F
997 0xffff, // U+2A50...U+2A5F
998 0xffff, // U+2A60...U+2A6F
999 0xffff, // U+2A70...U+2A7F
1000 0xffff, // U+2A80...U+2A8F
1001 0xffff, // U+2A90...U+2A9F
1002 0xffff, // U+2AA0...U+2AAF
1003 0xffff, // U+2AB0...U+2ABF
1004 0xffff, // U+2AC0...U+2ACF
1005 0xffff, // U+2AD0...U+2ADF
1006 0xffff, // U+2AE0...U+2AEF
1007 0xffff, // U+2AF0...U+2AFF
1008 0xffff, // U+2B00...U+2B0F
1009 0xffff, // U+2B10...U+2B1F
1010 0xffff, // U+2B20...U+2B2F
1011 0xffff, // U+2B30...U+2B3F
1012 0xffff, // U+2B40...U+2B4F
1013 0xffff, // U+2B50...U+2B5F
1014 0xffff, // U+2B60...U+2B6F
1015 0xffcf, // U+2B70...U+2B7F
1016 0xffff, // U+2B80...U+2B8F
1017 0xffbf, // U+2B90...U+2B9F
1018 0xffff, // U+2BA0...U+2BAF
1019 0xffff, // U+2BB0...U+2BBF
1020 0xffff, // U+2BC0...U+2BCF
1021 0xffff, // U+2BD0...U+2BDF
1022 0xffff, // U+2BE0...U+2BEF
1023 0xffff, // U+2BF0...U+2BFF
1024 0x07e0, // U+2CE0...U+2CEF
1025 0xde00, // U+2CF0...U+2CFF
1026 0x0001, // U+2D70...U+2D7F
1027 0xffff, // U+2E00...U+2E0F
1028 0xffff, // U+2E10...U+2E1F
1029 0x7fff, // U+2E20...U+2E2F
1030 0xffff, // U+2E30...U+2E3F
1031 0xffff, // U+2E40...U+2E4F
1032 0x3fff, // U+2E50...U+2E5F
1033 0xffff, // U+2E80...U+2E8F
1034 0xfbff, // U+2E90...U+2E9F
1035 0xffff, // U+2EA0...U+2EAF
1036 0xffff, // U+2EB0...U+2EBF
1037 0xffff, // U+2EC0...U+2ECF
1038 0xffff, // U+2ED0...U+2EDF
1039 0xffff, // U+2EE0...U+2EEF
1040 0x000f, // U+2EF0...U+2EFF
1041 0xffff, // U+2F00...U+2F0F
1042 0xffff, // U+2F10...U+2F1F
1043 0xffff, // U+2F20...U+2F2F
1044 0xffff, // U+2F30...U+2F3F
1045 0xffff, // U+2F40...U+2F4F
1046 0xffff, // U+2F50...U+2F5F
1047 0xffff, // U+2F60...U+2F6F
1048 0xffff, // U+2F70...U+2F7F
1049 0xffff, // U+2F80...U+2F8F
1050 0xffff, // U+2F90...U+2F9F
1051 0xffff, // U+2FA0...U+2FAF
1052 0xffff, // U+2FB0...U+2FBF
1053 0xffff, // U+2FC0...U+2FCF
1054 0x003f, // U+2FD0...U+2FDF
1055 0xffff, // U+2FF0...U+2FFF
1056 0xff1e, // U+3000...U+300F
1057 0xffff, // U+3010...U+301F
1058 0x0001, // U+3020...U+302F
1059 0xe0c1, // U+3030...U+303F
1060 0x1800, // U+3090...U+309F
1061 0x0001, // U+30A0...U+30AF
1062 0x0800, // U+30F0...U+30FF
1063 0xffc3, // U+3190...U+319F
1064 0xffff, // U+31C0...U+31CF
1065 0xffff, // U+31D0...U+31DF
1066 0x800f, // U+31E0...U+31EF
1067 0xffff, // U+3200...U+320F
1068 0x7fff, // U+3210...U+321F
1069 0xfc00, // U+3220...U+322F
1070 0xffff, // U+3230...U+323F
1071 0x00ff, // U+3240...U+324F
1072 0x0001, // U+3250...U+325F
1073 0xffff, // U+3260...U+326F
1074 0xffff, // U+3270...U+327F
1075 0xfc00, // U+3280...U+328F
1076 0xffff, // U+3290...U+329F
1077 0xffff, // U+32A0...U+32AF
1078 0x0001, // U+32B0...U+32BF
1079 0xffff, // U+32C0...U+32CF
1080 0xffff, // U+32D0...U+32DF
1081 0xffff, // U+32E0...U+32EF
1082 0xffff, // U+32F0...U+32FF
1083 0xffff, // U+3300...U+330F
1084 0xffff, // U+3310...U+331F
1085 0xffff, // U+3320...U+332F
1086 0xffff, // U+3330...U+333F
1087 0xffff, // U+3340...U+334F
1088 0xffff, // U+3350...U+335F
1089 0xffff, // U+3360...U+336F
1090 0xffff, // U+3370...U+337F
1091 0xffff, // U+3380...U+338F
1092 0xffff, // U+3390...U+339F
1093 0xffff, // U+33A0...U+33AF
1094 0xffff, // U+33B0...U+33BF
1095 0xffff, // U+33C0...U+33CF
1096 0xffff, // U+33D0...U+33DF
1097 0xffff, // U+33E0...U+33EF
1098 0xffff, // U+33F0...U+33FF
1099 0xffff, // U+4DC0...U+4DCF
1100 0xffff, // U+4DD0...U+4DDF
1101 0xffff, // U+4DE0...U+4DEF
1102 0xffff, // U+4DF0...U+4DFF
1103 0xffff, // U+A490...U+A49F
1104 0xffff, // U+A4A0...U+A4AF
1105 0xffff, // U+A4B0...U+A4BF
1106 0x007f, // U+A4C0...U+A4CF
1107 0xc000, // U+A4F0...U+A4FF
1108 0xe000, // U+A600...U+A60F
1109 0x4008, // U+A670...U+A67F
1110 0x00fc, // U+A6F0...U+A6FF
1111 0xffff, // U+A700...U+A70F
1112 0x007f, // U+A710...U+A71F
1113 0x0003, // U+A720...U+A72F
1114 0x0600, // U+A780...U+A78F
1115 0x0f00, // U+A820...U+A82F
1116 0x03c0, // U+A830...U+A83F
1117 0x00f0, // U+A870...U+A87F
1118 0xc000, // U+A8C0...U+A8CF
1119 0x1700, // U+A8F0...U+A8FF
1120 0xc000, // U+A920...U+A92F
1121 0x8000, // U+A950...U+A95F
1122 0x3ffe, // U+A9C0...U+A9CF
1123 0xc000, // U+A9D0...U+A9DF
1124 0xf000, // U+AA50...U+AA5F
1125 0x0380, // U+AA70...U+AA7F
1126 0xc000, // U+AAD0...U+AADF
1127 0x0003, // U+AAF0...U+AAFF
1128 0x0800, // U+AB50...U+AB5F
1129 0x0c00, // U+AB60...U+AB6F
1130 0x0800, // U+ABE0...U+ABEF
1131 0x0200, // U+FB20...U+FB2F
1132 0xfffc, // U+FBB0...U+FBBF
1133 0x0007, // U+FBC0...U+FBCF
1134 0xc000, // U+FD30...U+FD3F
1135 0xffff, // U+FD40...U+FD4F
1136 0x8000, // U+FDC0...U+FDCF
1137 0xf000, // U+FDF0...U+FDFF
1138 0x03ff, // U+FE10...U+FE1F
1139 0xffff, // U+FE30...U+FE3F
1140 0xffff, // U+FE40...U+FE4F
1141 0xfff7, // U+FE50...U+FE5F
1142 0x0f7f, // U+FE60...U+FE6F
1143 0xfffe, // U+FF00...U+FF0F
1144 0xfc00, // U+FF10...U+FF1F
1145 0x0001, // U+FF20...U+FF2F
1146 0xf800, // U+FF30...U+FF3F
1147 0x0001, // U+FF40...U+FF4F
1148 0xf800, // U+FF50...U+FF5F
1149 0x003f, // U+FF60...U+FF6F
1150 0x7f7f, // U+FFE0...U+FFEF
1151 0x3000, // U+FFF0...U+FFFF
1152 0x0007, // U+10100...U+1010F
1153 0xff80, // U+10130...U+1013F
1154 0xfe00, // U+10170...U+1017F
1155 0x73ff, // U+10180...U+1018F
1156 0x1fff, // U+10190...U+1019F
1157 0x0001, // U+101A0...U+101AF
1158 0xffff, // U+101D0...U+101DF
1159 0xffff, // U+101E0...U+101EF
1160 0x1fff, // U+101F0...U+101FF
1161 0x8000, // U+10390...U+1039F
1162 0x0001, // U+103D0...U+103DF
1163 0x8000, // U+10560...U+1056F
1164 0x0080, // U+10850...U+1085F
1165 0x0180, // U+10870...U+1087F
1166 0x8000, // U+10910...U+1091F
1167 0x8000, // U+10930...U+1093F
1168 0x01ff, // U+10A50...U+10A5F
1169 0x8000, // U+10A70...U+10A7F
1170 0x0100, // U+10AC0...U+10ACF
1171 0x007f, // U+10AF0...U+10AFF
1172 0xfe00, // U+10B30...U+10B3F
1173 0x1e00, // U+10B90...U+10B9F
1174 0x2000, // U+10EA0...U+10EAF
1175 0x03e0, // U+10F50...U+10F5F
1176 0x03c0, // U+10F80...U+10F8F
1177 0x3f80, // U+11040...U+1104F
1178 0xd800, // U+110B0...U+110BF
1179 0x0003, // U+110C0...U+110CF
1180 0x000f, // U+11140...U+1114F
1181 0x0030, // U+11170...U+1117F
1182 0x21e0, // U+111C0...U+111CF
1183 0xe800, // U+111D0...U+111DF
1184 0x3f00, // U+11230...U+1123F
1185 0x0200, // U+112A0...U+112AF
1186 0xf800, // U+11440...U+1144F
1187 0x2c00, // U+11450...U+1145F
1188 0x0040, // U+114C0...U+114CF
1189 0xfffe, // U+115C0...U+115CF
1190 0x00ff, // U+115D0...U+115DF
1191 0x000e, // U+11640...U+1164F
1192 0x1fff, // U+11660...U+1166F
1193 0x0200, // U+116B0...U+116BF
1194 0xf000, // U+11730...U+1173F
1195 0x0800, // U+11830...U+1183F
1196 0x0070, // U+11940...U+1194F
1197 0x0004, // U+119E0...U+119EF
1198 0x8000, // U+11A30...U+11A3F
1199 0x007f, // U+11A40...U+11A4F
1200 0xdc00, // U+11A90...U+11A9F
1201 0x0007, // U+11AA0...U+11AAF
1202 0x03ff, // U+11B00...U+11B0F
1203 0x003e, // U+11C40...U+11C4F
1204 0x0003, // U+11C70...U+11C7F
1205 0x0180, // U+11EF0...U+11EFF
1206 0xfff8, // U+11F40...U+11F4F
1207 0xffe0, // U+11FD0...U+11FDF
1208 0xffff, // U+11FE0...U+11FEF
1209 0x8003, // U+11FF0...U+11FFF
1210 0x001f, // U+12470...U+1247F
1211 0x0006, // U+12FF0...U+12FFF
1212 0xc000, // U+16A60...U+16A6F
1213 0x0020, // U+16AF0...U+16AFF
1214 0xff80, // U+16B30...U+16B3F
1215 0x0030, // U+16B40...U+16B4F
1216 0x0780, // U+16E90...U+16E9F
1217 0x0004, // U+16FE0...U+16FEF
1218 0x9000, // U+1BC90...U+1BC9F
1219 0xffff, // U+1CF50...U+1CF5F
1220 0xffff, // U+1CF60...U+1CF6F
1221 0xffff, // U+1CF70...U+1CF7F
1222 0xffff, // U+1CF80...U+1CF8F
1223 0xffff, // U+1CF90...U+1CF9F
1224 0xffff, // U+1CFA0...U+1CFAF
1225 0xffff, // U+1CFB0...U+1CFBF
1226 0x000f, // U+1CFC0...U+1CFCF
1227 0xffff, // U+1D000...U+1D00F
1228 0xffff, // U+1D010...U+1D01F
1229 0xffff, // U+1D020...U+1D02F
1230 0xffff, // U+1D030...U+1D03F
1231 0xffff, // U+1D040...U+1D04F
1232 0xffff, // U+1D050...U+1D05F
1233 0xffff, // U+1D060...U+1D06F
1234 0xffff, // U+1D070...U+1D07F
1235 0xffff, // U+1D080...U+1D08F
1236 0xffff, // U+1D090...U+1D09F
1237 0xffff, // U+1D0A0...U+1D0AF
1238 0xffff, // U+1D0B0...U+1D0BF
1239 0xffff, // U+1D0C0...U+1D0CF
1240 0xffff, // U+1D0D0...U+1D0DF
1241 0xffff, // U+1D0E0...U+1D0EF
1242 0x003f, // U+1D0F0...U+1D0FF
1243 0xffff, // U+1D100...U+1D10F
1244 0xffff, // U+1D110...U+1D11F
1245 0xfe7f, // U+1D120...U+1D12F
1246 0xffff, // U+1D130...U+1D13F
1247 0xffff, // U+1D140...U+1D14F
1248 0xffff, // U+1D150...U+1D15F
1249 0x1c1f, // U+1D160...U+1D16F
1250 0xf018, // U+1D180...U+1D18F
1251 0xffff, // U+1D190...U+1D19F
1252 0xc3ff, // U+1D1A0...U+1D1AF
1253 0xffff, // U+1D1B0...U+1D1BF
1254 0xffff, // U+1D1C0...U+1D1CF
1255 0xffff, // U+1D1D0...U+1D1DF
1256 0x07ff, // U+1D1E0...U+1D1EF
1257 0xffff, // U+1D200...U+1D20F
1258 0xffff, // U+1D210...U+1D21F
1259 0xffff, // U+1D220...U+1D22F
1260 0xffff, // U+1D230...U+1D23F
1261 0x0023, // U+1D240...U+1D24F
1262 0xffff, // U+1D300...U+1D30F
1263 0xffff, // U+1D310...U+1D31F
1264 0xffff, // U+1D320...U+1D32F
1265 0xffff, // U+1D330...U+1D33F
1266 0xffff, // U+1D340...U+1D34F
1267 0x007f, // U+1D350...U+1D35F
1268 0x0002, // U+1D6C0...U+1D6CF
1269 0x0800, // U+1D6D0...U+1D6DF
1270 0x0800, // U+1D6F0...U+1D6FF
1271 0x0020, // U+1D710...U+1D71F
1272 0x0020, // U+1D730...U+1D73F
1273 0x8000, // U+1D740...U+1D74F
1274 0x8000, // U+1D760...U+1D76F
1275 0x0200, // U+1D780...U+1D78F
1276 0x0200, // U+1D7A0...U+1D7AF
1277 0x0008, // U+1D7C0...U+1D7CF
1278 0xffff, // U+1D800...U+1D80F
1279 0xffff, // U+1D810...U+1D81F
1280 0xffff, // U+1D820...U+1D82F
1281 0xffff, // U+1D830...U+1D83F
1282 0xffff, // U+1D840...U+1D84F
1283 0xffff, // U+1D850...U+1D85F
1284 0xffff, // U+1D860...U+1D86F
1285 0xffff, // U+1D870...U+1D87F
1286 0xffff, // U+1D880...U+1D88F
1287 0xffff, // U+1D890...U+1D89F
1288 0xffff, // U+1D8A0...U+1D8AF
1289 0xffff, // U+1D8B0...U+1D8BF
1290 0xffff, // U+1D8C0...U+1D8CF
1291 0xffff, // U+1D8D0...U+1D8DF
1292 0xffff, // U+1D8E0...U+1D8EF
1293 0xffff, // U+1D8F0...U+1D8FF
1294 0xffff, // U+1D900...U+1D90F
1295 0xffff, // U+1D910...U+1D91F
1296 0xffff, // U+1D920...U+1D92F
1297 0xffff, // U+1D930...U+1D93F
1298 0xffff, // U+1D940...U+1D94F
1299 0xffff, // U+1D950...U+1D95F
1300 0xffff, // U+1D960...U+1D96F
1301 0xffff, // U+1D970...U+1D97F
1302 0xffff, // U+1D980...U+1D98F
1303 0xffff, // U+1D990...U+1D99F
1304 0xffff, // U+1D9A0...U+1D9AF
1305 0xffff, // U+1D9B0...U+1D9BF
1306 0xffff, // U+1D9C0...U+1D9CF
1307 0xffff, // U+1D9D0...U+1D9DF
1308 0xffff, // U+1D9E0...U+1D9EF
1309 0xffff, // U+1D9F0...U+1D9FF
1310 0x0780, // U+1DA30...U+1DA3F
1311 0xe000, // U+1DA60...U+1DA6F
1312 0xffdf, // U+1DA70...U+1DA7F
1313 0x0fef, // U+1DA80...U+1DA8F
1314 0x8000, // U+1E140...U+1E14F
1315 0x8000, // U+1E2F0...U+1E2FF
1316 0xc000, // U+1E950...U+1E95F
1317 0x1000, // U+1ECA0...U+1ECAF
1318 0x0001, // U+1ECB0...U+1ECBF
1319 0x4000, // U+1ED20...U+1ED2F
1320 0x0003, // U+1EEF0...U+1EEFF
1321 0xffff, // U+1F000...U+1F00F
1322 0xffff, // U+1F010...U+1F01F
1323 0x0fff, // U+1F020...U+1F02F
1324 0xffff, // U+1F030...U+1F03F
1325 0xffff, // U+1F040...U+1F04F
1326 0xffff, // U+1F050...U+1F05F
1327 0xffff, // U+1F060...U+1F06F
1328 0xffff, // U+1F070...U+1F07F
1329 0xffff, // U+1F080...U+1F08F
1330 0x000f, // U+1F090...U+1F09F
1331 0x7fff, // U+1F0A0...U+1F0AF
1332 0xfffe, // U+1F0B0...U+1F0BF
1333 0xfffe, // U+1F0C0...U+1F0CF
1334 0xfffe, // U+1F0D0...U+1F0DF
1335 0xffff, // U+1F0E0...U+1F0EF
1336 0x003f, // U+1F0F0...U+1F0FF
1337 0xe000, // U+1F100...U+1F10F
1338 0xffff, // U+1F110...U+1F11F
1339 0xffff, // U+1F120...U+1F12F
1340 0xffff, // U+1F130...U+1F13F
1341 0xffff, // U+1F140...U+1F14F
1342 0xffff, // U+1F150...U+1F15F
1343 0xffff, // U+1F160...U+1F16F
1344 0xffff, // U+1F170...U+1F17F
1345 0xffff, // U+1F180...U+1F18F
1346 0xffff, // U+1F190...U+1F19F
1347 0x3fff, // U+1F1A0...U+1F1AF
1348 0xffc0, // U+1F1E0...U+1F1EF
1349 0xffff, // U+1F1F0...U+1F1FF
1350 0x0007, // U+1F200...U+1F20F
1351 0xffff, // U+1F210...U+1F21F
1352 0xffff, // U+1F220...U+1F22F
1353 0x0fff, // U+1F230...U+1F23F
1354 0x01ff, // U+1F240...U+1F24F
1355 0x0003, // U+1F250...U+1F25F
1356 0x003f, // U+1F260...U+1F26F
1357 0xffff, // U+1F300...U+1F30F
1358 0xffff, // U+1F310...U+1F31F
1359 0xffff, // U+1F320...U+1F32F
1360 0xffff, // U+1F330...U+1F33F
1361 0xffff, // U+1F340...U+1F34F
1362 0xffff, // U+1F350...U+1F35F
1363 0xffff, // U+1F360...U+1F36F
1364 0xffff, // U+1F370...U+1F37F
1365 0xffff, // U+1F380...U+1F38F
1366 0xffff, // U+1F390...U+1F39F
1367 0xffff, // U+1F3A0...U+1F3AF
1368 0xffff, // U+1F3B0...U+1F3BF
1369 0xffff, // U+1F3C0...U+1F3CF
1370 0xffff, // U+1F3D0...U+1F3DF
1371 0xffff, // U+1F3E0...U+1F3EF
1372 0xffff, // U+1F3F0...U+1F3FF
1373 0xffff, // U+1F400...U+1F40F
1374 0xffff, // U+1F410...U+1F41F
1375 0xffff, // U+1F420...U+1F42F
1376 0xffff, // U+1F430...U+1F43F
1377 0xffff, // U+1F440...U+1F44F
1378 0xffff, // U+1F450...U+1F45F
1379 0xffff, // U+1F460...U+1F46F
1380 0xffff, // U+1F470...U+1F47F
1381 0xffff, // U+1F480...U+1F48F
1382 0xffff, // U+1F490...U+1F49F
1383 0xffff, // U+1F4A0...U+1F4AF
1384 0xffff, // U+1F4B0...U+1F4BF
1385 0xffff, // U+1F4C0...U+1F4CF
1386 0xffff, // U+1F4D0...U+1F4DF
1387 0xffff, // U+1F4E0...U+1F4EF
1388 0xffff, // U+1F4F0...U+1F4FF
1389 0xffff, // U+1F500...U+1F50F
1390 0xffff, // U+1F510...U+1F51F
1391 0xffff, // U+1F520...U+1F52F
1392 0xffff, // U+1F530...U+1F53F
1393 0xffff, // U+1F540...U+1F54F
1394 0xffff, // U+1F550...U+1F55F
1395 0xffff, // U+1F560...U+1F56F
1396 0xffff, // U+1F570...U+1F57F
1397 0xffff, // U+1F580...U+1F58F
1398 0xffff, // U+1F590...U+1F59F
1399 0xffff, // U+1F5A0...U+1F5AF
1400 0xffff, // U+1F5B0...U+1F5BF
1401 0xffff, // U+1F5C0...U+1F5CF
1402 0xffff, // U+1F5D0...U+1F5DF
1403 0xffff, // U+1F5E0...U+1F5EF
1404 0xffff, // U+1F5F0...U+1F5FF
1405 0xffff, // U+1F600...U+1F60F
1406 0xffff, // U+1F610...U+1F61F
1407 0xffff, // U+1F620...U+1F62F
1408 0xffff, // U+1F630...U+1F63F
1409 0xffff, // U+1F640...U+1F64F
1410 0xffff, // U+1F650...U+1F65F
1411 0xffff, // U+1F660...U+1F66F
1412 0xffff, // U+1F670...U+1F67F
1413 0xffff, // U+1F680...U+1F68F
1414 0xffff, // U+1F690...U+1F69F
1415 0xffff, // U+1F6A0...U+1F6AF
1416 0xffff, // U+1F6B0...U+1F6BF
1417 0xffff, // U+1F6C0...U+1F6CF
1418 0xf0ff, // U+1F6D0...U+1F6DF
1419 0x1fff, // U+1F6E0...U+1F6EF
1420 0x1fff, // U+1F6F0...U+1F6FF
1421 0xffff, // U+1F700...U+1F70F
1422 0xffff, // U+1F710...U+1F71F
1423 0xffff, // U+1F720...U+1F72F
1424 0xffff, // U+1F730...U+1F73F
1425 0xffff, // U+1F740...U+1F74F
1426 0xffff, // U+1F750...U+1F75F
1427 0xffff, // U+1F760...U+1F76F
1428 0xf87f, // U+1F770...U+1F77F
1429 0xffff, // U+1F780...U+1F78F
1430 0xffff, // U+1F790...U+1F79F
1431 0xffff, // U+1F7A0...U+1F7AF
1432 0xffff, // U+1F7B0...U+1F7BF
1433 0xffff, // U+1F7C0...U+1F7CF
1434 0x03ff, // U+1F7D0...U+1F7DF
1435 0x0fff, // U+1F7E0...U+1F7EF
1436 0x0001, // U+1F7F0...U+1F7FF
1437 0x0fff, // U+1F800...U+1F80F
1438 0xffff, // U+1F810...U+1F81F
1439 0xffff, // U+1F820...U+1F82F
1440 0xffff, // U+1F830...U+1F83F
1441 0x00ff, // U+1F840...U+1F84F
1442 0x03ff, // U+1F850...U+1F85F
1443 0xffff, // U+1F860...U+1F86F
1444 0xffff, // U+1F870...U+1F87F
1445 0x00ff, // U+1F880...U+1F88F
1446 0xffff, // U+1F890...U+1F89F
1447 0x3fff, // U+1F8A0...U+1F8AF
1448 0x0003, // U+1F8B0...U+1F8BF
1449 0xffff, // U+1F900...U+1F90F
1450 0xffff, // U+1F910...U+1F91F
1451 0xffff, // U+1F920...U+1F92F
1452 0xffff, // U+1F930...U+1F93F
1453 0xffff, // U+1F940...U+1F94F
1454 0xffff, // U+1F950...U+1F95F
1455 0xffff, // U+1F960...U+1F96F
1456 0xffff, // U+1F970...U+1F97F
1457 0xffff, // U+1F980...U+1F98F
1458 0xffff, // U+1F990...U+1F99F
1459 0xffff, // U+1F9A0...U+1F9AF
1460 0xffff, // U+1F9B0...U+1F9BF
1461 0xffff, // U+1F9C0...U+1F9CF
1462 0xffff, // U+1F9D0...U+1F9DF
1463 0xffff, // U+1F9E0...U+1F9EF
1464 0xffff, // U+1F9F0...U+1F9FF
1465 0xffff, // U+1FA00...U+1FA0F
1466 0xffff, // U+1FA10...U+1FA1F
1467 0xffff, // U+1FA20...U+1FA2F
1468 0xffff, // U+1FA30...U+1FA3F
1469 0xffff, // U+1FA40...U+1FA4F
1470 0x000f, // U+1FA50...U+1FA5F
1471 0x3fff, // U+1FA60...U+1FA6F
1472 0x1fff, // U+1FA70...U+1FA7F
1473 0x01ff, // U+1FA80...U+1FA8F
1474 0xffff, // U+1FA90...U+1FA9F
1475 0xffff, // U+1FAA0...U+1FAAF
1476 0xbfff, // U+1FAB0...U+1FABF
1477 0xc03f, // U+1FAC0...U+1FACF
1478 0x0fff, // U+1FAD0...U+1FADF
1479 0x01ff, // U+1FAE0...U+1FAEF
1480 0x01ff, // U+1FAF0...U+1FAFF
1481 0xffff, // U+1FB00...U+1FB0F
1482 0xffff, // U+1FB10...U+1FB1F
1483 0xffff, // U+1FB20...U+1FB2F
1484 0xffff, // U+1FB30...U+1FB3F
1485 0xffff, // U+1FB40...U+1FB4F
1486 0xffff, // U+1FB50...U+1FB5F
1487 0xffff, // U+1FB60...U+1FB6F
1488 0xffff, // U+1FB70...U+1FB7F
1489 0xffff, // U+1FB80...U+1FB8F
1490 0xfff7, // U+1FB90...U+1FB9F
1491 0xffff, // U+1FBA0...U+1FBAF
1492 0xffff, // U+1FBB0...U+1FBBF
1493 0x07ff, // U+1FBC0...U+1FBCF
1494];
1495
1496pub(crate) fn is_ascii_punctuation(c: u8) -> bool {
1497 c < 128 && (PUNCT_MASKS_ASCII[(c / 16) as usize] & (1 << (c & 15))) != 0
1498}
1499
1500pub(crate) fn is_punctuation(c: char) -> bool {
1501 let cp = c as u32;
1502 if cp < 128 {
1503 return is_ascii_punctuation(cp as u8);
1504 }
1505 if cp > 0x1FBCA {
1506 return false;
1507 }
1508 let high = (cp / 16) as u16;
1509 match PUNCT_TAB.binary_search(&high) {
1510 Ok(index) => (PUNCT_MASKS[index] & (1 << (cp & 15))) != 0,
1511 _ => false,
1512 }
1513}
1514
1515#[cfg(test)]
1516mod tests {
1517 use super::{is_ascii_punctuation, is_punctuation};
1518
1519 #[test]
1520 fn test_ascii() {
1521 assert!(is_ascii_punctuation(b'!'));
1522 assert!(is_ascii_punctuation(b'@'));
1523 assert!(is_ascii_punctuation(b'~'));
1524 assert!(!is_ascii_punctuation(b' '));
1525 assert!(!is_ascii_punctuation(b'0'));
1526 assert!(!is_ascii_punctuation(b'A'));
1527 assert!(!is_ascii_punctuation(0xA1));
1528 }
1529
1530 #[test]
1531 fn test_unicode() {
1532 assert!(is_punctuation('~'));
1533 assert!(!is_punctuation(' '));
1534
1535 assert!(is_punctuation('\u{00A1}'));
1536 assert!(is_punctuation('\u{060C}'));
1537 assert!(is_punctuation('\u{FF65}'));
1538 assert!(is_punctuation('\u{1BC9F}'));
1539 assert!(!is_punctuation('\u{1BCA0}'));
1540 }
1541}