@cantoo/fontkit 2.0.7 → 2.0.9

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.
Files changed (54) hide show
  1. package/dist/browser-module.d.ts +27 -16
  2. package/dist/browser-module.mjs +20 -0
  3. package/dist/browser-module.mjs.map +1 -1
  4. package/dist/browser.cjs +20 -0
  5. package/dist/browser.cjs.map +1 -1
  6. package/dist/browser.d.ts +27 -16
  7. package/dist/fontkit.umd.d.ts +27 -16
  8. package/dist/fontkit.umd.js +21 -0
  9. package/dist/fontkit.umd.js.map +2 -2
  10. package/dist/fontkit.umd.min.js +11 -0
  11. package/dist/fontkit.umd.min.js.map +7 -0
  12. package/dist/index.d.ts +27 -16
  13. package/dist/main.cjs +22 -0
  14. package/dist/main.cjs.map +1 -1
  15. package/dist/main.d.ts +27 -16
  16. package/dist/module.d.ts +27 -16
  17. package/dist/module.mjs +22 -0
  18. package/dist/module.mjs.map +1 -1
  19. package/dist/unicode-properties/index.cjs +270 -0
  20. package/dist/unicode-properties/index.cjs.map +7 -0
  21. package/dist/unicode-properties/index.d.ts +37 -0
  22. package/dist/unicode-properties/index.mjs +246 -0
  23. package/dist/unicode-properties/index.mjs.map +7 -0
  24. package/dist/unicode-properties/index.umd.js +640 -0
  25. package/dist/unicode-properties/index.umd.js.map +7 -0
  26. package/dist/unicode-trie/builder.cjs +821 -0
  27. package/dist/unicode-trie/builder.cjs.map +7 -0
  28. package/dist/unicode-trie/builder.d.ts +19 -0
  29. package/dist/unicode-trie/builder.mjs +799 -0
  30. package/dist/unicode-trie/builder.mjs.map +7 -0
  31. package/dist/unicode-trie/index.cjs +125 -0
  32. package/dist/unicode-trie/index.cjs.map +7 -0
  33. package/dist/unicode-trie/index.d.ts +19 -0
  34. package/dist/unicode-trie/index.mjs +103 -0
  35. package/dist/unicode-trie/index.mjs.map +7 -0
  36. package/dist/unicode-trie/index.umd.js +498 -0
  37. package/dist/unicode-trie/index.umd.js.map +7 -0
  38. package/package.json +14 -10
  39. package/src/base.js +33 -0
  40. package/src/index.js +2 -1
  41. package/src/node.js +7 -1
  42. package/src/packages/unicode-properties/dist/index.d.ts +37 -0
  43. package/src/packages/unicode-properties/dist/index.umd.js +640 -0
  44. package/src/packages/unicode-properties/dist/index.umd.js.map +7 -0
  45. package/src/packages/unicode-properties/index.d.ts +37 -0
  46. package/src/packages/unicode-properties/package.json +6 -1
  47. package/src/packages/unicode-trie/builder.d.ts +19 -0
  48. package/src/packages/unicode-trie/dist/builder.d.ts +19 -0
  49. package/src/packages/unicode-trie/dist/index.d.ts +19 -0
  50. package/src/packages/unicode-trie/dist/index.umd.js +498 -0
  51. package/src/packages/unicode-trie/dist/index.umd.js.map +7 -0
  52. package/src/packages/unicode-trie/index.d.ts +19 -0
  53. package/src/packages/unicode-trie/package.json +8 -1
  54. package/types/index.d.ts +27 -16
@@ -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