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}