pdfnative 1.4.0 → 1.5.0

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.
@@ -225,6 +225,16 @@ var MYANMAR_EXTENDED_A_END = 43647;
225
225
  var MYANMAR_EXTENDED_B_START = 43488;
226
226
  var MYANMAR_EXTENDED_B_END = 43519;
227
227
  var MYANMAR_VIRAMA = 4153;
228
+ var MATH_OPERATORS_START = 8704;
229
+ var MATH_OPERATORS_END = 8959;
230
+ var SUPPLEMENTAL_MATH_OPERATORS_START = 10752;
231
+ var SUPPLEMENTAL_MATH_OPERATORS_END = 11007;
232
+ var GEOMETRIC_SHAPES_START = 9632;
233
+ var GEOMETRIC_SHAPES_END = 9727;
234
+ var MISC_MATH_SYMBOLS_A_START = 10176;
235
+ var MISC_MATH_SYMBOLS_A_END = 10223;
236
+ var MISC_MATH_SYMBOLS_B_START = 10624;
237
+ var MISC_MATH_SYMBOLS_B_END = 10751;
228
238
  var EMOJI_RANGES = [
229
239
  [127744, 128511],
230
240
  // Miscellaneous Symbols and Pictographs
@@ -291,6 +301,9 @@ function isMyanmarCodepoint(cp) {
291
301
  function isDevanagariCodepoint(cp) {
292
302
  return cp >= DEVANAGARI_START && cp <= DEVANAGARI_END || cp >= DEVANAGARI_EXT_START && cp <= DEVANAGARI_EXT_END;
293
303
  }
304
+ function isMathCodepoint(cp) {
305
+ return cp >= MATH_OPERATORS_START && cp <= MATH_OPERATORS_END || cp >= SUPPLEMENTAL_MATH_OPERATORS_START && cp <= SUPPLEMENTAL_MATH_OPERATORS_END || cp >= GEOMETRIC_SHAPES_START && cp <= GEOMETRIC_SHAPES_END || cp >= MISC_MATH_SYMBOLS_A_START && cp <= MISC_MATH_SYMBOLS_A_END || cp >= MISC_MATH_SYMBOLS_B_START && cp <= MISC_MATH_SYMBOLS_B_END;
306
+ }
294
307
  function isEmojiCodepoint(cp) {
295
308
  if (cp >= FITZPATRICK_START && cp <= FITZPATRICK_END) return true;
296
309
  for (const [lo, hi] of EMOJI_RANGES) {
@@ -386,6 +399,7 @@ function detectCharLang(cp) {
386
399
  if (cp >= 1024 && cp <= 1279 || cp >= 1280 && cp <= 1327) return "ru";
387
400
  if (cp >= 4256 && cp <= 4351 || cp >= 11520 && cp <= 11567) return "ka";
388
401
  if (cp >= 1328 && cp <= 1423 || cp >= 64275 && cp <= 64279) return "hy";
402
+ if (isMathCodepoint(cp)) return "math";
389
403
  if (isEmojiCodepoint(cp)) return "emoji";
390
404
  return null;
391
405
  }
@@ -3846,6 +3860,10 @@ function buildTextRunsWithFallback(text, fontRef, fd, sz, trackGid, pdfA = false
3846
3860
  for (let i = 0; i < text.length; ) {
3847
3861
  const rawCp = text.codePointAt(i) ?? 0;
3848
3862
  const charLen = rawCp > 65535 ? 2 : 1;
3863
+ if (rawCp < 32 || rawCp === 127) {
3864
+ i += charLen;
3865
+ continue;
3866
+ }
3849
3867
  const cp = rawCp === 8239 || rawCp === 160 ? 32 : rawCp;
3850
3868
  const char = text.substring(i, i + charLen);
3851
3869
  const gid = fd.cmap[cp] ?? 0;