@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.
@@ -7,7 +7,8 @@ import {
7
7
  ResponseException,
8
8
  UnknownErrorException,
9
9
  assert,
10
- unreachable
10
+ unreachable,
11
+ warn
11
12
  } from "./chunk-T2JWSGAF.js";
12
13
  import {
13
14
  __privateAdd,
@@ -1029,6 +1030,750 @@ __privateAdd(_FontInfo, _OFFSET_DEFAULT_VMETRICS, __privateGet(_FontInfo, _OFFSE
1029
1030
  __privateAdd(_FontInfo, _OFFSET_STRINGS, __privateGet(_FontInfo, _OFFSET_DEFAULT_VMETRICS) + 1 + 2 * 3);
1030
1031
  var FontInfo = _FontInfo;
1031
1032
 
1033
+ // src/pdf.js/src/core/bidi.js
1034
+ var baseTypes = [
1035
+ "BN",
1036
+ "BN",
1037
+ "BN",
1038
+ "BN",
1039
+ "BN",
1040
+ "BN",
1041
+ "BN",
1042
+ "BN",
1043
+ "BN",
1044
+ "S",
1045
+ "B",
1046
+ "S",
1047
+ "WS",
1048
+ "B",
1049
+ "BN",
1050
+ "BN",
1051
+ "BN",
1052
+ "BN",
1053
+ "BN",
1054
+ "BN",
1055
+ "BN",
1056
+ "BN",
1057
+ "BN",
1058
+ "BN",
1059
+ "BN",
1060
+ "BN",
1061
+ "BN",
1062
+ "BN",
1063
+ "B",
1064
+ "B",
1065
+ "B",
1066
+ "S",
1067
+ "WS",
1068
+ "ON",
1069
+ "ON",
1070
+ "ET",
1071
+ "ET",
1072
+ "ET",
1073
+ "ON",
1074
+ "ON",
1075
+ "ON",
1076
+ "ON",
1077
+ "ON",
1078
+ "ES",
1079
+ "CS",
1080
+ "ES",
1081
+ "CS",
1082
+ "CS",
1083
+ "EN",
1084
+ "EN",
1085
+ "EN",
1086
+ "EN",
1087
+ "EN",
1088
+ "EN",
1089
+ "EN",
1090
+ "EN",
1091
+ "EN",
1092
+ "EN",
1093
+ "CS",
1094
+ "ON",
1095
+ "ON",
1096
+ "ON",
1097
+ "ON",
1098
+ "ON",
1099
+ "ON",
1100
+ "L",
1101
+ "L",
1102
+ "L",
1103
+ "L",
1104
+ "L",
1105
+ "L",
1106
+ "L",
1107
+ "L",
1108
+ "L",
1109
+ "L",
1110
+ "L",
1111
+ "L",
1112
+ "L",
1113
+ "L",
1114
+ "L",
1115
+ "L",
1116
+ "L",
1117
+ "L",
1118
+ "L",
1119
+ "L",
1120
+ "L",
1121
+ "L",
1122
+ "L",
1123
+ "L",
1124
+ "L",
1125
+ "L",
1126
+ "ON",
1127
+ "ON",
1128
+ "ON",
1129
+ "ON",
1130
+ "ON",
1131
+ "ON",
1132
+ "L",
1133
+ "L",
1134
+ "L",
1135
+ "L",
1136
+ "L",
1137
+ "L",
1138
+ "L",
1139
+ "L",
1140
+ "L",
1141
+ "L",
1142
+ "L",
1143
+ "L",
1144
+ "L",
1145
+ "L",
1146
+ "L",
1147
+ "L",
1148
+ "L",
1149
+ "L",
1150
+ "L",
1151
+ "L",
1152
+ "L",
1153
+ "L",
1154
+ "L",
1155
+ "L",
1156
+ "L",
1157
+ "L",
1158
+ "ON",
1159
+ "ON",
1160
+ "ON",
1161
+ "ON",
1162
+ "BN",
1163
+ "BN",
1164
+ "BN",
1165
+ "BN",
1166
+ "BN",
1167
+ "BN",
1168
+ "B",
1169
+ "BN",
1170
+ "BN",
1171
+ "BN",
1172
+ "BN",
1173
+ "BN",
1174
+ "BN",
1175
+ "BN",
1176
+ "BN",
1177
+ "BN",
1178
+ "BN",
1179
+ "BN",
1180
+ "BN",
1181
+ "BN",
1182
+ "BN",
1183
+ "BN",
1184
+ "BN",
1185
+ "BN",
1186
+ "BN",
1187
+ "BN",
1188
+ "BN",
1189
+ "BN",
1190
+ "BN",
1191
+ "BN",
1192
+ "BN",
1193
+ "BN",
1194
+ "BN",
1195
+ "CS",
1196
+ "ON",
1197
+ "ET",
1198
+ "ET",
1199
+ "ET",
1200
+ "ET",
1201
+ "ON",
1202
+ "ON",
1203
+ "ON",
1204
+ "ON",
1205
+ "L",
1206
+ "ON",
1207
+ "ON",
1208
+ "BN",
1209
+ "ON",
1210
+ "ON",
1211
+ "ET",
1212
+ "ET",
1213
+ "EN",
1214
+ "EN",
1215
+ "ON",
1216
+ "L",
1217
+ "ON",
1218
+ "ON",
1219
+ "ON",
1220
+ "EN",
1221
+ "L",
1222
+ "ON",
1223
+ "ON",
1224
+ "ON",
1225
+ "ON",
1226
+ "ON",
1227
+ "L",
1228
+ "L",
1229
+ "L",
1230
+ "L",
1231
+ "L",
1232
+ "L",
1233
+ "L",
1234
+ "L",
1235
+ "L",
1236
+ "L",
1237
+ "L",
1238
+ "L",
1239
+ "L",
1240
+ "L",
1241
+ "L",
1242
+ "L",
1243
+ "L",
1244
+ "L",
1245
+ "L",
1246
+ "L",
1247
+ "L",
1248
+ "L",
1249
+ "L",
1250
+ "ON",
1251
+ "L",
1252
+ "L",
1253
+ "L",
1254
+ "L",
1255
+ "L",
1256
+ "L",
1257
+ "L",
1258
+ "L",
1259
+ "L",
1260
+ "L",
1261
+ "L",
1262
+ "L",
1263
+ "L",
1264
+ "L",
1265
+ "L",
1266
+ "L",
1267
+ "L",
1268
+ "L",
1269
+ "L",
1270
+ "L",
1271
+ "L",
1272
+ "L",
1273
+ "L",
1274
+ "L",
1275
+ "L",
1276
+ "L",
1277
+ "L",
1278
+ "L",
1279
+ "L",
1280
+ "L",
1281
+ "L",
1282
+ "ON",
1283
+ "L",
1284
+ "L",
1285
+ "L",
1286
+ "L",
1287
+ "L",
1288
+ "L",
1289
+ "L",
1290
+ "L"
1291
+ ];
1292
+ var arabicTypes = [
1293
+ "AN",
1294
+ "AN",
1295
+ "AN",
1296
+ "AN",
1297
+ "AN",
1298
+ "AN",
1299
+ "ON",
1300
+ "ON",
1301
+ "AL",
1302
+ "ET",
1303
+ "ET",
1304
+ "AL",
1305
+ "CS",
1306
+ "AL",
1307
+ "ON",
1308
+ "ON",
1309
+ "NSM",
1310
+ "NSM",
1311
+ "NSM",
1312
+ "NSM",
1313
+ "NSM",
1314
+ "NSM",
1315
+ "NSM",
1316
+ "NSM",
1317
+ "NSM",
1318
+ "NSM",
1319
+ "NSM",
1320
+ "AL",
1321
+ "AL",
1322
+ "",
1323
+ "AL",
1324
+ "AL",
1325
+ "AL",
1326
+ "AL",
1327
+ "AL",
1328
+ "AL",
1329
+ "AL",
1330
+ "AL",
1331
+ "AL",
1332
+ "AL",
1333
+ "AL",
1334
+ "AL",
1335
+ "AL",
1336
+ "AL",
1337
+ "AL",
1338
+ "AL",
1339
+ "AL",
1340
+ "AL",
1341
+ "AL",
1342
+ "AL",
1343
+ "AL",
1344
+ "AL",
1345
+ "AL",
1346
+ "AL",
1347
+ "AL",
1348
+ "AL",
1349
+ "AL",
1350
+ "AL",
1351
+ "AL",
1352
+ "AL",
1353
+ "AL",
1354
+ "AL",
1355
+ "AL",
1356
+ "AL",
1357
+ "AL",
1358
+ "AL",
1359
+ "AL",
1360
+ "AL",
1361
+ "AL",
1362
+ "AL",
1363
+ "AL",
1364
+ "AL",
1365
+ "AL",
1366
+ "AL",
1367
+ "AL",
1368
+ "NSM",
1369
+ "NSM",
1370
+ "NSM",
1371
+ "NSM",
1372
+ "NSM",
1373
+ "NSM",
1374
+ "NSM",
1375
+ "NSM",
1376
+ "NSM",
1377
+ "NSM",
1378
+ "NSM",
1379
+ "NSM",
1380
+ "NSM",
1381
+ "NSM",
1382
+ "NSM",
1383
+ "NSM",
1384
+ "NSM",
1385
+ "NSM",
1386
+ "NSM",
1387
+ "NSM",
1388
+ "NSM",
1389
+ "AN",
1390
+ "AN",
1391
+ "AN",
1392
+ "AN",
1393
+ "AN",
1394
+ "AN",
1395
+ "AN",
1396
+ "AN",
1397
+ "AN",
1398
+ "AN",
1399
+ "ET",
1400
+ "AN",
1401
+ "AN",
1402
+ "AL",
1403
+ "AL",
1404
+ "AL",
1405
+ "NSM",
1406
+ "AL",
1407
+ "AL",
1408
+ "AL",
1409
+ "AL",
1410
+ "AL",
1411
+ "AL",
1412
+ "AL",
1413
+ "AL",
1414
+ "AL",
1415
+ "AL",
1416
+ "AL",
1417
+ "AL",
1418
+ "AL",
1419
+ "AL",
1420
+ "AL",
1421
+ "AL",
1422
+ "AL",
1423
+ "AL",
1424
+ "AL",
1425
+ "AL",
1426
+ "AL",
1427
+ "AL",
1428
+ "AL",
1429
+ "AL",
1430
+ "AL",
1431
+ "AL",
1432
+ "AL",
1433
+ "AL",
1434
+ "AL",
1435
+ "AL",
1436
+ "AL",
1437
+ "AL",
1438
+ "AL",
1439
+ "AL",
1440
+ "AL",
1441
+ "AL",
1442
+ "AL",
1443
+ "AL",
1444
+ "AL",
1445
+ "AL",
1446
+ "AL",
1447
+ "AL",
1448
+ "AL",
1449
+ "AL",
1450
+ "AL",
1451
+ "AL",
1452
+ "AL",
1453
+ "AL",
1454
+ "AL",
1455
+ "AL",
1456
+ "AL",
1457
+ "AL",
1458
+ "AL",
1459
+ "AL",
1460
+ "AL",
1461
+ "AL",
1462
+ "AL",
1463
+ "AL",
1464
+ "AL",
1465
+ "AL",
1466
+ "AL",
1467
+ "AL",
1468
+ "AL",
1469
+ "AL",
1470
+ "AL",
1471
+ "AL",
1472
+ "AL",
1473
+ "AL",
1474
+ "AL",
1475
+ "AL",
1476
+ "AL",
1477
+ "AL",
1478
+ "AL",
1479
+ "AL",
1480
+ "AL",
1481
+ "AL",
1482
+ "AL",
1483
+ "AL",
1484
+ "AL",
1485
+ "AL",
1486
+ "AL",
1487
+ "AL",
1488
+ "AL",
1489
+ "AL",
1490
+ "AL",
1491
+ "AL",
1492
+ "AL",
1493
+ "AL",
1494
+ "AL",
1495
+ "AL",
1496
+ "AL",
1497
+ "AL",
1498
+ "AL",
1499
+ "AL",
1500
+ "AL",
1501
+ "AL",
1502
+ "AL",
1503
+ "AL",
1504
+ "AL",
1505
+ "AL",
1506
+ "AL",
1507
+ "NSM",
1508
+ "NSM",
1509
+ "NSM",
1510
+ "NSM",
1511
+ "NSM",
1512
+ "NSM",
1513
+ "NSM",
1514
+ "AN",
1515
+ "ON",
1516
+ "NSM",
1517
+ "NSM",
1518
+ "NSM",
1519
+ "NSM",
1520
+ "NSM",
1521
+ "NSM",
1522
+ "AL",
1523
+ "AL",
1524
+ "NSM",
1525
+ "NSM",
1526
+ "ON",
1527
+ "NSM",
1528
+ "NSM",
1529
+ "NSM",
1530
+ "NSM",
1531
+ "AL",
1532
+ "AL",
1533
+ "EN",
1534
+ "EN",
1535
+ "EN",
1536
+ "EN",
1537
+ "EN",
1538
+ "EN",
1539
+ "EN",
1540
+ "EN",
1541
+ "EN",
1542
+ "EN",
1543
+ "AL",
1544
+ "AL",
1545
+ "AL",
1546
+ "AL",
1547
+ "AL",
1548
+ "AL"
1549
+ ];
1550
+ function isOdd(i) {
1551
+ return (i & 1) !== 0;
1552
+ }
1553
+ function isEven(i) {
1554
+ return (i & 1) === 0;
1555
+ }
1556
+ function findUnequal(arr, start, value) {
1557
+ let j, jj;
1558
+ for (j = start, jj = arr.length; j < jj; ++j) {
1559
+ if (arr[j] !== value) {
1560
+ return j;
1561
+ }
1562
+ }
1563
+ return j;
1564
+ }
1565
+ function reverseValues(arr, start, end) {
1566
+ for (let i = start, j = end - 1; i < j; ++i, --j) {
1567
+ const temp = arr[i];
1568
+ arr[i] = arr[j];
1569
+ arr[j] = temp;
1570
+ }
1571
+ }
1572
+ function createBidiText(str, isLTR, vertical = false) {
1573
+ let dir = "ltr";
1574
+ if (vertical) {
1575
+ dir = "ttb";
1576
+ } else if (!isLTR) {
1577
+ dir = "rtl";
1578
+ }
1579
+ return { str, dir };
1580
+ }
1581
+ var chars = [];
1582
+ var types = [];
1583
+ function bidi(str, startLevel = -1, vertical = false) {
1584
+ let isLTR = true;
1585
+ const strLength = str.length;
1586
+ if (strLength === 0 || vertical) {
1587
+ return createBidiText(str, isLTR, vertical);
1588
+ }
1589
+ chars.length = strLength;
1590
+ types.length = strLength;
1591
+ let numBidi = 0;
1592
+ let i, ii;
1593
+ for (i = 0; i < strLength; ++i) {
1594
+ chars[i] = str.charAt(i);
1595
+ const charCode = str.charCodeAt(i);
1596
+ let charType = "L";
1597
+ if (charCode <= 255) {
1598
+ charType = baseTypes[charCode];
1599
+ } else if (1424 <= charCode && charCode <= 1524) {
1600
+ charType = "R";
1601
+ } else if (1536 <= charCode && charCode <= 1791) {
1602
+ charType = arabicTypes[charCode & 255];
1603
+ if (!charType) {
1604
+ warn("Bidi: invalid Unicode character " + charCode.toString(16));
1605
+ }
1606
+ } else if (1792 <= charCode && charCode <= 2220 || 64336 <= charCode && charCode <= 65023 || 65136 <= charCode && charCode <= 65279) {
1607
+ charType = "AL";
1608
+ }
1609
+ if (charType === "R" || charType === "AL" || charType === "AN") {
1610
+ numBidi++;
1611
+ }
1612
+ types[i] = charType;
1613
+ }
1614
+ if (numBidi === 0) {
1615
+ isLTR = true;
1616
+ return createBidiText(str, isLTR);
1617
+ }
1618
+ if (startLevel === -1) {
1619
+ if (numBidi / strLength < 0.3 && strLength > 4) {
1620
+ isLTR = true;
1621
+ startLevel = 0;
1622
+ } else {
1623
+ isLTR = false;
1624
+ startLevel = 1;
1625
+ }
1626
+ }
1627
+ const levels = [];
1628
+ for (i = 0; i < strLength; ++i) {
1629
+ levels[i] = startLevel;
1630
+ }
1631
+ const e = isOdd(startLevel) ? "R" : "L";
1632
+ const sor = e;
1633
+ const eor = sor;
1634
+ let lastType = sor;
1635
+ for (i = 0; i < strLength; ++i) {
1636
+ if (types[i] === "NSM") {
1637
+ types[i] = lastType;
1638
+ } else {
1639
+ lastType = types[i];
1640
+ }
1641
+ }
1642
+ lastType = sor;
1643
+ let t;
1644
+ for (i = 0; i < strLength; ++i) {
1645
+ t = types[i];
1646
+ if (t === "EN") {
1647
+ types[i] = lastType === "AL" ? "AN" : "EN";
1648
+ } else if (t === "R" || t === "L" || t === "AL") {
1649
+ lastType = t;
1650
+ }
1651
+ }
1652
+ for (i = 0; i < strLength; ++i) {
1653
+ t = types[i];
1654
+ if (t === "AL") {
1655
+ types[i] = "R";
1656
+ }
1657
+ }
1658
+ for (i = 1; i < strLength - 1; ++i) {
1659
+ if (types[i] === "ES" && types[i - 1] === "EN" && types[i + 1] === "EN") {
1660
+ types[i] = "EN";
1661
+ }
1662
+ if (types[i] === "CS" && (types[i - 1] === "EN" || types[i - 1] === "AN") && types[i + 1] === types[i - 1]) {
1663
+ types[i] = types[i - 1];
1664
+ }
1665
+ }
1666
+ for (i = 0; i < strLength; ++i) {
1667
+ if (types[i] === "EN") {
1668
+ for (let j = i - 1; j >= 0; --j) {
1669
+ if (types[j] !== "ET") {
1670
+ break;
1671
+ }
1672
+ types[j] = "EN";
1673
+ }
1674
+ for (let j = i + 1; j < strLength; ++j) {
1675
+ if (types[j] !== "ET") {
1676
+ break;
1677
+ }
1678
+ types[j] = "EN";
1679
+ }
1680
+ }
1681
+ }
1682
+ for (i = 0; i < strLength; ++i) {
1683
+ t = types[i];
1684
+ if (t === "WS" || t === "ES" || t === "ET" || t === "CS") {
1685
+ types[i] = "ON";
1686
+ }
1687
+ }
1688
+ lastType = sor;
1689
+ for (i = 0; i < strLength; ++i) {
1690
+ t = types[i];
1691
+ if (t === "EN") {
1692
+ types[i] = lastType === "L" ? "L" : "EN";
1693
+ } else if (t === "R" || t === "L") {
1694
+ lastType = t;
1695
+ }
1696
+ }
1697
+ for (i = 0; i < strLength; ++i) {
1698
+ if (types[i] === "ON") {
1699
+ const end = findUnequal(types, i + 1, "ON");
1700
+ let before = sor;
1701
+ if (i > 0) {
1702
+ before = types[i - 1];
1703
+ }
1704
+ let after = eor;
1705
+ if (end + 1 < strLength) {
1706
+ after = types[end + 1];
1707
+ }
1708
+ if (before !== "L") {
1709
+ before = "R";
1710
+ }
1711
+ if (after !== "L") {
1712
+ after = "R";
1713
+ }
1714
+ if (before === after) {
1715
+ types.fill(before, i, end);
1716
+ }
1717
+ i = end - 1;
1718
+ }
1719
+ }
1720
+ for (i = 0; i < strLength; ++i) {
1721
+ if (types[i] === "ON") {
1722
+ types[i] = e;
1723
+ }
1724
+ }
1725
+ for (i = 0; i < strLength; ++i) {
1726
+ t = types[i];
1727
+ if (isEven(levels[i])) {
1728
+ if (t === "R") {
1729
+ levels[i] += 1;
1730
+ } else if (t === "AN" || t === "EN") {
1731
+ levels[i] += 2;
1732
+ }
1733
+ } else if (
1734
+ /* isOdd && */
1735
+ t === "L" || t === "AN" || t === "EN"
1736
+ ) {
1737
+ levels[i] += 1;
1738
+ }
1739
+ }
1740
+ let highestLevel = -1;
1741
+ let lowestOddLevel = 99;
1742
+ let level;
1743
+ for (i = 0, ii = levels.length; i < ii; ++i) {
1744
+ level = levels[i];
1745
+ if (highestLevel < level) {
1746
+ highestLevel = level;
1747
+ }
1748
+ if (lowestOddLevel > level && isOdd(level)) {
1749
+ lowestOddLevel = level;
1750
+ }
1751
+ }
1752
+ for (level = highestLevel; level >= lowestOddLevel; --level) {
1753
+ let start = -1;
1754
+ for (i = 0, ii = levels.length; i < ii; ++i) {
1755
+ if (levels[i] < level) {
1756
+ if (start >= 0) {
1757
+ reverseValues(chars, start, i);
1758
+ start = -1;
1759
+ }
1760
+ } else if (start < 0) {
1761
+ start = i;
1762
+ }
1763
+ }
1764
+ if (start >= 0) {
1765
+ reverseValues(chars, start, levels.length);
1766
+ }
1767
+ }
1768
+ for (i = 0, ii = chars.length; i < ii; ++i) {
1769
+ const ch = chars[i];
1770
+ if (ch === "<" || ch === ">") {
1771
+ chars[i] = "";
1772
+ }
1773
+ }
1774
+ return createBidiText(chars.join(""), isLTR);
1775
+ }
1776
+
1032
1777
  // src/pdf.js/src/shared/scripting_utils.js
1033
1778
  function makeColorComp(n) {
1034
1779
  return Math.floor(Math.max(0, Math.min(1, n)) * 255).toString(16).padStart(2, "0");
@@ -1313,6 +2058,7 @@ export {
1313
2058
  convertBlackAndWhiteToRGBA,
1314
2059
  grayToRGBA,
1315
2060
  FontInfo,
2061
+ bidi,
1316
2062
  ColorConverters,
1317
2063
  DateFormats,
1318
2064
  TimeFormats