@cantoo/fontkit 2.0.7 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,640 @@
1
+ "use strict";
2
+ var unicodeProperties = (() => {
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all)
9
+ __defProp(target, name, { get: all[name], enumerable: true });
10
+ };
11
+ var __copyProps = (to, from, except, desc) => {
12
+ if (from && typeof from === "object" || typeof from === "function") {
13
+ for (let key of __getOwnPropNames(from))
14
+ if (!__hasOwnProp.call(to, key) && key !== except)
15
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
+ }
17
+ return to;
18
+ };
19
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
+
21
+ // index.js
22
+ var index_exports = {};
23
+ __export(index_exports, {
24
+ default: () => index_default,
25
+ getCategory: () => getCategory,
26
+ getCombiningClass: () => getCombiningClass,
27
+ getEastAsianWidth: () => getEastAsianWidth,
28
+ getNumericValue: () => getNumericValue,
29
+ getScript: () => getScript,
30
+ isAlphabetic: () => isAlphabetic,
31
+ isBaseForm: () => isBaseForm,
32
+ isDigit: () => isDigit,
33
+ isLowerCase: () => isLowerCase,
34
+ isMark: () => isMark,
35
+ isPunctuation: () => isPunctuation,
36
+ isTitleCase: () => isTitleCase,
37
+ isUpperCase: () => isUpperCase,
38
+ isWhiteSpace: () => isWhiteSpace
39
+ });
40
+
41
+ // ../../../node_modules/fflate/esm/browser.js
42
+ var u8 = Uint8Array;
43
+ var u16 = Uint16Array;
44
+ var i32 = Int32Array;
45
+ var fleb = new u8([
46
+ 0,
47
+ 0,
48
+ 0,
49
+ 0,
50
+ 0,
51
+ 0,
52
+ 0,
53
+ 0,
54
+ 1,
55
+ 1,
56
+ 1,
57
+ 1,
58
+ 2,
59
+ 2,
60
+ 2,
61
+ 2,
62
+ 3,
63
+ 3,
64
+ 3,
65
+ 3,
66
+ 4,
67
+ 4,
68
+ 4,
69
+ 4,
70
+ 5,
71
+ 5,
72
+ 5,
73
+ 5,
74
+ 0,
75
+ /* unused */
76
+ 0,
77
+ 0,
78
+ /* impossible */
79
+ 0
80
+ ]);
81
+ var fdeb = new u8([
82
+ 0,
83
+ 0,
84
+ 0,
85
+ 0,
86
+ 1,
87
+ 1,
88
+ 2,
89
+ 2,
90
+ 3,
91
+ 3,
92
+ 4,
93
+ 4,
94
+ 5,
95
+ 5,
96
+ 6,
97
+ 6,
98
+ 7,
99
+ 7,
100
+ 8,
101
+ 8,
102
+ 9,
103
+ 9,
104
+ 10,
105
+ 10,
106
+ 11,
107
+ 11,
108
+ 12,
109
+ 12,
110
+ 13,
111
+ 13,
112
+ /* unused */
113
+ 0,
114
+ 0
115
+ ]);
116
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
117
+ var freb = function(eb, start) {
118
+ var b = new u16(31);
119
+ for (var i2 = 0; i2 < 31; ++i2) {
120
+ b[i2] = start += 1 << eb[i2 - 1];
121
+ }
122
+ var r = new i32(b[30]);
123
+ for (var i2 = 1; i2 < 30; ++i2) {
124
+ for (var j = b[i2]; j < b[i2 + 1]; ++j) {
125
+ r[j] = j - b[i2] << 5 | i2;
126
+ }
127
+ }
128
+ return { b, r };
129
+ };
130
+ var _a = freb(fleb, 2);
131
+ var fl = _a.b;
132
+ var revfl = _a.r;
133
+ fl[28] = 258, revfl[258] = 28;
134
+ var _b = freb(fdeb, 0);
135
+ var fd = _b.b;
136
+ var revfd = _b.r;
137
+ var rev = new u16(32768);
138
+ for (i = 0; i < 32768; ++i) {
139
+ x = (i & 43690) >> 1 | (i & 21845) << 1;
140
+ x = (x & 52428) >> 2 | (x & 13107) << 2;
141
+ x = (x & 61680) >> 4 | (x & 3855) << 4;
142
+ rev[i] = ((x & 65280) >> 8 | (x & 255) << 8) >> 1;
143
+ }
144
+ var x;
145
+ var i;
146
+ var hMap = (function(cd, mb, r) {
147
+ var s = cd.length;
148
+ var i2 = 0;
149
+ var l = new u16(mb);
150
+ for (; i2 < s; ++i2) {
151
+ if (cd[i2])
152
+ ++l[cd[i2] - 1];
153
+ }
154
+ var le = new u16(mb);
155
+ for (i2 = 1; i2 < mb; ++i2) {
156
+ le[i2] = le[i2 - 1] + l[i2 - 1] << 1;
157
+ }
158
+ var co;
159
+ if (r) {
160
+ co = new u16(1 << mb);
161
+ var rvb = 15 - mb;
162
+ for (i2 = 0; i2 < s; ++i2) {
163
+ if (cd[i2]) {
164
+ var sv = i2 << 4 | cd[i2];
165
+ var r_1 = mb - cd[i2];
166
+ var v = le[cd[i2] - 1]++ << r_1;
167
+ for (var m = v | (1 << r_1) - 1; v <= m; ++v) {
168
+ co[rev[v] >> rvb] = sv;
169
+ }
170
+ }
171
+ }
172
+ } else {
173
+ co = new u16(s);
174
+ for (i2 = 0; i2 < s; ++i2) {
175
+ if (cd[i2]) {
176
+ co[i2] = rev[le[cd[i2] - 1]++] >> 15 - cd[i2];
177
+ }
178
+ }
179
+ }
180
+ return co;
181
+ });
182
+ var flt = new u8(288);
183
+ for (i = 0; i < 144; ++i)
184
+ flt[i] = 8;
185
+ var i;
186
+ for (i = 144; i < 256; ++i)
187
+ flt[i] = 9;
188
+ var i;
189
+ for (i = 256; i < 280; ++i)
190
+ flt[i] = 7;
191
+ var i;
192
+ for (i = 280; i < 288; ++i)
193
+ flt[i] = 8;
194
+ var i;
195
+ var fdt = new u8(32);
196
+ for (i = 0; i < 32; ++i)
197
+ fdt[i] = 5;
198
+ var i;
199
+ var flrm = /* @__PURE__ */ hMap(flt, 9, 1);
200
+ var fdrm = /* @__PURE__ */ hMap(fdt, 5, 1);
201
+ var max = function(a) {
202
+ var m = a[0];
203
+ for (var i2 = 1; i2 < a.length; ++i2) {
204
+ if (a[i2] > m)
205
+ m = a[i2];
206
+ }
207
+ return m;
208
+ };
209
+ var bits = function(d, p, m) {
210
+ var o = p / 8 | 0;
211
+ return (d[o] | d[o + 1] << 8) >> (p & 7) & m;
212
+ };
213
+ var bits16 = function(d, p) {
214
+ var o = p / 8 | 0;
215
+ return (d[o] | d[o + 1] << 8 | d[o + 2] << 16) >> (p & 7);
216
+ };
217
+ var shft = function(p) {
218
+ return (p + 7) / 8 | 0;
219
+ };
220
+ var slc = function(v, s, e) {
221
+ if (s == null || s < 0)
222
+ s = 0;
223
+ if (e == null || e > v.length)
224
+ e = v.length;
225
+ return new u8(v.subarray(s, e));
226
+ };
227
+ var ec = [
228
+ "unexpected EOF",
229
+ "invalid block type",
230
+ "invalid length/literal",
231
+ "invalid distance",
232
+ "stream finished",
233
+ "no stream handler",
234
+ ,
235
+ // determined by compression function
236
+ "no callback",
237
+ "invalid UTF-8 data",
238
+ "extra field too long",
239
+ "date not in range 1980-2099",
240
+ "filename too long",
241
+ "stream finishing",
242
+ "invalid zip data"
243
+ // determined by unknown compression method
244
+ ];
245
+ var err = function(ind, msg, nt) {
246
+ var e = new Error(msg || ec[ind]);
247
+ e.code = ind;
248
+ if (Error.captureStackTrace)
249
+ Error.captureStackTrace(e, err);
250
+ if (!nt)
251
+ throw e;
252
+ return e;
253
+ };
254
+ var inflt = function(dat, st, buf, dict) {
255
+ var sl = dat.length, dl = dict ? dict.length : 0;
256
+ if (!sl || st.f && !st.l)
257
+ return buf || new u8(0);
258
+ var noBuf = !buf;
259
+ var resize = noBuf || st.i != 2;
260
+ var noSt = st.i;
261
+ if (noBuf)
262
+ buf = new u8(sl * 3);
263
+ var cbuf = function(l2) {
264
+ var bl = buf.length;
265
+ if (l2 > bl) {
266
+ var nbuf = new u8(Math.max(bl * 2, l2));
267
+ nbuf.set(buf);
268
+ buf = nbuf;
269
+ }
270
+ };
271
+ var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
272
+ var tbts = sl * 8;
273
+ do {
274
+ if (!lm) {
275
+ final = bits(dat, pos, 1);
276
+ var type = bits(dat, pos + 1, 3);
277
+ pos += 3;
278
+ if (!type) {
279
+ var s = shft(pos) + 4, l = dat[s - 4] | dat[s - 3] << 8, t = s + l;
280
+ if (t > sl) {
281
+ if (noSt)
282
+ err(0);
283
+ break;
284
+ }
285
+ if (resize)
286
+ cbuf(bt + l);
287
+ buf.set(dat.subarray(s, t), bt);
288
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
289
+ continue;
290
+ } else if (type == 1)
291
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
292
+ else if (type == 2) {
293
+ var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
294
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
295
+ pos += 14;
296
+ var ldt = new u8(tl);
297
+ var clt = new u8(19);
298
+ for (var i2 = 0; i2 < hcLen; ++i2) {
299
+ clt[clim[i2]] = bits(dat, pos + i2 * 3, 7);
300
+ }
301
+ pos += hcLen * 3;
302
+ var clb = max(clt), clbmsk = (1 << clb) - 1;
303
+ var clm = hMap(clt, clb, 1);
304
+ for (var i2 = 0; i2 < tl; ) {
305
+ var r = clm[bits(dat, pos, clbmsk)];
306
+ pos += r & 15;
307
+ var s = r >> 4;
308
+ if (s < 16) {
309
+ ldt[i2++] = s;
310
+ } else {
311
+ var c = 0, n = 0;
312
+ if (s == 16)
313
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i2 - 1];
314
+ else if (s == 17)
315
+ n = 3 + bits(dat, pos, 7), pos += 3;
316
+ else if (s == 18)
317
+ n = 11 + bits(dat, pos, 127), pos += 7;
318
+ while (n--)
319
+ ldt[i2++] = c;
320
+ }
321
+ }
322
+ var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
323
+ lbt = max(lt);
324
+ dbt = max(dt);
325
+ lm = hMap(lt, lbt, 1);
326
+ dm = hMap(dt, dbt, 1);
327
+ } else
328
+ err(1);
329
+ if (pos > tbts) {
330
+ if (noSt)
331
+ err(0);
332
+ break;
333
+ }
334
+ }
335
+ if (resize)
336
+ cbuf(bt + 131072);
337
+ var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
338
+ var lpos = pos;
339
+ for (; ; lpos = pos) {
340
+ var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
341
+ pos += c & 15;
342
+ if (pos > tbts) {
343
+ if (noSt)
344
+ err(0);
345
+ break;
346
+ }
347
+ if (!c)
348
+ err(2);
349
+ if (sym < 256)
350
+ buf[bt++] = sym;
351
+ else if (sym == 256) {
352
+ lpos = pos, lm = null;
353
+ break;
354
+ } else {
355
+ var add = sym - 254;
356
+ if (sym > 264) {
357
+ var i2 = sym - 257, b = fleb[i2];
358
+ add = bits(dat, pos, (1 << b) - 1) + fl[i2];
359
+ pos += b;
360
+ }
361
+ var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
362
+ if (!d)
363
+ err(3);
364
+ pos += d & 15;
365
+ var dt = fd[dsym];
366
+ if (dsym > 3) {
367
+ var b = fdeb[dsym];
368
+ dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
369
+ }
370
+ if (pos > tbts) {
371
+ if (noSt)
372
+ err(0);
373
+ break;
374
+ }
375
+ if (resize)
376
+ cbuf(bt + 131072);
377
+ var end = bt + add;
378
+ if (bt < dt) {
379
+ var shift = dl - dt, dend = Math.min(dt, end);
380
+ if (shift + bt < 0)
381
+ err(3);
382
+ for (; bt < dend; ++bt)
383
+ buf[bt] = dict[shift + bt];
384
+ }
385
+ for (; bt < end; ++bt)
386
+ buf[bt] = buf[bt - dt];
387
+ }
388
+ }
389
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
390
+ if (lm)
391
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
392
+ } while (!final);
393
+ return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
394
+ };
395
+ var et = /* @__PURE__ */ new u8(0);
396
+ function inflateSync(data, opts) {
397
+ return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
398
+ }
399
+ var td = typeof TextDecoder != "undefined" && /* @__PURE__ */ new TextDecoder();
400
+ var tds = 0;
401
+ try {
402
+ td.decode(et, { stream: true });
403
+ tds = 1;
404
+ } catch (e) {
405
+ }
406
+
407
+ // ../unicode-trie/swap.js
408
+ var isBigEndian = new Uint8Array(new Uint32Array([305419896]).buffer)[0] === 18;
409
+ var swap = (b, n, m) => {
410
+ let i2 = b[n];
411
+ b[n] = b[m];
412
+ b[m] = i2;
413
+ };
414
+ var swap32 = (array) => {
415
+ const len = array.length;
416
+ for (let i2 = 0; i2 < len; i2 += 4) {
417
+ swap(array, i2, i2 + 3);
418
+ swap(array, i2 + 1, i2 + 2);
419
+ }
420
+ };
421
+ var swap32LE = (array) => {
422
+ if (isBigEndian) {
423
+ swap32(array);
424
+ }
425
+ };
426
+
427
+ // ../unicode-trie/index.js
428
+ function isNodeBuffer(value) {
429
+ return typeof value === "object" && value !== null && "readUInt32BE" in value && "readUInt32LE" in value && "slice" in value && typeof value.readUInt32BE === "function" && typeof value.readUInt32LE === "function" && typeof value.slice === "function";
430
+ }
431
+ var SHIFT_1 = 6 + 5;
432
+ var SHIFT_2 = 5;
433
+ var SHIFT_1_2 = SHIFT_1 - SHIFT_2;
434
+ var OMITTED_BMP_INDEX_1_LENGTH = 65536 >> SHIFT_1;
435
+ var INDEX_2_BLOCK_LENGTH = 1 << SHIFT_1_2;
436
+ var INDEX_2_MASK = INDEX_2_BLOCK_LENGTH - 1;
437
+ var INDEX_SHIFT = 2;
438
+ var DATA_BLOCK_LENGTH = 1 << SHIFT_2;
439
+ var DATA_MASK = DATA_BLOCK_LENGTH - 1;
440
+ var LSCP_INDEX_2_OFFSET = 65536 >> SHIFT_2;
441
+ var LSCP_INDEX_2_LENGTH = 1024 >> SHIFT_2;
442
+ var INDEX_2_BMP_LENGTH = LSCP_INDEX_2_OFFSET + LSCP_INDEX_2_LENGTH;
443
+ var UTF8_2B_INDEX_2_OFFSET = INDEX_2_BMP_LENGTH;
444
+ var UTF8_2B_INDEX_2_LENGTH = 2048 >> 6;
445
+ var INDEX_1_OFFSET = UTF8_2B_INDEX_2_OFFSET + UTF8_2B_INDEX_2_LENGTH;
446
+ var DATA_GRANULARITY = 1 << INDEX_SHIFT;
447
+ var UnicodeTrie = class {
448
+ /**
449
+ * @param {Uint8Array | Buffer | UnicodeTrieInit} data
450
+ */
451
+ constructor(data) {
452
+ if (isNodeBuffer(data) || data instanceof Uint8Array) {
453
+ let bytes;
454
+ let uncompressedLength;
455
+ if (isNodeBuffer(data)) {
456
+ this.highStart = data.readUInt32LE(0);
457
+ this.errorValue = data.readUInt32LE(4);
458
+ uncompressedLength = data.readUInt32LE(8);
459
+ bytes = new Uint8Array(data.buffer, data.byteOffset + 12, data.byteLength - 12);
460
+ } else {
461
+ const view = new DataView(data.buffer, data.byteOffset, data.byteLength);
462
+ this.highStart = view.getUint32(0, true);
463
+ this.errorValue = view.getUint32(4, true);
464
+ uncompressedLength = view.getUint32(8, true);
465
+ bytes = data.subarray(12);
466
+ }
467
+ bytes = inflateSync(bytes, { out: new Uint8Array(uncompressedLength) });
468
+ swap32LE(bytes);
469
+ this.data = new Uint32Array(bytes.buffer, bytes.byteOffset, bytes.byteLength >> 2);
470
+ } else {
471
+ this.data = data.data;
472
+ this.highStart = data.highStart;
473
+ this.errorValue = data.errorValue;
474
+ }
475
+ }
476
+ /**
477
+ * @param {number} codePoint
478
+ * @returns {number}
479
+ */
480
+ get(codePoint) {
481
+ let index;
482
+ if (codePoint < 0 || codePoint > 1114111) {
483
+ return this.errorValue;
484
+ }
485
+ if (codePoint < 55296 || codePoint > 56319 && codePoint <= 65535) {
486
+ index = (this.data[codePoint >> SHIFT_2] << INDEX_SHIFT) + (codePoint & DATA_MASK);
487
+ return this.data[index];
488
+ }
489
+ if (codePoint <= 65535) {
490
+ index = (this.data[LSCP_INDEX_2_OFFSET + (codePoint - 55296 >> SHIFT_2)] << INDEX_SHIFT) + (codePoint & DATA_MASK);
491
+ return this.data[index];
492
+ }
493
+ if (codePoint < this.highStart) {
494
+ index = this.data[INDEX_1_OFFSET - OMITTED_BMP_INDEX_1_LENGTH + (codePoint >> SHIFT_1)];
495
+ index = this.data[index + (codePoint >> SHIFT_2 & INDEX_2_MASK)];
496
+ index = (index << INDEX_SHIFT) + (codePoint & DATA_MASK);
497
+ return this.data[index];
498
+ }
499
+ return this.data[this.data.length - DATA_GRANULARITY];
500
+ }
501
+ };
502
+ var unicode_trie_default = UnicodeTrie;
503
+
504
+ // data.js
505
+ var data_default = { categories: ["Cc", "Zs", "Po", "Sc", "Ps", "Pe", "Sm", "Pd", "Nd", "Lu", "Sk", "Pc", "Ll", "So", "Lo", "Pi", "Cf", "No", "Pf", "Lt", "Lm", "Mn", "Me", "Mc", "Nl", "Zl", "Zp", "Cs", "Co"], combiningClasses: ["Not_Reordered", "Above", "Above_Right", "Below", "Attached_Above_Right", "Attached_Below", "Overlay", "Iota_Subscript", "Double_Below", "Double_Above", "Below_Right", "Above_Left", "CCC10", "CCC11", "CCC12", "CCC13", "CCC14", "CCC15", "CCC16", "CCC17", "CCC18", "CCC19", "CCC20", "CCC21", "CCC22", "CCC23", "CCC24", "CCC25", "CCC30", "CCC31", "CCC32", "CCC27", "CCC28", "CCC29", "CCC33", "CCC34", "CCC35", "CCC36", "Nukta", "Virama", "CCC84", "CCC91", "CCC103", "CCC107", "CCC118", "CCC122", "CCC129", "CCC130", "CCC132", "Attached_Above", "Below_Left", "Left", "Kana_Voicing", "CCC26", "Right"], scripts: ["Common", "Latin", "Bopomofo", "Inherited", "Greek", "Coptic", "Cyrillic", "Armenian", "Hebrew", "Arabic", "Syriac", "Thaana", "Nko", "Samaritan", "Mandaic", "Devanagari", "Bengali", "Gurmukhi", "Gujarati", "Oriya", "Tamil", "Telugu", "Kannada", "Malayalam", "Sinhala", "Thai", "Lao", "Tibetan", "Myanmar", "Georgian", "Hangul", "Ethiopic", "Cherokee", "Canadian_Aboriginal", "Ogham", "Runic", "Tagalog", "Hanunoo", "Buhid", "Tagbanwa", "Khmer", "Mongolian", "Limbu", "Tai_Le", "New_Tai_Lue", "Buginese", "Tai_Tham", "Balinese", "Sundanese", "Batak", "Lepcha", "Ol_Chiki", "Braille", "Glagolitic", "Tifinagh", "Han", "Hiragana", "Katakana", "Yi", "Lisu", "Vai", "Bamum", "Syloti_Nagri", "Phags_Pa", "Saurashtra", "Kayah_Li", "Rejang", "Javanese", "Cham", "Tai_Viet", "Meetei_Mayek", "null", "Linear_B", "Lycian", "Carian", "Old_Italic", "Gothic", "Old_Permic", "Ugaritic", "Old_Persian", "Deseret", "Shavian", "Osmanya", "Osage", "Elbasan", "Caucasian_Albanian", "Linear_A", "Cypriot", "Imperial_Aramaic", "Palmyrene", "Nabataean", "Hatran", "Phoenician", "Lydian", "Meroitic_Hieroglyphs", "Meroitic_Cursive", "Kharoshthi", "Old_South_Arabian", "Old_North_Arabian", "Manichaean", "Avestan", "Inscriptional_Parthian", "Inscriptional_Pahlavi", "Psalter_Pahlavi", "Old_Turkic", "Old_Hungarian", "Hanifi_Rohingya", "Old_Sogdian", "Sogdian", "Elymaic", "Brahmi", "Kaithi", "Sora_Sompeng", "Chakma", "Mahajani", "Sharada", "Khojki", "Multani", "Khudawadi", "Grantha", "Newa", "Tirhuta", "Siddham", "Modi", "Takri", "Ahom", "Dogra", "Warang_Citi", "Nandinagari", "Zanabazar_Square", "Soyombo", "Pau_Cin_Hau", "Bhaiksuki", "Marchen", "Masaram_Gondi", "Gunjala_Gondi", "Makasar", "Cuneiform", "Egyptian_Hieroglyphs", "Anatolian_Hieroglyphs", "Mro", "Bassa_Vah", "Pahawh_Hmong", "Medefaidrin", "Miao", "Tangut", "Nushu", "Duployan", "SignWriting", "Nyiakeng_Puachue_Hmong", "Wancho", "Mende_Kikakui", "Adlam"], eaw: ["N", "Na", "A", "W", "H", "F"] };
506
+
507
+ // data-trie.js
508
+ var data_trie_default = "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";
509
+
510
+ // index.js
511
+ function decodeBase64(base64) {
512
+ if (typeof Buffer !== "undefined") {
513
+ return new Uint8Array(Buffer.from(base64, "base64"));
514
+ }
515
+ const binary = atob(base64);
516
+ const bytes = new Uint8Array(binary.length);
517
+ for (let i2 = 0; i2 < binary.length; i2++) {
518
+ bytes[i2] = binary.charCodeAt(i2);
519
+ }
520
+ return bytes;
521
+ }
522
+ var trie = new unicode_trie_default(decodeBase64(data_trie_default));
523
+ var log2 = Math.log2 || ((n) => Math.log(n) / Math.LN2);
524
+ var bits2 = (n) => log2(n) + 1 | 0;
525
+ var CATEGORY_BITS = bits2(data_default.categories.length - 1);
526
+ var COMBINING_BITS = bits2(data_default.combiningClasses.length - 1);
527
+ var SCRIPT_BITS = bits2(data_default.scripts.length - 1);
528
+ var EAW_BITS = bits2(data_default.eaw.length - 1);
529
+ var NUMBER_BITS = 10;
530
+ var CATEGORY_SHIFT = COMBINING_BITS + SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
531
+ var COMBINING_SHIFT = SCRIPT_BITS + EAW_BITS + NUMBER_BITS;
532
+ var SCRIPT_SHIFT = EAW_BITS + NUMBER_BITS;
533
+ var EAW_SHIFT = NUMBER_BITS;
534
+ var CATEGORY_MASK = (1 << CATEGORY_BITS) - 1;
535
+ var COMBINING_MASK = (1 << COMBINING_BITS) - 1;
536
+ var SCRIPT_MASK = (1 << SCRIPT_BITS) - 1;
537
+ var EAW_MASK = (1 << EAW_BITS) - 1;
538
+ var NUMBER_MASK = (1 << NUMBER_BITS) - 1;
539
+ function getCategory(codePoint) {
540
+ const val = trie.get(codePoint);
541
+ return data_default.categories[val >> CATEGORY_SHIFT & CATEGORY_MASK];
542
+ }
543
+ function getCombiningClass(codePoint) {
544
+ const val = trie.get(codePoint);
545
+ return data_default.combiningClasses[val >> COMBINING_SHIFT & COMBINING_MASK];
546
+ }
547
+ function getScript(codePoint) {
548
+ const val = trie.get(codePoint);
549
+ return data_default.scripts[val >> SCRIPT_SHIFT & SCRIPT_MASK];
550
+ }
551
+ function getEastAsianWidth(codePoint) {
552
+ const val = trie.get(codePoint);
553
+ return data_default.eaw[val >> EAW_SHIFT & EAW_MASK];
554
+ }
555
+ function getNumericValue(codePoint) {
556
+ let val = trie.get(codePoint);
557
+ let num = val & NUMBER_MASK;
558
+ if (num === 0) {
559
+ return null;
560
+ } else if (num <= 50) {
561
+ return num - 1;
562
+ } else if (num < 480) {
563
+ const numerator = (num >> 4) - 12;
564
+ const denominator = (num & 15) + 1;
565
+ return numerator / denominator;
566
+ } else if (num < 768) {
567
+ val = (num >> 5) - 14;
568
+ let exp = (num & 31) + 2;
569
+ while (exp > 0) {
570
+ val *= 10;
571
+ exp--;
572
+ }
573
+ return val;
574
+ } else {
575
+ val = (num >> 2) - 191;
576
+ let exp = (num & 3) + 1;
577
+ while (exp > 0) {
578
+ val *= 60;
579
+ exp--;
580
+ }
581
+ return val;
582
+ }
583
+ }
584
+ function isAlphabetic(codePoint) {
585
+ const category = getCategory(codePoint);
586
+ return category === "Lu" || category === "Ll" || category === "Lt" || category === "Lm" || category === "Lo" || category === "Nl";
587
+ }
588
+ function isDigit(codePoint) {
589
+ return getCategory(codePoint) === "Nd";
590
+ }
591
+ function isPunctuation(codePoint) {
592
+ const category = getCategory(codePoint);
593
+ return category === "Pc" || category === "Pd" || category === "Pe" || category === "Pf" || category === "Pi" || category === "Po" || category === "Ps";
594
+ }
595
+ function isLowerCase(codePoint) {
596
+ return getCategory(codePoint) === "Ll";
597
+ }
598
+ function isUpperCase(codePoint) {
599
+ return getCategory(codePoint) === "Lu";
600
+ }
601
+ function isTitleCase(codePoint) {
602
+ return getCategory(codePoint) === "Lt";
603
+ }
604
+ function isWhiteSpace(codePoint) {
605
+ const category = getCategory(codePoint);
606
+ return category === "Zs" || category === "Zl" || category === "Zp";
607
+ }
608
+ function isBaseForm(codePoint) {
609
+ const category = getCategory(codePoint);
610
+ return category === "Nd" || category === "No" || category === "Nl" || category === "Lu" || category === "Ll" || category === "Lt" || category === "Lm" || category === "Lo" || category === "Me" || category === "Mc";
611
+ }
612
+ function isMark(codePoint) {
613
+ const category = getCategory(codePoint);
614
+ return category === "Mn" || category === "Me" || category === "Mc";
615
+ }
616
+ var index_default = {
617
+ getCategory,
618
+ getCombiningClass,
619
+ getScript,
620
+ getEastAsianWidth,
621
+ getNumericValue,
622
+ isAlphabetic,
623
+ isDigit,
624
+ isPunctuation,
625
+ isLowerCase,
626
+ isUpperCase,
627
+ isTitleCase,
628
+ isWhiteSpace,
629
+ isBaseForm,
630
+ isMark
631
+ };
632
+ return __toCommonJS(index_exports);
633
+ })();
634
+ if (typeof module === "object" && module.exports) {
635
+ module.exports = unicodeProperties;
636
+ }
637
+ if (typeof define === "function" && define.amd) {
638
+ define(function () { return unicodeProperties; });
639
+ }
640
+ //# sourceMappingURL=index.umd.js.map