@chialab/pdfjs-lib 1.0.0-alpha.36 → 1.0.0-alpha.38

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.
@@ -2175,6 +2175,750 @@ __privateAdd(_FontInfo, _OFFSET_DEFAULT_VMETRICS, __privateGet(_FontInfo, _OFFSE
2175
2175
  __privateAdd(_FontInfo, _OFFSET_STRINGS, __privateGet(_FontInfo, _OFFSET_DEFAULT_VMETRICS) + 1 + 2 * 3);
2176
2176
  var FontInfo = _FontInfo;
2177
2177
 
2178
+ // src/pdf.js/src/core/bidi.js
2179
+ var baseTypes = [
2180
+ "BN",
2181
+ "BN",
2182
+ "BN",
2183
+ "BN",
2184
+ "BN",
2185
+ "BN",
2186
+ "BN",
2187
+ "BN",
2188
+ "BN",
2189
+ "S",
2190
+ "B",
2191
+ "S",
2192
+ "WS",
2193
+ "B",
2194
+ "BN",
2195
+ "BN",
2196
+ "BN",
2197
+ "BN",
2198
+ "BN",
2199
+ "BN",
2200
+ "BN",
2201
+ "BN",
2202
+ "BN",
2203
+ "BN",
2204
+ "BN",
2205
+ "BN",
2206
+ "BN",
2207
+ "BN",
2208
+ "B",
2209
+ "B",
2210
+ "B",
2211
+ "S",
2212
+ "WS",
2213
+ "ON",
2214
+ "ON",
2215
+ "ET",
2216
+ "ET",
2217
+ "ET",
2218
+ "ON",
2219
+ "ON",
2220
+ "ON",
2221
+ "ON",
2222
+ "ON",
2223
+ "ES",
2224
+ "CS",
2225
+ "ES",
2226
+ "CS",
2227
+ "CS",
2228
+ "EN",
2229
+ "EN",
2230
+ "EN",
2231
+ "EN",
2232
+ "EN",
2233
+ "EN",
2234
+ "EN",
2235
+ "EN",
2236
+ "EN",
2237
+ "EN",
2238
+ "CS",
2239
+ "ON",
2240
+ "ON",
2241
+ "ON",
2242
+ "ON",
2243
+ "ON",
2244
+ "ON",
2245
+ "L",
2246
+ "L",
2247
+ "L",
2248
+ "L",
2249
+ "L",
2250
+ "L",
2251
+ "L",
2252
+ "L",
2253
+ "L",
2254
+ "L",
2255
+ "L",
2256
+ "L",
2257
+ "L",
2258
+ "L",
2259
+ "L",
2260
+ "L",
2261
+ "L",
2262
+ "L",
2263
+ "L",
2264
+ "L",
2265
+ "L",
2266
+ "L",
2267
+ "L",
2268
+ "L",
2269
+ "L",
2270
+ "L",
2271
+ "ON",
2272
+ "ON",
2273
+ "ON",
2274
+ "ON",
2275
+ "ON",
2276
+ "ON",
2277
+ "L",
2278
+ "L",
2279
+ "L",
2280
+ "L",
2281
+ "L",
2282
+ "L",
2283
+ "L",
2284
+ "L",
2285
+ "L",
2286
+ "L",
2287
+ "L",
2288
+ "L",
2289
+ "L",
2290
+ "L",
2291
+ "L",
2292
+ "L",
2293
+ "L",
2294
+ "L",
2295
+ "L",
2296
+ "L",
2297
+ "L",
2298
+ "L",
2299
+ "L",
2300
+ "L",
2301
+ "L",
2302
+ "L",
2303
+ "ON",
2304
+ "ON",
2305
+ "ON",
2306
+ "ON",
2307
+ "BN",
2308
+ "BN",
2309
+ "BN",
2310
+ "BN",
2311
+ "BN",
2312
+ "BN",
2313
+ "B",
2314
+ "BN",
2315
+ "BN",
2316
+ "BN",
2317
+ "BN",
2318
+ "BN",
2319
+ "BN",
2320
+ "BN",
2321
+ "BN",
2322
+ "BN",
2323
+ "BN",
2324
+ "BN",
2325
+ "BN",
2326
+ "BN",
2327
+ "BN",
2328
+ "BN",
2329
+ "BN",
2330
+ "BN",
2331
+ "BN",
2332
+ "BN",
2333
+ "BN",
2334
+ "BN",
2335
+ "BN",
2336
+ "BN",
2337
+ "BN",
2338
+ "BN",
2339
+ "BN",
2340
+ "CS",
2341
+ "ON",
2342
+ "ET",
2343
+ "ET",
2344
+ "ET",
2345
+ "ET",
2346
+ "ON",
2347
+ "ON",
2348
+ "ON",
2349
+ "ON",
2350
+ "L",
2351
+ "ON",
2352
+ "ON",
2353
+ "BN",
2354
+ "ON",
2355
+ "ON",
2356
+ "ET",
2357
+ "ET",
2358
+ "EN",
2359
+ "EN",
2360
+ "ON",
2361
+ "L",
2362
+ "ON",
2363
+ "ON",
2364
+ "ON",
2365
+ "EN",
2366
+ "L",
2367
+ "ON",
2368
+ "ON",
2369
+ "ON",
2370
+ "ON",
2371
+ "ON",
2372
+ "L",
2373
+ "L",
2374
+ "L",
2375
+ "L",
2376
+ "L",
2377
+ "L",
2378
+ "L",
2379
+ "L",
2380
+ "L",
2381
+ "L",
2382
+ "L",
2383
+ "L",
2384
+ "L",
2385
+ "L",
2386
+ "L",
2387
+ "L",
2388
+ "L",
2389
+ "L",
2390
+ "L",
2391
+ "L",
2392
+ "L",
2393
+ "L",
2394
+ "L",
2395
+ "ON",
2396
+ "L",
2397
+ "L",
2398
+ "L",
2399
+ "L",
2400
+ "L",
2401
+ "L",
2402
+ "L",
2403
+ "L",
2404
+ "L",
2405
+ "L",
2406
+ "L",
2407
+ "L",
2408
+ "L",
2409
+ "L",
2410
+ "L",
2411
+ "L",
2412
+ "L",
2413
+ "L",
2414
+ "L",
2415
+ "L",
2416
+ "L",
2417
+ "L",
2418
+ "L",
2419
+ "L",
2420
+ "L",
2421
+ "L",
2422
+ "L",
2423
+ "L",
2424
+ "L",
2425
+ "L",
2426
+ "L",
2427
+ "ON",
2428
+ "L",
2429
+ "L",
2430
+ "L",
2431
+ "L",
2432
+ "L",
2433
+ "L",
2434
+ "L",
2435
+ "L"
2436
+ ];
2437
+ var arabicTypes = [
2438
+ "AN",
2439
+ "AN",
2440
+ "AN",
2441
+ "AN",
2442
+ "AN",
2443
+ "AN",
2444
+ "ON",
2445
+ "ON",
2446
+ "AL",
2447
+ "ET",
2448
+ "ET",
2449
+ "AL",
2450
+ "CS",
2451
+ "AL",
2452
+ "ON",
2453
+ "ON",
2454
+ "NSM",
2455
+ "NSM",
2456
+ "NSM",
2457
+ "NSM",
2458
+ "NSM",
2459
+ "NSM",
2460
+ "NSM",
2461
+ "NSM",
2462
+ "NSM",
2463
+ "NSM",
2464
+ "NSM",
2465
+ "AL",
2466
+ "AL",
2467
+ "",
2468
+ "AL",
2469
+ "AL",
2470
+ "AL",
2471
+ "AL",
2472
+ "AL",
2473
+ "AL",
2474
+ "AL",
2475
+ "AL",
2476
+ "AL",
2477
+ "AL",
2478
+ "AL",
2479
+ "AL",
2480
+ "AL",
2481
+ "AL",
2482
+ "AL",
2483
+ "AL",
2484
+ "AL",
2485
+ "AL",
2486
+ "AL",
2487
+ "AL",
2488
+ "AL",
2489
+ "AL",
2490
+ "AL",
2491
+ "AL",
2492
+ "AL",
2493
+ "AL",
2494
+ "AL",
2495
+ "AL",
2496
+ "AL",
2497
+ "AL",
2498
+ "AL",
2499
+ "AL",
2500
+ "AL",
2501
+ "AL",
2502
+ "AL",
2503
+ "AL",
2504
+ "AL",
2505
+ "AL",
2506
+ "AL",
2507
+ "AL",
2508
+ "AL",
2509
+ "AL",
2510
+ "AL",
2511
+ "AL",
2512
+ "AL",
2513
+ "NSM",
2514
+ "NSM",
2515
+ "NSM",
2516
+ "NSM",
2517
+ "NSM",
2518
+ "NSM",
2519
+ "NSM",
2520
+ "NSM",
2521
+ "NSM",
2522
+ "NSM",
2523
+ "NSM",
2524
+ "NSM",
2525
+ "NSM",
2526
+ "NSM",
2527
+ "NSM",
2528
+ "NSM",
2529
+ "NSM",
2530
+ "NSM",
2531
+ "NSM",
2532
+ "NSM",
2533
+ "NSM",
2534
+ "AN",
2535
+ "AN",
2536
+ "AN",
2537
+ "AN",
2538
+ "AN",
2539
+ "AN",
2540
+ "AN",
2541
+ "AN",
2542
+ "AN",
2543
+ "AN",
2544
+ "ET",
2545
+ "AN",
2546
+ "AN",
2547
+ "AL",
2548
+ "AL",
2549
+ "AL",
2550
+ "NSM",
2551
+ "AL",
2552
+ "AL",
2553
+ "AL",
2554
+ "AL",
2555
+ "AL",
2556
+ "AL",
2557
+ "AL",
2558
+ "AL",
2559
+ "AL",
2560
+ "AL",
2561
+ "AL",
2562
+ "AL",
2563
+ "AL",
2564
+ "AL",
2565
+ "AL",
2566
+ "AL",
2567
+ "AL",
2568
+ "AL",
2569
+ "AL",
2570
+ "AL",
2571
+ "AL",
2572
+ "AL",
2573
+ "AL",
2574
+ "AL",
2575
+ "AL",
2576
+ "AL",
2577
+ "AL",
2578
+ "AL",
2579
+ "AL",
2580
+ "AL",
2581
+ "AL",
2582
+ "AL",
2583
+ "AL",
2584
+ "AL",
2585
+ "AL",
2586
+ "AL",
2587
+ "AL",
2588
+ "AL",
2589
+ "AL",
2590
+ "AL",
2591
+ "AL",
2592
+ "AL",
2593
+ "AL",
2594
+ "AL",
2595
+ "AL",
2596
+ "AL",
2597
+ "AL",
2598
+ "AL",
2599
+ "AL",
2600
+ "AL",
2601
+ "AL",
2602
+ "AL",
2603
+ "AL",
2604
+ "AL",
2605
+ "AL",
2606
+ "AL",
2607
+ "AL",
2608
+ "AL",
2609
+ "AL",
2610
+ "AL",
2611
+ "AL",
2612
+ "AL",
2613
+ "AL",
2614
+ "AL",
2615
+ "AL",
2616
+ "AL",
2617
+ "AL",
2618
+ "AL",
2619
+ "AL",
2620
+ "AL",
2621
+ "AL",
2622
+ "AL",
2623
+ "AL",
2624
+ "AL",
2625
+ "AL",
2626
+ "AL",
2627
+ "AL",
2628
+ "AL",
2629
+ "AL",
2630
+ "AL",
2631
+ "AL",
2632
+ "AL",
2633
+ "AL",
2634
+ "AL",
2635
+ "AL",
2636
+ "AL",
2637
+ "AL",
2638
+ "AL",
2639
+ "AL",
2640
+ "AL",
2641
+ "AL",
2642
+ "AL",
2643
+ "AL",
2644
+ "AL",
2645
+ "AL",
2646
+ "AL",
2647
+ "AL",
2648
+ "AL",
2649
+ "AL",
2650
+ "AL",
2651
+ "AL",
2652
+ "NSM",
2653
+ "NSM",
2654
+ "NSM",
2655
+ "NSM",
2656
+ "NSM",
2657
+ "NSM",
2658
+ "NSM",
2659
+ "AN",
2660
+ "ON",
2661
+ "NSM",
2662
+ "NSM",
2663
+ "NSM",
2664
+ "NSM",
2665
+ "NSM",
2666
+ "NSM",
2667
+ "AL",
2668
+ "AL",
2669
+ "NSM",
2670
+ "NSM",
2671
+ "ON",
2672
+ "NSM",
2673
+ "NSM",
2674
+ "NSM",
2675
+ "NSM",
2676
+ "AL",
2677
+ "AL",
2678
+ "EN",
2679
+ "EN",
2680
+ "EN",
2681
+ "EN",
2682
+ "EN",
2683
+ "EN",
2684
+ "EN",
2685
+ "EN",
2686
+ "EN",
2687
+ "EN",
2688
+ "AL",
2689
+ "AL",
2690
+ "AL",
2691
+ "AL",
2692
+ "AL",
2693
+ "AL"
2694
+ ];
2695
+ function isOdd(i) {
2696
+ return (i & 1) !== 0;
2697
+ }
2698
+ function isEven(i) {
2699
+ return (i & 1) === 0;
2700
+ }
2701
+ function findUnequal(arr, start, value) {
2702
+ let j, jj;
2703
+ for (j = start, jj = arr.length; j < jj; ++j) {
2704
+ if (arr[j] !== value) {
2705
+ return j;
2706
+ }
2707
+ }
2708
+ return j;
2709
+ }
2710
+ function reverseValues(arr, start, end) {
2711
+ for (let i = start, j = end - 1; i < j; ++i, --j) {
2712
+ const temp = arr[i];
2713
+ arr[i] = arr[j];
2714
+ arr[j] = temp;
2715
+ }
2716
+ }
2717
+ function createBidiText(str, isLTR, vertical = false) {
2718
+ let dir = "ltr";
2719
+ if (vertical) {
2720
+ dir = "ttb";
2721
+ } else if (!isLTR) {
2722
+ dir = "rtl";
2723
+ }
2724
+ return { str, dir };
2725
+ }
2726
+ var chars = [];
2727
+ var types = [];
2728
+ function bidi(str, startLevel = -1, vertical = false) {
2729
+ let isLTR = true;
2730
+ const strLength = str.length;
2731
+ if (strLength === 0 || vertical) {
2732
+ return createBidiText(str, isLTR, vertical);
2733
+ }
2734
+ chars.length = strLength;
2735
+ types.length = strLength;
2736
+ let numBidi = 0;
2737
+ let i, ii;
2738
+ for (i = 0; i < strLength; ++i) {
2739
+ chars[i] = str.charAt(i);
2740
+ const charCode = str.charCodeAt(i);
2741
+ let charType = "L";
2742
+ if (charCode <= 255) {
2743
+ charType = baseTypes[charCode];
2744
+ } else if (1424 <= charCode && charCode <= 1524) {
2745
+ charType = "R";
2746
+ } else if (1536 <= charCode && charCode <= 1791) {
2747
+ charType = arabicTypes[charCode & 255];
2748
+ if (!charType) {
2749
+ warn("Bidi: invalid Unicode character " + charCode.toString(16));
2750
+ }
2751
+ } else if (1792 <= charCode && charCode <= 2220 || 64336 <= charCode && charCode <= 65023 || 65136 <= charCode && charCode <= 65279) {
2752
+ charType = "AL";
2753
+ }
2754
+ if (charType === "R" || charType === "AL" || charType === "AN") {
2755
+ numBidi++;
2756
+ }
2757
+ types[i] = charType;
2758
+ }
2759
+ if (numBidi === 0) {
2760
+ isLTR = true;
2761
+ return createBidiText(str, isLTR);
2762
+ }
2763
+ if (startLevel === -1) {
2764
+ if (numBidi / strLength < 0.3 && strLength > 4) {
2765
+ isLTR = true;
2766
+ startLevel = 0;
2767
+ } else {
2768
+ isLTR = false;
2769
+ startLevel = 1;
2770
+ }
2771
+ }
2772
+ const levels = [];
2773
+ for (i = 0; i < strLength; ++i) {
2774
+ levels[i] = startLevel;
2775
+ }
2776
+ const e = isOdd(startLevel) ? "R" : "L";
2777
+ const sor = e;
2778
+ const eor = sor;
2779
+ let lastType = sor;
2780
+ for (i = 0; i < strLength; ++i) {
2781
+ if (types[i] === "NSM") {
2782
+ types[i] = lastType;
2783
+ } else {
2784
+ lastType = types[i];
2785
+ }
2786
+ }
2787
+ lastType = sor;
2788
+ let t;
2789
+ for (i = 0; i < strLength; ++i) {
2790
+ t = types[i];
2791
+ if (t === "EN") {
2792
+ types[i] = lastType === "AL" ? "AN" : "EN";
2793
+ } else if (t === "R" || t === "L" || t === "AL") {
2794
+ lastType = t;
2795
+ }
2796
+ }
2797
+ for (i = 0; i < strLength; ++i) {
2798
+ t = types[i];
2799
+ if (t === "AL") {
2800
+ types[i] = "R";
2801
+ }
2802
+ }
2803
+ for (i = 1; i < strLength - 1; ++i) {
2804
+ if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") {
2805
+ types[i] = "EN";
2806
+ }
2807
+ if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) {
2808
+ types[i] = types[i - 1];
2809
+ }
2810
+ }
2811
+ for (i = 0; i < strLength; ++i) {
2812
+ if (types[i] === "EN") {
2813
+ for (let j = i - 1; j >= 0; --j) {
2814
+ if (types[j] !== "ET") {
2815
+ break;
2816
+ }
2817
+ types[j] = "EN";
2818
+ }
2819
+ for (let j = i + 1; j < strLength; ++j) {
2820
+ if (types[j] !== "ET") {
2821
+ break;
2822
+ }
2823
+ types[j] = "EN";
2824
+ }
2825
+ }
2826
+ }
2827
+ for (i = 0; i < strLength; ++i) {
2828
+ t = types[i];
2829
+ if (t === "WS" || t === "ES" || t === "ET" || t === "CS") {
2830
+ types[i] = "ON";
2831
+ }
2832
+ }
2833
+ lastType = sor;
2834
+ for (i = 0; i < strLength; ++i) {
2835
+ t = types[i];
2836
+ if (t === "EN") {
2837
+ types[i] = lastType === "L" ? "L" : "EN";
2838
+ } else if (t === "R" || t === "L") {
2839
+ lastType = t;
2840
+ }
2841
+ }
2842
+ for (i = 0; i < strLength; ++i) {
2843
+ if (types[i] === "ON") {
2844
+ const end = findUnequal(types, i + 1, "ON");
2845
+ let before = sor;
2846
+ if (i > 0) {
2847
+ before = types[i - 1];
2848
+ }
2849
+ let after = eor;
2850
+ if (end + 1 < strLength) {
2851
+ after = types[end + 1];
2852
+ }
2853
+ if (before !== "L") {
2854
+ before = "R";
2855
+ }
2856
+ if (after !== "L") {
2857
+ after = "R";
2858
+ }
2859
+ if (before === after) {
2860
+ types.fill(before, i, end);
2861
+ }
2862
+ i = end - 1;
2863
+ }
2864
+ }
2865
+ for (i = 0; i < strLength; ++i) {
2866
+ if (types[i] === "ON") {
2867
+ types[i] = e;
2868
+ }
2869
+ }
2870
+ for (i = 0; i < strLength; ++i) {
2871
+ t = types[i];
2872
+ if (isEven(levels[i])) {
2873
+ if (t === "R") {
2874
+ levels[i] += 1;
2875
+ } else if (t === "AN" || t === "EN") {
2876
+ levels[i] += 2;
2877
+ }
2878
+ } else if (
2879
+ /* isOdd && */
2880
+ t === "L" || t === "AN" || t === "EN"
2881
+ ) {
2882
+ levels[i] += 1;
2883
+ }
2884
+ }
2885
+ let highestLevel = -1;
2886
+ let lowestOddLevel = 99;
2887
+ let level;
2888
+ for (i = 0, ii = levels.length; i < ii; ++i) {
2889
+ level = levels[i];
2890
+ if (highestLevel < level) {
2891
+ highestLevel = level;
2892
+ }
2893
+ if (lowestOddLevel > level && isOdd(level)) {
2894
+ lowestOddLevel = level;
2895
+ }
2896
+ }
2897
+ for (level = highestLevel; level >= lowestOddLevel; --level) {
2898
+ let start = -1;
2899
+ for (i = 0, ii = levels.length; i < ii; ++i) {
2900
+ if (levels[i] < level) {
2901
+ if (start >= 0) {
2902
+ reverseValues(chars, start, i);
2903
+ start = -1;
2904
+ }
2905
+ } else if (start < 0) {
2906
+ start = i;
2907
+ }
2908
+ }
2909
+ if (start >= 0) {
2910
+ reverseValues(chars, start, levels.length);
2911
+ }
2912
+ }
2913
+ for (i = 0, ii = chars.length; i < ii; ++i) {
2914
+ const ch = chars[i];
2915
+ if (ch === "<" || ch === ">") {
2916
+ chars[i] = "";
2917
+ }
2918
+ }
2919
+ return createBidiText(chars.join(""), isLTR);
2920
+ }
2921
+
2178
2922
  // src/pdf.js/src/shared/scripting_utils.js
2179
2923
  function makeColorComp(n) {
2180
2924
  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
@@ -2519,6 +3263,7 @@ export {
2519
3263
  convertBlackAndWhiteToRGBA,
2520
3264
  grayToRGBA,
2521
3265
  FontInfo,
3266
+ bidi,
2522
3267
  ColorConverters,
2523
3268
  DateFormats,
2524
3269
  TimeFormats