| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054 |
- #include "pocketpy/common/str.h"
- #include "pocketpy/objects/base.h"
- #include "pocketpy/pocketpy.h"
- // clang-format off
- const static c11_u32_range kEastAsianWidthRanges[] = {
- { 32, 126, "Na\0" },
- { 161, 161, "A\0" },
- { 162, 163, "Na\0" },
- { 164, 164, "A\0" },
- { 165, 166, "Na\0" },
- { 167, 168, "A\0" },
- { 170, 170, "A\0" },
- { 172, 172, "Na\0" },
- { 173, 174, "A\0" },
- { 175, 175, "Na\0" },
- { 176, 180, "A\0" },
- { 182, 186, "A\0" },
- { 188, 191, "A\0" },
- { 198, 198, "A\0" },
- { 208, 208, "A\0" },
- { 215, 216, "A\0" },
- { 222, 225, "A\0" },
- { 230, 230, "A\0" },
- { 232, 234, "A\0" },
- { 236, 237, "A\0" },
- { 240, 240, "A\0" },
- { 242, 243, "A\0" },
- { 247, 250, "A\0" },
- { 252, 252, "A\0" },
- { 254, 254, "A\0" },
- { 257, 257, "A\0" },
- { 273, 273, "A\0" },
- { 275, 275, "A\0" },
- { 283, 283, "A\0" },
- { 294, 295, "A\0" },
- { 299, 299, "A\0" },
- { 305, 307, "A\0" },
- { 312, 312, "A\0" },
- { 319, 322, "A\0" },
- { 324, 324, "A\0" },
- { 328, 331, "A\0" },
- { 333, 333, "A\0" },
- { 338, 339, "A\0" },
- { 358, 359, "A\0" },
- { 363, 363, "A\0" },
- { 462, 462, "A\0" },
- { 464, 464, "A\0" },
- { 466, 466, "A\0" },
- { 468, 468, "A\0" },
- { 470, 470, "A\0" },
- { 472, 472, "A\0" },
- { 474, 474, "A\0" },
- { 476, 476, "A\0" },
- { 593, 593, "A\0" },
- { 609, 609, "A\0" },
- { 708, 708, "A\0" },
- { 711, 711, "A\0" },
- { 713, 715, "A\0" },
- { 717, 717, "A\0" },
- { 720, 720, "A\0" },
- { 728, 731, "A\0" },
- { 733, 733, "A\0" },
- { 735, 735, "A\0" },
- { 768, 879, "A\0" },
- { 888, 889, "F\0" },
- { 896, 899, "F\0" },
- { 907, 907, "F\0" },
- { 909, 909, "F\0" },
- { 913, 929, "A\0" },
- { 930, 930, "F\0" },
- { 931, 937, "A\0" },
- { 945, 961, "A\0" },
- { 963, 969, "A\0" },
- { 1025, 1025, "A\0" },
- { 1040, 1103, "A\0" },
- { 1105, 1105, "A\0" },
- { 1328, 1328, "F\0" },
- { 1367, 1368, "F\0" },
- { 1419, 1420, "F\0" },
- { 1424, 1424, "F\0" },
- { 1480, 1487, "F\0" },
- { 1515, 1518, "F\0" },
- { 1525, 1535, "F\0" },
- { 1806, 1806, "F\0" },
- { 1867, 1868, "F\0" },
- { 1970, 1983, "F\0" },
- { 2043, 2044, "F\0" },
- { 2094, 2095, "F\0" },
- { 2111, 2111, "F\0" },
- { 2140, 2141, "F\0" },
- { 2143, 2143, "F\0" },
- { 2155, 2159, "F\0" },
- { 2191, 2191, "F\0" },
- { 2194, 2199, "F\0" },
- { 2436, 2436, "F\0" },
- { 2445, 2446, "F\0" },
- { 2449, 2450, "F\0" },
- { 2473, 2473, "F\0" },
- { 2481, 2481, "F\0" },
- { 2483, 2485, "F\0" },
- { 2490, 2491, "F\0" },
- { 2501, 2502, "F\0" },
- { 2505, 2506, "F\0" },
- { 2511, 2518, "F\0" },
- { 2520, 2523, "F\0" },
- { 2526, 2526, "F\0" },
- { 2532, 2533, "F\0" },
- { 2559, 2560, "F\0" },
- { 2564, 2564, "F\0" },
- { 2571, 2574, "F\0" },
- { 2577, 2578, "F\0" },
- { 2601, 2601, "F\0" },
- { 2609, 2609, "F\0" },
- { 2612, 2612, "F\0" },
- { 2615, 2615, "F\0" },
- { 2618, 2619, "F\0" },
- { 2621, 2621, "F\0" },
- { 2627, 2630, "F\0" },
- { 2633, 2634, "F\0" },
- { 2638, 2640, "F\0" },
- { 2642, 2648, "F\0" },
- { 2653, 2653, "F\0" },
- { 2655, 2661, "F\0" },
- { 2679, 2688, "F\0" },
- { 2692, 2692, "F\0" },
- { 2702, 2702, "F\0" },
- { 2706, 2706, "F\0" },
- { 2729, 2729, "F\0" },
- { 2737, 2737, "F\0" },
- { 2740, 2740, "F\0" },
- { 2746, 2747, "F\0" },
- { 2758, 2758, "F\0" },
- { 2762, 2762, "F\0" },
- { 2766, 2767, "F\0" },
- { 2769, 2783, "F\0" },
- { 2788, 2789, "F\0" },
- { 2802, 2808, "F\0" },
- { 2816, 2816, "F\0" },
- { 2820, 2820, "F\0" },
- { 2829, 2830, "F\0" },
- { 2833, 2834, "F\0" },
- { 2857, 2857, "F\0" },
- { 2865, 2865, "F\0" },
- { 2868, 2868, "F\0" },
- { 2874, 2875, "F\0" },
- { 2885, 2886, "F\0" },
- { 2889, 2890, "F\0" },
- { 2894, 2900, "F\0" },
- { 2904, 2907, "F\0" },
- { 2910, 2910, "F\0" },
- { 2916, 2917, "F\0" },
- { 2936, 2945, "F\0" },
- { 2948, 2948, "F\0" },
- { 2955, 2957, "F\0" },
- { 2961, 2961, "F\0" },
- { 2966, 2968, "F\0" },
- { 2971, 2971, "F\0" },
- { 2973, 2973, "F\0" },
- { 2976, 2978, "F\0" },
- { 2981, 2983, "F\0" },
- { 2987, 2989, "F\0" },
- { 3002, 3005, "F\0" },
- { 3011, 3013, "F\0" },
- { 3017, 3017, "F\0" },
- { 3022, 3023, "F\0" },
- { 3025, 3030, "F\0" },
- { 3032, 3045, "F\0" },
- { 3067, 3071, "F\0" },
- { 3085, 3085, "F\0" },
- { 3089, 3089, "F\0" },
- { 3113, 3113, "F\0" },
- { 3130, 3131, "F\0" },
- { 3141, 3141, "F\0" },
- { 3145, 3145, "F\0" },
- { 3150, 3156, "F\0" },
- { 3159, 3159, "F\0" },
- { 3163, 3164, "F\0" },
- { 3166, 3167, "F\0" },
- { 3172, 3173, "F\0" },
- { 3184, 3190, "F\0" },
- { 3213, 3213, "F\0" },
- { 3217, 3217, "F\0" },
- { 3241, 3241, "F\0" },
- { 3252, 3252, "F\0" },
- { 3258, 3259, "F\0" },
- { 3269, 3269, "F\0" },
- { 3273, 3273, "F\0" },
- { 3278, 3284, "F\0" },
- { 3287, 3292, "F\0" },
- { 3295, 3295, "F\0" },
- { 3300, 3301, "F\0" },
- { 3312, 3312, "F\0" },
- { 3315, 3327, "F\0" },
- { 3341, 3341, "F\0" },
- { 3345, 3345, "F\0" },
- { 3397, 3397, "F\0" },
- { 3401, 3401, "F\0" },
- { 3408, 3411, "F\0" },
- { 3428, 3429, "F\0" },
- { 3456, 3456, "F\0" },
- { 3460, 3460, "F\0" },
- { 3479, 3481, "F\0" },
- { 3506, 3506, "F\0" },
- { 3516, 3516, "F\0" },
- { 3518, 3519, "F\0" },
- { 3527, 3529, "F\0" },
- { 3531, 3534, "F\0" },
- { 3541, 3541, "F\0" },
- { 3543, 3543, "F\0" },
- { 3552, 3557, "F\0" },
- { 3568, 3569, "F\0" },
- { 3573, 3584, "F\0" },
- { 3643, 3646, "F\0" },
- { 3676, 3712, "F\0" },
- { 3715, 3715, "F\0" },
- { 3717, 3717, "F\0" },
- { 3723, 3723, "F\0" },
- { 3748, 3748, "F\0" },
- { 3750, 3750, "F\0" },
- { 3774, 3775, "F\0" },
- { 3781, 3781, "F\0" },
- { 3783, 3783, "F\0" },
- { 3790, 3791, "F\0" },
- { 3802, 3803, "F\0" },
- { 3808, 3839, "F\0" },
- { 3912, 3912, "F\0" },
- { 3949, 3952, "F\0" },
- { 3992, 3992, "F\0" },
- { 4029, 4029, "F\0" },
- { 4045, 4045, "F\0" },
- { 4059, 4095, "F\0" },
- { 4294, 4294, "F\0" },
- { 4296, 4300, "F\0" },
- { 4302, 4303, "F\0" },
- { 4352, 4447, "W\0" },
- { 4681, 4681, "F\0" },
- { 4686, 4687, "F\0" },
- { 4695, 4695, "F\0" },
- { 4697, 4697, "F\0" },
- { 4702, 4703, "F\0" },
- { 4745, 4745, "F\0" },
- { 4750, 4751, "F\0" },
- { 4785, 4785, "F\0" },
- { 4790, 4791, "F\0" },
- { 4799, 4799, "F\0" },
- { 4801, 4801, "F\0" },
- { 4806, 4807, "F\0" },
- { 4823, 4823, "F\0" },
- { 4881, 4881, "F\0" },
- { 4886, 4887, "F\0" },
- { 4955, 4956, "F\0" },
- { 4989, 4991, "F\0" },
- { 5018, 5023, "F\0" },
- { 5110, 5111, "F\0" },
- { 5118, 5119, "F\0" },
- { 5789, 5791, "F\0" },
- { 5881, 5887, "F\0" },
- { 5910, 5918, "F\0" },
- { 5943, 5951, "F\0" },
- { 5972, 5983, "F\0" },
- { 5997, 5997, "F\0" },
- { 6001, 6001, "F\0" },
- { 6004, 6015, "F\0" },
- { 6110, 6111, "F\0" },
- { 6122, 6127, "F\0" },
- { 6138, 6143, "F\0" },
- { 6170, 6175, "F\0" },
- { 6265, 6271, "F\0" },
- { 6315, 6319, "F\0" },
- { 6390, 6399, "F\0" },
- { 6431, 6431, "F\0" },
- { 6444, 6447, "F\0" },
- { 6460, 6463, "F\0" },
- { 6465, 6467, "F\0" },
- { 6510, 6511, "F\0" },
- { 6517, 6527, "F\0" },
- { 6572, 6575, "F\0" },
- { 6602, 6607, "F\0" },
- { 6619, 6621, "F\0" },
- { 6684, 6685, "F\0" },
- { 6751, 6751, "F\0" },
- { 6781, 6782, "F\0" },
- { 6794, 6799, "F\0" },
- { 6810, 6815, "F\0" },
- { 6830, 6831, "F\0" },
- { 6863, 6911, "F\0" },
- { 6989, 6991, "F\0" },
- { 7039, 7039, "F\0" },
- { 7156, 7163, "F\0" },
- { 7224, 7226, "F\0" },
- { 7242, 7244, "F\0" },
- { 7305, 7311, "F\0" },
- { 7355, 7356, "F\0" },
- { 7368, 7375, "F\0" },
- { 7419, 7423, "F\0" },
- { 7958, 7959, "F\0" },
- { 7966, 7967, "F\0" },
- { 8006, 8007, "F\0" },
- { 8014, 8015, "F\0" },
- { 8024, 8024, "F\0" },
- { 8026, 8026, "F\0" },
- { 8028, 8028, "F\0" },
- { 8030, 8030, "F\0" },
- { 8062, 8063, "F\0" },
- { 8117, 8117, "F\0" },
- { 8133, 8133, "F\0" },
- { 8148, 8149, "F\0" },
- { 8156, 8156, "F\0" },
- { 8176, 8177, "F\0" },
- { 8181, 8181, "F\0" },
- { 8191, 8191, "F\0" },
- { 8208, 8208, "A\0" },
- { 8211, 8214, "A\0" },
- { 8216, 8217, "A\0" },
- { 8220, 8221, "A\0" },
- { 8224, 8226, "A\0" },
- { 8228, 8231, "A\0" },
- { 8240, 8240, "A\0" },
- { 8242, 8243, "A\0" },
- { 8245, 8245, "A\0" },
- { 8251, 8251, "A\0" },
- { 8254, 8254, "A\0" },
- { 8293, 8293, "F\0" },
- { 8306, 8307, "F\0" },
- { 8308, 8308, "A\0" },
- { 8319, 8319, "A\0" },
- { 8321, 8324, "A\0" },
- { 8335, 8335, "F\0" },
- { 8349, 8351, "F\0" },
- { 8361, 8361, "H\0" },
- { 8364, 8364, "A\0" },
- { 8385, 8399, "F\0" },
- { 8433, 8447, "F\0" },
- { 8451, 8451, "A\0" },
- { 8453, 8453, "A\0" },
- { 8457, 8457, "A\0" },
- { 8467, 8467, "A\0" },
- { 8470, 8470, "A\0" },
- { 8481, 8482, "A\0" },
- { 8486, 8486, "A\0" },
- { 8491, 8491, "A\0" },
- { 8531, 8532, "A\0" },
- { 8539, 8542, "A\0" },
- { 8544, 8555, "A\0" },
- { 8560, 8569, "A\0" },
- { 8585, 8585, "A\0" },
- { 8588, 8591, "F\0" },
- { 8592, 8601, "A\0" },
- { 8632, 8633, "A\0" },
- { 8658, 8658, "A\0" },
- { 8660, 8660, "A\0" },
- { 8679, 8679, "A\0" },
- { 8704, 8704, "A\0" },
- { 8706, 8707, "A\0" },
- { 8711, 8712, "A\0" },
- { 8715, 8715, "A\0" },
- { 8719, 8719, "A\0" },
- { 8721, 8721, "A\0" },
- { 8725, 8725, "A\0" },
- { 8730, 8730, "A\0" },
- { 8733, 8736, "A\0" },
- { 8739, 8739, "A\0" },
- { 8741, 8741, "A\0" },
- { 8743, 8748, "A\0" },
- { 8750, 8750, "A\0" },
- { 8756, 8759, "A\0" },
- { 8764, 8765, "A\0" },
- { 8776, 8776, "A\0" },
- { 8780, 8780, "A\0" },
- { 8786, 8786, "A\0" },
- { 8800, 8801, "A\0" },
- { 8804, 8807, "A\0" },
- { 8810, 8811, "A\0" },
- { 8814, 8815, "A\0" },
- { 8834, 8835, "A\0" },
- { 8838, 8839, "A\0" },
- { 8853, 8853, "A\0" },
- { 8857, 8857, "A\0" },
- { 8869, 8869, "A\0" },
- { 8895, 8895, "A\0" },
- { 8978, 8978, "A\0" },
- { 8986, 8987, "W\0" },
- { 9001, 9002, "W\0" },
- { 9193, 9196, "W\0" },
- { 9200, 9200, "W\0" },
- { 9203, 9203, "W\0" },
- { 9255, 9279, "F\0" },
- { 9291, 9311, "F\0" },
- { 9312, 9449, "A\0" },
- { 9451, 9547, "A\0" },
- { 9552, 9587, "A\0" },
- { 9600, 9615, "A\0" },
- { 9618, 9621, "A\0" },
- { 9632, 9633, "A\0" },
- { 9635, 9641, "A\0" },
- { 9650, 9651, "A\0" },
- { 9654, 9655, "A\0" },
- { 9660, 9661, "A\0" },
- { 9664, 9665, "A\0" },
- { 9670, 9672, "A\0" },
- { 9675, 9675, "A\0" },
- { 9678, 9681, "A\0" },
- { 9698, 9701, "A\0" },
- { 9711, 9711, "A\0" },
- { 9725, 9726, "W\0" },
- { 9733, 9734, "A\0" },
- { 9737, 9737, "A\0" },
- { 9742, 9743, "A\0" },
- { 9748, 9749, "W\0" },
- { 9756, 9756, "A\0" },
- { 9758, 9758, "A\0" },
- { 9792, 9792, "A\0" },
- { 9794, 9794, "A\0" },
- { 9800, 9811, "W\0" },
- { 9824, 9825, "A\0" },
- { 9827, 9829, "A\0" },
- { 9831, 9834, "A\0" },
- { 9836, 9837, "A\0" },
- { 9839, 9839, "A\0" },
- { 9855, 9855, "W\0" },
- { 9875, 9875, "W\0" },
- { 9886, 9887, "A\0" },
- { 9889, 9889, "W\0" },
- { 9898, 9899, "W\0" },
- { 9917, 9918, "W\0" },
- { 9919, 9919, "A\0" },
- { 9924, 9925, "W\0" },
- { 9926, 9933, "A\0" },
- { 9934, 9934, "W\0" },
- { 9935, 9939, "A\0" },
- { 9940, 9940, "W\0" },
- { 9941, 9953, "A\0" },
- { 9955, 9955, "A\0" },
- { 9960, 9961, "A\0" },
- { 9962, 9962, "W\0" },
- { 9963, 9969, "A\0" },
- { 9970, 9971, "W\0" },
- { 9972, 9972, "A\0" },
- { 9973, 9973, "W\0" },
- { 9974, 9977, "A\0" },
- { 9978, 9978, "W\0" },
- { 9979, 9980, "A\0" },
- { 9981, 9981, "W\0" },
- { 9982, 9983, "A\0" },
- { 9989, 9989, "W\0" },
- { 9994, 9995, "W\0" },
- { 10024, 10024, "W\0" },
- { 10045, 10045, "A\0" },
- { 10060, 10060, "W\0" },
- { 10062, 10062, "W\0" },
- { 10067, 10069, "W\0" },
- { 10071, 10071, "W\0" },
- { 10102, 10111, "A\0" },
- { 10133, 10135, "W\0" },
- { 10160, 10160, "W\0" },
- { 10175, 10175, "W\0" },
- { 10214, 10221, "Na\0" },
- { 10629, 10630, "Na\0" },
- { 11035, 11036, "W\0" },
- { 11088, 11088, "W\0" },
- { 11093, 11093, "W\0" },
- { 11094, 11097, "A\0" },
- { 11124, 11125, "F\0" },
- { 11158, 11158, "F\0" },
- { 11508, 11512, "F\0" },
- { 11558, 11558, "F\0" },
- { 11560, 11564, "F\0" },
- { 11566, 11567, "F\0" },
- { 11624, 11630, "F\0" },
- { 11633, 11646, "F\0" },
- { 11671, 11679, "F\0" },
- { 11687, 11687, "F\0" },
- { 11695, 11695, "F\0" },
- { 11703, 11703, "F\0" },
- { 11711, 11711, "F\0" },
- { 11719, 11719, "F\0" },
- { 11727, 11727, "F\0" },
- { 11735, 11735, "F\0" },
- { 11743, 11743, "F\0" },
- { 11870, 11903, "F\0" },
- { 11904, 11929, "W\0" },
- { 11930, 11930, "F\0" },
- { 11931, 12019, "W\0" },
- { 12020, 12031, "F\0" },
- { 12032, 12245, "W\0" },
- { 12246, 12271, "F\0" },
- { 12272, 12283, "W\0" },
- { 12284, 12288, "F\0" },
- { 12289, 12350, "W\0" },
- { 12352, 12352, "F\0" },
- { 12353, 12438, "W\0" },
- { 12439, 12440, "F\0" },
- { 12441, 12543, "W\0" },
- { 12544, 12548, "F\0" },
- { 12549, 12591, "W\0" },
- { 12592, 12592, "F\0" },
- { 12593, 12686, "W\0" },
- { 12687, 12687, "F\0" },
- { 12688, 12771, "W\0" },
- { 12772, 12783, "F\0" },
- { 12784, 12830, "W\0" },
- { 12831, 12831, "F\0" },
- { 12832, 12871, "W\0" },
- { 12872, 12879, "A\0" },
- { 12880, 19903, "W\0" },
- { 19968, 42124, "W\0" },
- { 42125, 42127, "F\0" },
- { 42128, 42182, "W\0" },
- { 42183, 42191, "F\0" },
- { 42540, 42559, "F\0" },
- { 42744, 42751, "F\0" },
- { 42955, 42959, "F\0" },
- { 42962, 42962, "F\0" },
- { 42964, 42964, "F\0" },
- { 42970, 42993, "F\0" },
- { 43053, 43055, "F\0" },
- { 43066, 43071, "F\0" },
- { 43128, 43135, "F\0" },
- { 43206, 43213, "F\0" },
- { 43226, 43231, "F\0" },
- { 43348, 43358, "F\0" },
- { 43360, 43388, "W\0" },
- { 43389, 43391, "F\0" },
- { 43470, 43470, "F\0" },
- { 43482, 43485, "F\0" },
- { 43519, 43519, "F\0" },
- { 43575, 43583, "F\0" },
- { 43598, 43599, "F\0" },
- { 43610, 43611, "F\0" },
- { 43715, 43738, "F\0" },
- { 43767, 43776, "F\0" },
- { 43783, 43784, "F\0" },
- { 43791, 43792, "F\0" },
- { 43799, 43807, "F\0" },
- { 43815, 43815, "F\0" },
- { 43823, 43823, "F\0" },
- { 43884, 43887, "F\0" },
- { 44014, 44015, "F\0" },
- { 44026, 44031, "F\0" },
- { 44032, 55203, "W\0" },
- { 55204, 55215, "F\0" },
- { 55239, 55242, "F\0" },
- { 55292, 55295, "F\0" },
- { 57344, 63743, "A\0" },
- { 63744, 64109, "W\0" },
- { 64110, 64111, "F\0" },
- { 64112, 64217, "W\0" },
- { 64218, 64255, "F\0" },
- { 64263, 64274, "F\0" },
- { 64280, 64284, "F\0" },
- { 64311, 64311, "F\0" },
- { 64317, 64317, "F\0" },
- { 64319, 64319, "F\0" },
- { 64322, 64322, "F\0" },
- { 64325, 64325, "F\0" },
- { 64451, 64466, "F\0" },
- { 64912, 64913, "F\0" },
- { 64968, 64974, "F\0" },
- { 64976, 65007, "F\0" },
- { 65024, 65039, "A\0" },
- { 65040, 65049, "W\0" },
- { 65050, 65055, "F\0" },
- { 65072, 65106, "W\0" },
- { 65107, 65107, "F\0" },
- { 65108, 65126, "W\0" },
- { 65127, 65127, "F\0" },
- { 65128, 65131, "W\0" },
- { 65132, 65135, "F\0" },
- { 65141, 65141, "F\0" },
- { 65277, 65278, "F\0" },
- { 65280, 65376, "F\0" },
- { 65377, 65470, "H\0" },
- { 65471, 65473, "F\0" },
- { 65474, 65479, "H\0" },
- { 65480, 65481, "F\0" },
- { 65482, 65487, "H\0" },
- { 65488, 65489, "F\0" },
- { 65490, 65495, "H\0" },
- { 65496, 65497, "F\0" },
- { 65498, 65500, "H\0" },
- { 65501, 65511, "F\0" },
- { 65512, 65518, "H\0" },
- { 65519, 65528, "F\0" },
- { 65533, 65533, "A\0" },
- { 65534, 65535, "F\0" },
- { 65548, 65548, "F\0" },
- { 65575, 65575, "F\0" },
- { 65595, 65595, "F\0" },
- { 65598, 65598, "F\0" },
- { 65614, 65615, "F\0" },
- { 65630, 65663, "F\0" },
- { 65787, 65791, "F\0" },
- { 65795, 65798, "F\0" },
- { 65844, 65846, "F\0" },
- { 65935, 65935, "F\0" },
- { 65949, 65951, "F\0" },
- { 65953, 65999, "F\0" },
- { 66046, 66175, "F\0" },
- { 66205, 66207, "F\0" },
- { 66257, 66271, "F\0" },
- { 66300, 66303, "F\0" },
- { 66340, 66348, "F\0" },
- { 66379, 66383, "F\0" },
- { 66427, 66431, "F\0" },
- { 66462, 66462, "F\0" },
- { 66500, 66503, "F\0" },
- { 66518, 66559, "F\0" },
- { 66718, 66719, "F\0" },
- { 66730, 66735, "F\0" },
- { 66772, 66775, "F\0" },
- { 66812, 66815, "F\0" },
- { 66856, 66863, "F\0" },
- { 66916, 66926, "F\0" },
- { 66939, 66939, "F\0" },
- { 66955, 66955, "F\0" },
- { 66963, 66963, "F\0" },
- { 66966, 66966, "F\0" },
- { 66978, 66978, "F\0" },
- { 66994, 66994, "F\0" },
- { 67002, 67002, "F\0" },
- { 67005, 67071, "F\0" },
- { 67383, 67391, "F\0" },
- { 67414, 67423, "F\0" },
- { 67432, 67455, "F\0" },
- { 67462, 67462, "F\0" },
- { 67505, 67505, "F\0" },
- { 67515, 67583, "F\0" },
- { 67590, 67591, "F\0" },
- { 67593, 67593, "F\0" },
- { 67638, 67638, "F\0" },
- { 67641, 67643, "F\0" },
- { 67645, 67646, "F\0" },
- { 67670, 67670, "F\0" },
- { 67743, 67750, "F\0" },
- { 67760, 67807, "F\0" },
- { 67827, 67827, "F\0" },
- { 67830, 67834, "F\0" },
- { 67868, 67870, "F\0" },
- { 67898, 67902, "F\0" },
- { 67904, 67967, "F\0" },
- { 68024, 68027, "F\0" },
- { 68048, 68049, "F\0" },
- { 68100, 68100, "F\0" },
- { 68103, 68107, "F\0" },
- { 68116, 68116, "F\0" },
- { 68120, 68120, "F\0" },
- { 68150, 68151, "F\0" },
- { 68155, 68158, "F\0" },
- { 68169, 68175, "F\0" },
- { 68185, 68191, "F\0" },
- { 68256, 68287, "F\0" },
- { 68327, 68330, "F\0" },
- { 68343, 68351, "F\0" },
- { 68406, 68408, "F\0" },
- { 68438, 68439, "F\0" },
- { 68467, 68471, "F\0" },
- { 68498, 68504, "F\0" },
- { 68509, 68520, "F\0" },
- { 68528, 68607, "F\0" },
- { 68681, 68735, "F\0" },
- { 68787, 68799, "F\0" },
- { 68851, 68857, "F\0" },
- { 68904, 68911, "F\0" },
- { 68922, 69215, "F\0" },
- { 69247, 69247, "F\0" },
- { 69290, 69290, "F\0" },
- { 69294, 69295, "F\0" },
- { 69298, 69375, "F\0" },
- { 69416, 69423, "F\0" },
- { 69466, 69487, "F\0" },
- { 69514, 69551, "F\0" },
- { 69580, 69599, "F\0" },
- { 69623, 69631, "F\0" },
- { 69710, 69713, "F\0" },
- { 69750, 69758, "F\0" },
- { 69827, 69836, "F\0" },
- { 69838, 69839, "F\0" },
- { 69865, 69871, "F\0" },
- { 69882, 69887, "F\0" },
- { 69941, 69941, "F\0" },
- { 69960, 69967, "F\0" },
- { 70007, 70015, "F\0" },
- { 70112, 70112, "F\0" },
- { 70133, 70143, "F\0" },
- { 70162, 70162, "F\0" },
- { 70207, 70271, "F\0" },
- { 70279, 70279, "F\0" },
- { 70281, 70281, "F\0" },
- { 70286, 70286, "F\0" },
- { 70302, 70302, "F\0" },
- { 70314, 70319, "F\0" },
- { 70379, 70383, "F\0" },
- { 70394, 70399, "F\0" },
- { 70404, 70404, "F\0" },
- { 70413, 70414, "F\0" },
- { 70417, 70418, "F\0" },
- { 70441, 70441, "F\0" },
- { 70449, 70449, "F\0" },
- { 70452, 70452, "F\0" },
- { 70458, 70458, "F\0" },
- { 70469, 70470, "F\0" },
- { 70473, 70474, "F\0" },
- { 70478, 70479, "F\0" },
- { 70481, 70486, "F\0" },
- { 70488, 70492, "F\0" },
- { 70500, 70501, "F\0" },
- { 70509, 70511, "F\0" },
- { 70517, 70655, "F\0" },
- { 70748, 70748, "F\0" },
- { 70754, 70783, "F\0" },
- { 70856, 70863, "F\0" },
- { 70874, 71039, "F\0" },
- { 71094, 71095, "F\0" },
- { 71134, 71167, "F\0" },
- { 71237, 71247, "F\0" },
- { 71258, 71263, "F\0" },
- { 71277, 71295, "F\0" },
- { 71354, 71359, "F\0" },
- { 71370, 71423, "F\0" },
- { 71451, 71452, "F\0" },
- { 71468, 71471, "F\0" },
- { 71495, 71679, "F\0" },
- { 71740, 71839, "F\0" },
- { 71923, 71934, "F\0" },
- { 71943, 71944, "F\0" },
- { 71946, 71947, "F\0" },
- { 71956, 71956, "F\0" },
- { 71959, 71959, "F\0" },
- { 71990, 71990, "F\0" },
- { 71993, 71994, "F\0" },
- { 72007, 72015, "F\0" },
- { 72026, 72095, "F\0" },
- { 72104, 72105, "F\0" },
- { 72152, 72153, "F\0" },
- { 72165, 72191, "F\0" },
- { 72264, 72271, "F\0" },
- { 72355, 72367, "F\0" },
- { 72441, 72703, "F\0" },
- { 72713, 72713, "F\0" },
- { 72759, 72759, "F\0" },
- { 72774, 72783, "F\0" },
- { 72813, 72815, "F\0" },
- { 72848, 72849, "F\0" },
- { 72872, 72872, "F\0" },
- { 72887, 72959, "F\0" },
- { 72967, 72967, "F\0" },
- { 72970, 72970, "F\0" },
- { 73015, 73017, "F\0" },
- { 73019, 73019, "F\0" },
- { 73022, 73022, "F\0" },
- { 73032, 73039, "F\0" },
- { 73050, 73055, "F\0" },
- { 73062, 73062, "F\0" },
- { 73065, 73065, "F\0" },
- { 73103, 73103, "F\0" },
- { 73106, 73106, "F\0" },
- { 73113, 73119, "F\0" },
- { 73130, 73439, "F\0" },
- { 73465, 73647, "F\0" },
- { 73649, 73663, "F\0" },
- { 73714, 73726, "F\0" },
- { 74650, 74751, "F\0" },
- { 74863, 74863, "F\0" },
- { 74869, 74879, "F\0" },
- { 75076, 77711, "F\0" },
- { 77811, 77823, "F\0" },
- { 78895, 78895, "F\0" },
- { 78905, 82943, "F\0" },
- { 83527, 92159, "F\0" },
- { 92729, 92735, "F\0" },
- { 92767, 92767, "F\0" },
- { 92778, 92781, "F\0" },
- { 92863, 92863, "F\0" },
- { 92874, 92879, "F\0" },
- { 92910, 92911, "F\0" },
- { 92918, 92927, "F\0" },
- { 92998, 93007, "F\0" },
- { 93018, 93018, "F\0" },
- { 93026, 93026, "F\0" },
- { 93048, 93052, "F\0" },
- { 93072, 93759, "F\0" },
- { 93851, 93951, "F\0" },
- { 94027, 94030, "F\0" },
- { 94088, 94094, "F\0" },
- { 94112, 94175, "F\0" },
- { 94176, 94180, "W\0" },
- { 94181, 94191, "F\0" },
- { 94192, 94193, "W\0" },
- { 94194, 94207, "F\0" },
- { 94208, 100343, "W\0" },
- { 100344, 100351, "F\0" },
- { 100352, 101589, "W\0" },
- { 101590, 101631, "F\0" },
- { 101632, 101640, "W\0" },
- { 101641, 110575, "F\0" },
- { 110576, 110579, "W\0" },
- { 110580, 110580, "F\0" },
- { 110581, 110587, "W\0" },
- { 110588, 110588, "F\0" },
- { 110589, 110590, "W\0" },
- { 110591, 110591, "F\0" },
- { 110592, 110882, "W\0" },
- { 110883, 110927, "F\0" },
- { 110928, 110930, "W\0" },
- { 110931, 110947, "F\0" },
- { 110948, 110951, "W\0" },
- { 110952, 110959, "F\0" },
- { 110960, 111355, "W\0" },
- { 111356, 113663, "F\0" },
- { 113771, 113775, "F\0" },
- { 113789, 113791, "F\0" },
- { 113801, 113807, "F\0" },
- { 113818, 113819, "F\0" },
- { 113828, 118527, "F\0" },
- { 118574, 118575, "F\0" },
- { 118599, 118607, "F\0" },
- { 118724, 118783, "F\0" },
- { 119030, 119039, "F\0" },
- { 119079, 119080, "F\0" },
- { 119275, 119295, "F\0" },
- { 119366, 119519, "F\0" },
- { 119540, 119551, "F\0" },
- { 119639, 119647, "F\0" },
- { 119673, 119807, "F\0" },
- { 119893, 119893, "F\0" },
- { 119965, 119965, "F\0" },
- { 119968, 119969, "F\0" },
- { 119971, 119972, "F\0" },
- { 119975, 119976, "F\0" },
- { 119981, 119981, "F\0" },
- { 119994, 119994, "F\0" },
- { 119996, 119996, "F\0" },
- { 120004, 120004, "F\0" },
- { 120070, 120070, "F\0" },
- { 120075, 120076, "F\0" },
- { 120085, 120085, "F\0" },
- { 120093, 120093, "F\0" },
- { 120122, 120122, "F\0" },
- { 120127, 120127, "F\0" },
- { 120133, 120133, "F\0" },
- { 120135, 120137, "F\0" },
- { 120145, 120145, "F\0" },
- { 120486, 120487, "F\0" },
- { 120780, 120781, "F\0" },
- { 121484, 121498, "F\0" },
- { 121504, 121504, "F\0" },
- { 121520, 122623, "F\0" },
- { 122655, 122879, "F\0" },
- { 122887, 122887, "F\0" },
- { 122905, 122906, "F\0" },
- { 122914, 122914, "F\0" },
- { 122917, 122917, "F\0" },
- { 122923, 123135, "F\0" },
- { 123181, 123183, "F\0" },
- { 123198, 123199, "F\0" },
- { 123210, 123213, "F\0" },
- { 123216, 123535, "F\0" },
- { 123567, 123583, "F\0" },
- { 123642, 123646, "F\0" },
- { 123648, 124895, "F\0" },
- { 124903, 124903, "F\0" },
- { 124908, 124908, "F\0" },
- { 124911, 124911, "F\0" },
- { 124927, 124927, "F\0" },
- { 125125, 125126, "F\0" },
- { 125143, 125183, "F\0" },
- { 125260, 125263, "F\0" },
- { 125274, 125277, "F\0" },
- { 125280, 126064, "F\0" },
- { 126133, 126208, "F\0" },
- { 126270, 126463, "F\0" },
- { 126468, 126468, "F\0" },
- { 126496, 126496, "F\0" },
- { 126499, 126499, "F\0" },
- { 126501, 126502, "F\0" },
- { 126504, 126504, "F\0" },
- { 126515, 126515, "F\0" },
- { 126520, 126520, "F\0" },
- { 126522, 126522, "F\0" },
- { 126524, 126529, "F\0" },
- { 126531, 126534, "F\0" },
- { 126536, 126536, "F\0" },
- { 126538, 126538, "F\0" },
- { 126540, 126540, "F\0" },
- { 126544, 126544, "F\0" },
- { 126547, 126547, "F\0" },
- { 126549, 126550, "F\0" },
- { 126552, 126552, "F\0" },
- { 126554, 126554, "F\0" },
- { 126556, 126556, "F\0" },
- { 126558, 126558, "F\0" },
- { 126560, 126560, "F\0" },
- { 126563, 126563, "F\0" },
- { 126565, 126566, "F\0" },
- { 126571, 126571, "F\0" },
- { 126579, 126579, "F\0" },
- { 126584, 126584, "F\0" },
- { 126589, 126589, "F\0" },
- { 126591, 126591, "F\0" },
- { 126602, 126602, "F\0" },
- { 126620, 126624, "F\0" },
- { 126628, 126628, "F\0" },
- { 126634, 126634, "F\0" },
- { 126652, 126703, "F\0" },
- { 126706, 126975, "F\0" },
- { 126980, 126980, "W\0" },
- { 127020, 127023, "F\0" },
- { 127124, 127135, "F\0" },
- { 127151, 127152, "F\0" },
- { 127168, 127168, "F\0" },
- { 127183, 127183, "W\0" },
- { 127184, 127184, "F\0" },
- { 127222, 127231, "F\0" },
- { 127232, 127242, "A\0" },
- { 127248, 127277, "A\0" },
- { 127280, 127337, "A\0" },
- { 127344, 127373, "A\0" },
- { 127374, 127374, "W\0" },
- { 127375, 127376, "A\0" },
- { 127377, 127386, "W\0" },
- { 127387, 127404, "A\0" },
- { 127406, 127461, "F\0" },
- { 127488, 127490, "W\0" },
- { 127491, 127503, "F\0" },
- { 127504, 127547, "W\0" },
- { 127548, 127551, "F\0" },
- { 127552, 127560, "W\0" },
- { 127561, 127567, "F\0" },
- { 127568, 127569, "W\0" },
- { 127570, 127583, "F\0" },
- { 127584, 127589, "W\0" },
- { 127590, 127743, "F\0" },
- { 127744, 127776, "W\0" },
- { 127789, 127797, "W\0" },
- { 127799, 127868, "W\0" },
- { 127870, 127891, "W\0" },
- { 127904, 127946, "W\0" },
- { 127951, 127955, "W\0" },
- { 127968, 127984, "W\0" },
- { 127988, 127988, "W\0" },
- { 127992, 128062, "W\0" },
- { 128064, 128064, "W\0" },
- { 128066, 128252, "W\0" },
- { 128255, 128317, "W\0" },
- { 128331, 128334, "W\0" },
- { 128336, 128359, "W\0" },
- { 128378, 128378, "W\0" },
- { 128405, 128406, "W\0" },
- { 128420, 128420, "W\0" },
- { 128507, 128591, "W\0" },
- { 128640, 128709, "W\0" },
- { 128716, 128716, "W\0" },
- { 128720, 128722, "W\0" },
- { 128725, 128727, "W\0" },
- { 128728, 128732, "F\0" },
- { 128733, 128735, "W\0" },
- { 128747, 128748, "W\0" },
- { 128749, 128751, "F\0" },
- { 128756, 128764, "W\0" },
- { 128765, 128767, "F\0" },
- { 128884, 128895, "F\0" },
- { 128985, 128991, "F\0" },
- { 128992, 129003, "W\0" },
- { 129004, 129007, "F\0" },
- { 129008, 129008, "W\0" },
- { 129009, 129023, "F\0" },
- { 129036, 129039, "F\0" },
- { 129096, 129103, "F\0" },
- { 129114, 129119, "F\0" },
- { 129160, 129167, "F\0" },
- { 129198, 129199, "F\0" },
- { 129202, 129279, "F\0" },
- { 129292, 129338, "W\0" },
- { 129340, 129349, "W\0" },
- { 129351, 129535, "W\0" },
- { 129620, 129631, "F\0" },
- { 129646, 129647, "F\0" },
- { 129648, 129652, "W\0" },
- { 129653, 129655, "F\0" },
- { 129656, 129660, "W\0" },
- { 129661, 129663, "F\0" },
- { 129664, 129670, "W\0" },
- { 129671, 129679, "F\0" },
- { 129680, 129708, "W\0" },
- { 129709, 129711, "F\0" },
- { 129712, 129722, "W\0" },
- { 129723, 129727, "F\0" },
- { 129728, 129733, "W\0" },
- { 129734, 129743, "F\0" },
- { 129744, 129753, "W\0" },
- { 129754, 129759, "F\0" },
- { 129760, 129767, "W\0" },
- { 129768, 129775, "F\0" },
- { 129776, 129782, "W\0" },
- { 129783, 129791, "F\0" },
- { 129939, 129939, "F\0" },
- { 129995, 130031, "F\0" },
- { 130042, 131071, "F\0" },
- { 131072, 173791, "W\0" },
- { 173792, 173823, "F\0" },
- { 173824, 177976, "W\0" },
- { 177977, 177983, "F\0" },
- { 177984, 178205, "W\0" },
- { 178206, 178207, "F\0" },
- { 178208, 183969, "W\0" },
- { 183970, 183983, "F\0" },
- { 183984, 191456, "W\0" },
- { 191457, 194559, "F\0" },
- { 194560, 195101, "W\0" },
- { 195102, 196607, "F\0" },
- { 196608, 201546, "W\0" },
- { 201547, 917504, "F\0" },
- { 917506, 917535, "F\0" },
- { 917632, 917759, "F\0" },
- { 917760, 917999, "A\0" },
- { 918000, 983039, "F\0" },
- { 983040, 1048573, "A\0" },
- { 1048574, 1048575, "F\0" },
- { 1048576, 1114109, "A\0" },
- { 1114110, 1114111, "F\0" },
- };
- // clang-format on
- const char* c11__u32_east_asian_width(int c) {
- const char* data =
- c11__search_u32_ranges(c,
- kEastAsianWidthRanges,
- sizeof(kEastAsianWidthRanges) / sizeof(c11_u32_range));
- if(data == NULL) return "N";
- return data;
- }
- static bool unicodedata_east_asian_width(int argc, py_Ref argv) {
- PY_CHECK_ARGC(1);
- PY_CHECK_ARG_TYPE(0, tp_str);
- c11_sv sv = py_tosv(py_arg(0));
- if(c11_sv__u8_length(sv) != 1) {
- return TypeError("east_asian_width() expected a character, but string of length %d found",
- c11_sv__u8_length(sv));
- }
- int u8bytes = c11__u8_header(sv.data[0], true);
- if(u8bytes == 0) return ValueError("invalid utf-8 char: %c", sv.data[0]);
- int value = c11__u8_value(u8bytes, sv.data);
- const char* width = c11__u32_east_asian_width(value);
- py_newstr(py_retval(), width);
- return true;
- }
- void pk__add_module_unicodedata() {
- py_Ref mod = py_newmodule("unicodedata");
- py_bindfunc(mod, "east_asian_width", unicodedata_east_asian_width);
- }
|