UNPKG

meaw

Version:

Utilities for Unicode East Asian Width

690 lines (686 loc) 15.4 kB
"use strict"; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __hasOwnProp = Object.prototype.hasOwnProperty; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; __export(index_exports, { computeWidth: () => computeWidth, eawVersion: () => version, getEAW: () => getEAW, getEAWOfCodePoint: () => getEAWOfCodePoint }); module.exports = __toCommonJS(index_exports); // src/defs.ts var defs = [ [0, 31, "N"], [32, 126, "Na"], [127, 160, "N"], [161, 161, "A"], [162, 163, "Na"], [164, 164, "A"], [165, 166, "Na"], [167, 168, "A"], [169, 169, "N"], [170, 170, "A"], [171, 171, "N"], [172, 172, "Na"], [173, 174, "A"], [175, 175, "Na"], [176, 180, "A"], [181, 181, "N"], [182, 186, "A"], [187, 187, "N"], [188, 191, "A"], [192, 197, "N"], [198, 198, "A"], [199, 207, "N"], [208, 208, "A"], [209, 214, "N"], [215, 216, "A"], [217, 221, "N"], [222, 225, "A"], [226, 229, "N"], [230, 230, "A"], [231, 231, "N"], [232, 234, "A"], [235, 235, "N"], [236, 237, "A"], [238, 239, "N"], [240, 240, "A"], [241, 241, "N"], [242, 243, "A"], [244, 246, "N"], [247, 250, "A"], [251, 251, "N"], [252, 252, "A"], [253, 253, "N"], [254, 254, "A"], [255, 256, "N"], [257, 257, "A"], [258, 272, "N"], [273, 273, "A"], [274, 274, "N"], [275, 275, "A"], [276, 282, "N"], [283, 283, "A"], [284, 293, "N"], [294, 295, "A"], [296, 298, "N"], [299, 299, "A"], [300, 304, "N"], [305, 307, "A"], [308, 311, "N"], [312, 312, "A"], [313, 318, "N"], [319, 322, "A"], [323, 323, "N"], [324, 324, "A"], [325, 327, "N"], [328, 331, "A"], [332, 332, "N"], [333, 333, "A"], [334, 337, "N"], [338, 339, "A"], [340, 357, "N"], [358, 359, "A"], [360, 362, "N"], [363, 363, "A"], [364, 461, "N"], [462, 462, "A"], [463, 463, "N"], [464, 464, "A"], [465, 465, "N"], [466, 466, "A"], [467, 467, "N"], [468, 468, "A"], [469, 469, "N"], [470, 470, "A"], [471, 471, "N"], [472, 472, "A"], [473, 473, "N"], [474, 474, "A"], [475, 475, "N"], [476, 476, "A"], [477, 592, "N"], [593, 593, "A"], [594, 608, "N"], [609, 609, "A"], [610, 707, "N"], [708, 708, "A"], [709, 710, "N"], [711, 711, "A"], [712, 712, "N"], [713, 715, "A"], [716, 716, "N"], [717, 717, "A"], [718, 719, "N"], [720, 720, "A"], [721, 727, "N"], [728, 731, "A"], [732, 732, "N"], [733, 733, "A"], [734, 734, "N"], [735, 735, "A"], [736, 767, "N"], [768, 879, "A"], [880, 912, "N"], [913, 929, "A"], [930, 930, "N"], [931, 937, "A"], [938, 944, "N"], [945, 961, "A"], [962, 962, "N"], [963, 969, "A"], [970, 1024, "N"], [1025, 1025, "A"], [1026, 1039, "N"], [1040, 1103, "A"], [1104, 1104, "N"], [1105, 1105, "A"], [1106, 4351, "N"], [4352, 4447, "W"], [4448, 8207, "N"], [8208, 8208, "A"], [8209, 8210, "N"], [8211, 8214, "A"], [8215, 8215, "N"], [8216, 8217, "A"], [8218, 8219, "N"], [8220, 8221, "A"], [8222, 8223, "N"], [8224, 8226, "A"], [8227, 8227, "N"], [8228, 8231, "A"], [8232, 8239, "N"], [8240, 8240, "A"], [8241, 8241, "N"], [8242, 8243, "A"], [8244, 8244, "N"], [8245, 8245, "A"], [8246, 8250, "N"], [8251, 8251, "A"], [8252, 8253, "N"], [8254, 8254, "A"], [8255, 8307, "N"], [8308, 8308, "A"], [8309, 8318, "N"], [8319, 8319, "A"], [8320, 8320, "N"], [8321, 8324, "A"], [8325, 8360, "N"], [8361, 8361, "H"], [8362, 8363, "N"], [8364, 8364, "A"], [8365, 8450, "N"], [8451, 8451, "A"], [8452, 8452, "N"], [8453, 8453, "A"], [8454, 8456, "N"], [8457, 8457, "A"], [8458, 8466, "N"], [8467, 8467, "A"], [8468, 8469, "N"], [8470, 8470, "A"], [8471, 8480, "N"], [8481, 8482, "A"], [8483, 8485, "N"], [8486, 8486, "A"], [8487, 8490, "N"], [8491, 8491, "A"], [8492, 8530, "N"], [8531, 8532, "A"], [8533, 8538, "N"], [8539, 8542, "A"], [8543, 8543, "N"], [8544, 8555, "A"], [8556, 8559, "N"], [8560, 8569, "A"], [8570, 8584, "N"], [8585, 8585, "A"], [8586, 8591, "N"], [8592, 8601, "A"], [8602, 8631, "N"], [8632, 8633, "A"], [8634, 8657, "N"], [8658, 8658, "A"], [8659, 8659, "N"], [8660, 8660, "A"], [8661, 8678, "N"], [8679, 8679, "A"], [8680, 8703, "N"], [8704, 8704, "A"], [8705, 8705, "N"], [8706, 8707, "A"], [8708, 8710, "N"], [8711, 8712, "A"], [8713, 8714, "N"], [8715, 8715, "A"], [8716, 8718, "N"], [8719, 8719, "A"], [8720, 8720, "N"], [8721, 8721, "A"], [8722, 8724, "N"], [8725, 8725, "A"], [8726, 8729, "N"], [8730, 8730, "A"], [8731, 8732, "N"], [8733, 8736, "A"], [8737, 8738, "N"], [8739, 8739, "A"], [8740, 8740, "N"], [8741, 8741, "A"], [8742, 8742, "N"], [8743, 8748, "A"], [8749, 8749, "N"], [8750, 8750, "A"], [8751, 8755, "N"], [8756, 8759, "A"], [8760, 8763, "N"], [8764, 8765, "A"], [8766, 8775, "N"], [8776, 8776, "A"], [8777, 8779, "N"], [8780, 8780, "A"], [8781, 8785, "N"], [8786, 8786, "A"], [8787, 8799, "N"], [8800, 8801, "A"], [8802, 8803, "N"], [8804, 8807, "A"], [8808, 8809, "N"], [8810, 8811, "A"], [8812, 8813, "N"], [8814, 8815, "A"], [8816, 8833, "N"], [8834, 8835, "A"], [8836, 8837, "N"], [8838, 8839, "A"], [8840, 8852, "N"], [8853, 8853, "A"], [8854, 8856, "N"], [8857, 8857, "A"], [8858, 8868, "N"], [8869, 8869, "A"], [8870, 8894, "N"], [8895, 8895, "A"], [8896, 8977, "N"], [8978, 8978, "A"], [8979, 8985, "N"], [8986, 8987, "W"], [8988, 9e3, "N"], [9001, 9002, "W"], [9003, 9192, "N"], [9193, 9196, "W"], [9197, 9199, "N"], [9200, 9200, "W"], [9201, 9202, "N"], [9203, 9203, "W"], [9204, 9311, "N"], [9312, 9449, "A"], [9450, 9450, "N"], [9451, 9547, "A"], [9548, 9551, "N"], [9552, 9587, "A"], [9588, 9599, "N"], [9600, 9615, "A"], [9616, 9617, "N"], [9618, 9621, "A"], [9622, 9631, "N"], [9632, 9633, "A"], [9634, 9634, "N"], [9635, 9641, "A"], [9642, 9649, "N"], [9650, 9651, "A"], [9652, 9653, "N"], [9654, 9655, "A"], [9656, 9659, "N"], [9660, 9661, "A"], [9662, 9663, "N"], [9664, 9665, "A"], [9666, 9669, "N"], [9670, 9672, "A"], [9673, 9674, "N"], [9675, 9675, "A"], [9676, 9677, "N"], [9678, 9681, "A"], [9682, 9697, "N"], [9698, 9701, "A"], [9702, 9710, "N"], [9711, 9711, "A"], [9712, 9724, "N"], [9725, 9726, "W"], [9727, 9732, "N"], [9733, 9734, "A"], [9735, 9736, "N"], [9737, 9737, "A"], [9738, 9741, "N"], [9742, 9743, "A"], [9744, 9747, "N"], [9748, 9749, "W"], [9750, 9755, "N"], [9756, 9756, "A"], [9757, 9757, "N"], [9758, 9758, "A"], [9759, 9775, "N"], [9776, 9783, "W"], [9784, 9791, "N"], [9792, 9792, "A"], [9793, 9793, "N"], [9794, 9794, "A"], [9795, 9799, "N"], [9800, 9811, "W"], [9812, 9823, "N"], [9824, 9825, "A"], [9826, 9826, "N"], [9827, 9829, "A"], [9830, 9830, "N"], [9831, 9834, "A"], [9835, 9835, "N"], [9836, 9837, "A"], [9838, 9838, "N"], [9839, 9839, "A"], [9840, 9854, "N"], [9855, 9855, "W"], [9856, 9865, "N"], [9866, 9871, "W"], [9872, 9874, "N"], [9875, 9875, "W"], [9876, 9885, "N"], [9886, 9887, "A"], [9888, 9888, "N"], [9889, 9889, "W"], [9890, 9897, "N"], [9898, 9899, "W"], [9900, 9916, "N"], [9917, 9918, "W"], [9919, 9919, "A"], [9920, 9923, "N"], [9924, 9925, "W"], [9926, 9933, "A"], [9934, 9934, "W"], [9935, 9939, "A"], [9940, 9940, "W"], [9941, 9953, "A"], [9954, 9954, "N"], [9955, 9955, "A"], [9956, 9959, "N"], [9960, 9961, "A"], [9962, 9962, "W"], [9963, 9969, "A"], [9970, 9971, "W"], [9972, 9972, "A"], [9973, 9973, "W"], [9974, 9977, "A"], [9978, 9978, "W"], [9979, 9980, "A"], [9981, 9981, "W"], [9982, 9983, "A"], [9984, 9988, "N"], [9989, 9989, "W"], [9990, 9993, "N"], [9994, 9995, "W"], [9996, 10023, "N"], [10024, 10024, "W"], [10025, 10044, "N"], [10045, 10045, "A"], [10046, 10059, "N"], [10060, 10060, "W"], [10061, 10061, "N"], [10062, 10062, "W"], [10063, 10066, "N"], [10067, 10069, "W"], [10070, 10070, "N"], [10071, 10071, "W"], [10072, 10101, "N"], [10102, 10111, "A"], [10112, 10132, "N"], [10133, 10135, "W"], [10136, 10159, "N"], [10160, 10160, "W"], [10161, 10174, "N"], [10175, 10175, "W"], [10176, 10213, "N"], [10214, 10221, "Na"], [10222, 10628, "N"], [10629, 10630, "Na"], [10631, 11034, "N"], [11035, 11036, "W"], [11037, 11087, "N"], [11088, 11088, "W"], [11089, 11092, "N"], [11093, 11093, "W"], [11094, 11097, "A"], [11098, 11903, "N"], [11904, 11929, "W"], [11930, 11930, "N"], [11931, 12019, "W"], [12020, 12031, "N"], [12032, 12245, "W"], [12246, 12271, "N"], [12272, 12287, "W"], [12288, 12288, "F"], [12289, 12350, "W"], [12351, 12352, "N"], [12353, 12438, "W"], [12439, 12440, "N"], [12441, 12543, "W"], [12544, 12548, "N"], [12549, 12591, "W"], [12592, 12592, "N"], [12593, 12686, "W"], [12687, 12687, "N"], [12688, 12773, "W"], [12774, 12782, "N"], [12783, 12830, "W"], [12831, 12831, "N"], [12832, 12871, "W"], [12872, 12879, "A"], [12880, 42124, "W"], [42125, 42127, "N"], [42128, 42182, "W"], [42183, 43359, "N"], [43360, 43388, "W"], [43389, 44031, "N"], [44032, 55203, "W"], [55204, 57343, "N"], [57344, 63743, "A"], [63744, 64255, "W"], [64256, 65023, "N"], [65024, 65039, "A"], [65040, 65049, "W"], [65050, 65071, "N"], [65072, 65106, "W"], [65107, 65107, "N"], [65108, 65126, "W"], [65127, 65127, "N"], [65128, 65131, "W"], [65132, 65280, "N"], [65281, 65376, "F"], [65377, 65470, "H"], [65471, 65473, "N"], [65474, 65479, "H"], [65480, 65481, "N"], [65482, 65487, "H"], [65488, 65489, "N"], [65490, 65495, "H"], [65496, 65497, "N"], [65498, 65500, "H"], [65501, 65503, "N"], [65504, 65510, "F"], [65511, 65511, "N"], [65512, 65518, "H"], [65519, 65532, "N"], [65533, 65533, "A"], [65534, 94175, "N"], [94176, 94180, "W"], [94181, 94191, "N"], [94192, 94193, "W"], [94194, 94207, "N"], [94208, 100343, "W"], [100344, 100351, "N"], [100352, 101589, "W"], [101590, 101630, "N"], [101631, 101640, "W"], [101641, 110575, "N"], [110576, 110579, "W"], [110580, 110580, "N"], [110581, 110587, "W"], [110588, 110588, "N"], [110589, 110590, "W"], [110591, 110591, "N"], [110592, 110882, "W"], [110883, 110897, "N"], [110898, 110898, "W"], [110899, 110927, "N"], [110928, 110930, "W"], [110931, 110932, "N"], [110933, 110933, "W"], [110934, 110947, "N"], [110948, 110951, "W"], [110952, 110959, "N"], [110960, 111355, "W"], [111356, 119551, "N"], [119552, 119638, "W"], [119639, 119647, "N"], [119648, 119670, "W"], [119671, 126979, "N"], [126980, 126980, "W"], [126981, 127182, "N"], [127183, 127183, "W"], [127184, 127231, "N"], [127232, 127242, "A"], [127243, 127247, "N"], [127248, 127277, "A"], [127278, 127279, "N"], [127280, 127337, "A"], [127338, 127343, "N"], [127344, 127373, "A"], [127374, 127374, "W"], [127375, 127376, "A"], [127377, 127386, "W"], [127387, 127404, "A"], [127405, 127487, "N"], [127488, 127490, "W"], [127491, 127503, "N"], [127504, 127547, "W"], [127548, 127551, "N"], [127552, 127560, "W"], [127561, 127567, "N"], [127568, 127569, "W"], [127570, 127583, "N"], [127584, 127589, "W"], [127590, 127743, "N"], [127744, 127776, "W"], [127777, 127788, "N"], [127789, 127797, "W"], [127798, 127798, "N"], [127799, 127868, "W"], [127869, 127869, "N"], [127870, 127891, "W"], [127892, 127903, "N"], [127904, 127946, "W"], [127947, 127950, "N"], [127951, 127955, "W"], [127956, 127967, "N"], [127968, 127984, "W"], [127985, 127987, "N"], [127988, 127988, "W"], [127989, 127991, "N"], [127992, 128062, "W"], [128063, 128063, "N"], [128064, 128064, "W"], [128065, 128065, "N"], [128066, 128252, "W"], [128253, 128254, "N"], [128255, 128317, "W"], [128318, 128330, "N"], [128331, 128334, "W"], [128335, 128335, "N"], [128336, 128359, "W"], [128360, 128377, "N"], [128378, 128378, "W"], [128379, 128404, "N"], [128405, 128406, "W"], [128407, 128419, "N"], [128420, 128420, "W"], [128421, 128506, "N"], [128507, 128591, "W"], [128592, 128639, "N"], [128640, 128709, "W"], [128710, 128715, "N"], [128716, 128716, "W"], [128717, 128719, "N"], [128720, 128722, "W"], [128723, 128724, "N"], [128725, 128727, "W"], [128728, 128731, "N"], [128732, 128735, "W"], [128736, 128746, "N"], [128747, 128748, "W"], [128749, 128755, "N"], [128756, 128764, "W"], [128765, 128991, "N"], [128992, 129003, "W"], [129004, 129007, "N"], [129008, 129008, "W"], [129009, 129291, "N"], [129292, 129338, "W"], [129339, 129339, "N"], [129340, 129349, "W"], [129350, 129350, "N"], [129351, 129535, "W"], [129536, 129647, "N"], [129648, 129660, "W"], [129661, 129663, "N"], [129664, 129673, "W"], [129674, 129678, "N"], [129679, 129734, "W"], [129735, 129741, "N"], [129742, 129756, "W"], [129757, 129758, "N"], [129759, 129769, "W"], [129770, 129775, "N"], [129776, 129784, "W"], [129785, 131071, "N"], [131072, 196605, "W"], [196606, 196607, "N"], [196608, 262141, "W"], [262142, 917759, "N"], [917760, 917999, "A"], [918e3, 983039, "N"], [983040, 1048573, "A"], [1048574, 1048575, "N"], [1048576, 1114109, "A"], [1114110, 1114111, "N"] ]; var version = "16.0.0"; // src/get-eaw.ts function getEAWOfCodePointInternal(codePoint) { let min = 0; let max = defs.length - 1; while (min !== max) { const i = min + (max - min >> 1); const [start, end, prop] = defs[i]; if (codePoint < start) { max = i - 1; } else if (codePoint > end) { min = i + 1; } else { return prop; } } return defs[min][2]; } function getEAWOfCodePoint(codePoint) { if (!Number.isInteger(codePoint) || codePoint < 0 || 1114111 < codePoint) { return void 0; } return getEAWOfCodePointInternal(codePoint); } function getEAW(str, pos = 0) { const codePoint = str.codePointAt(pos); if (codePoint === void 0) { return void 0; } return getEAWOfCodePointInternal(codePoint); } // src/compute-width.ts var defaultWidths = { N: 1, Na: 1, W: 2, F: 2, H: 1, A: 1 }; function computeWidth(str, widths) { let width = 0; for (const char of str) { const eaw = getEAW(char); width += widths && widths[eaw] || defaultWidths[eaw]; } return width; } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { computeWidth, eawVersion, getEAW, getEAWOfCodePoint }); //# sourceMappingURL=index.cjs.map