@turntrout/subfont 1.6.0 → 1.7.1

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 (39) hide show
  1. package/README.md +43 -43
  2. package/lib/FontTracerPool.d.ts +37 -0
  3. package/lib/FontTracerPool.d.ts.map +1 -0
  4. package/lib/FontTracerPool.js +212 -173
  5. package/lib/FontTracerPool.js.map +1 -0
  6. package/lib/HeadlessBrowser.js +11 -3
  7. package/lib/cli.d.ts +3 -0
  8. package/lib/cli.d.ts.map +1 -0
  9. package/lib/cli.js +15 -12
  10. package/lib/cli.js.map +1 -0
  11. package/lib/collectTextsByPage.js +425 -352
  12. package/lib/escapeJsStringLiteral.js +13 -0
  13. package/lib/extractVisibleText.js +6 -2
  14. package/lib/fontConverter.js +25 -0
  15. package/lib/fontConverterWorker.js +16 -0
  16. package/lib/fontFaceHelpers.js +16 -4
  17. package/lib/gatherStylesheetsWithPredicates.js +4 -5
  18. package/lib/normalizeFontPropertyValue.js +1 -1
  19. package/lib/sfntCache.js +10 -7
  20. package/lib/subfont.d.ts +33 -0
  21. package/lib/subfont.d.ts.map +1 -0
  22. package/lib/subfont.js +533 -591
  23. package/lib/subfont.js.map +1 -0
  24. package/lib/subsetFontWithGlyphs.d.ts +17 -0
  25. package/lib/subsetFontWithGlyphs.d.ts.map +1 -0
  26. package/lib/subsetFontWithGlyphs.js +231 -253
  27. package/lib/subsetFontWithGlyphs.js.map +1 -0
  28. package/lib/subsetFonts.d.ts +59 -0
  29. package/lib/subsetFonts.d.ts.map +1 -0
  30. package/lib/subsetFonts.js +921 -1180
  31. package/lib/subsetFonts.js.map +1 -0
  32. package/lib/subsetGeneration.d.ts +39 -0
  33. package/lib/subsetGeneration.d.ts.map +1 -0
  34. package/lib/subsetGeneration.js +294 -324
  35. package/lib/subsetGeneration.js.map +1 -0
  36. package/lib/unquote.js +9 -4
  37. package/lib/warnAboutMissingGlyphs.js +36 -25
  38. package/lib/wasmQueue.js +6 -2
  39. package/package.json +11 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsetGeneration.js","sourceRoot":"","sources":["../src/subsetGeneration.ts"],"names":[],"mappings":"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"}
package/lib/unquote.js CHANGED
@@ -1,10 +1,15 @@
1
1
  function unescapeCssString(str) {
2
2
  return str.replace(
3
3
  /\\([0-9a-f]{1,6})(\s?)/gi,
4
- ($0, hexChars, followingWhitespace) =>
5
- `${String.fromCodePoint(parseInt(hexChars, 16))}${
6
- hexChars.length === 6 ? followingWhitespace : ''
7
- }`
4
+ ($0, hexChars, followingWhitespace) => {
5
+ try {
6
+ return `${String.fromCodePoint(parseInt(hexChars, 16))}${
7
+ hexChars.length === 6 ? followingWhitespace : ''
8
+ }`;
9
+ } catch {
10
+ return $0;
11
+ }
12
+ }
8
13
  );
9
14
  }
10
15
 
@@ -42,6 +42,41 @@ async function warnAboutMissingGlyphs(
42
42
  accumulatedFontFaceDeclarations,
43
43
  } of htmlOrSvgAssetTextsWithProps) {
44
44
  let linesAndColumns;
45
+ // Dedupe scans for the same missing char across different fontUsages on
46
+ // this page. On KaTeX-heavy pages the same symbol is often missing in
47
+ // several font-families, and each scan is an O(N) walk of the HTML text.
48
+ const charLookupCache = new Map();
49
+ const lookupChar = (char) => {
50
+ let cached = charLookupCache.get(char);
51
+ if (cached) return cached;
52
+ let firstLocation;
53
+ let occurrences = 0;
54
+ if (char.length > 0) {
55
+ const sourceText = htmlOrSvgAsset.text;
56
+ let searchIdx = 0;
57
+ while (true) {
58
+ const charIdx = sourceText.indexOf(char, searchIdx);
59
+ if (charIdx === -1) break;
60
+ occurrences++;
61
+ if (occurrences === 1) {
62
+ if (!linesAndColumns) {
63
+ linesAndColumns = new LinesAndColumns(sourceText);
64
+ }
65
+ const position = linesAndColumns.locationForIndex(charIdx);
66
+ firstLocation = `${htmlOrSvgAsset.urlOrDescription}:${
67
+ position.line + 1
68
+ }:${position.column + 1}`;
69
+ }
70
+ searchIdx = charIdx + char.length;
71
+ }
72
+ }
73
+ if (!firstLocation) {
74
+ firstLocation = `${htmlOrSvgAsset.urlOrDescription} (generated content)`;
75
+ }
76
+ cached = { firstLocation, occurrences };
77
+ charLookupCache.set(char, cached);
78
+ return cached;
79
+ };
45
80
  for (const fontUsage of fontUsages) {
46
81
  if (!fontUsage.subsets) continue;
47
82
  const subsetBuffer = Object.values(fontUsage.subsets)[0];
@@ -63,31 +98,7 @@ async function warnAboutMissingGlyphs(
63
98
  // Report only the first location plus a count of remaining
64
99
  // occurrences. A character like U+200B can appear thousands of
65
100
  // times on a page and per-occurrence lines drown the log.
66
- let firstLocation;
67
- let occurrences = 0;
68
- if (char.length > 0) {
69
- const sourceText = htmlOrSvgAsset.text;
70
- let searchIdx = 0;
71
- while (true) {
72
- const charIdx = sourceText.indexOf(char, searchIdx);
73
- if (charIdx === -1) break;
74
- occurrences++;
75
- if (occurrences === 1) {
76
- if (!linesAndColumns) {
77
- linesAndColumns = new LinesAndColumns(sourceText);
78
- }
79
- const position = linesAndColumns.locationForIndex(charIdx);
80
- firstLocation = `${htmlOrSvgAsset.urlOrDescription}:${
81
- position.line + 1
82
- }:${position.column + 1}`;
83
- }
84
- searchIdx = charIdx + char.length;
85
- }
86
- }
87
-
88
- if (!firstLocation) {
89
- firstLocation = `${htmlOrSvgAsset.urlOrDescription} (generated content)`;
90
- }
101
+ const { firstLocation, occurrences } = lookupChar(char);
91
102
 
92
103
  missingGlyphsErrors.push({
93
104
  codePoint,
package/lib/wasmQueue.js CHANGED
@@ -5,10 +5,14 @@
5
5
  let queue = Promise.resolve();
6
6
 
7
7
  function enqueue(fn) {
8
- return (queue = queue.then(
8
+ // Chain fn after the previous task settles. Both handlers wrap fn() in
9
+ // an arrow to avoid leaking the previous result/error as an argument.
10
+ // The error handler ensures a prior rejection doesn't block the queue.
11
+ queue = queue.then(
9
12
  () => fn(),
10
13
  () => fn()
11
- ));
14
+ );
15
+ return queue;
12
16
  }
13
17
 
14
18
  module.exports = enqueue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@turntrout/subfont",
3
- "version": "1.6.0",
3
+ "version": "1.7.1",
4
4
  "description": "Automatically subset web fonts to only the characters used on your pages. Fork of Munter/subfont with modern defaults.",
5
5
  "engines": {
6
6
  "node": ">=18.0.0"
@@ -57,7 +57,6 @@
57
57
  "jsdom": "^25.0.0",
58
58
  "lines-and-columns": "^1.1.6",
59
59
  "memoizesync": "^1.1.1",
60
- "p-limit": "^3.0.0",
61
60
  "parse5": "^7.0.0",
62
61
  "postcss": "^8.3.11",
63
62
  "postcss-value-parser": "^4.0.2",
@@ -69,6 +68,8 @@
69
68
  "yargs": "^17.7.2"
70
69
  },
71
70
  "devDependencies": {
71
+ "@types/node": "^20.0.0",
72
+ "@types/yargs": "^17.0.0",
72
73
  "canvas": "npm:@napi-rs/canvas@^0.1.97",
73
74
  "combos": "^0.2.0",
74
75
  "coveralls": "^3.0.9",
@@ -87,7 +88,10 @@
87
88
  "prettier": "^3.0.0",
88
89
  "proxyquire": "^2.1.1",
89
90
  "puppeteer": "^24.39.1",
91
+ "rimraf": "^6.0.0",
90
92
  "sinon": "^19.0.0",
93
+ "typescript": "^5.6.0",
94
+ "typescript-eslint": "^8.59.0",
91
95
  "unexpected": "^11.8.1",
92
96
  "unexpected-check": "^2.3.1",
93
97
  "unexpected-resemble": "^5.0.1",
@@ -95,7 +99,11 @@
95
99
  "unexpected-sinon": "^10.11.2"
96
100
  },
97
101
  "scripts": {
98
- "lint": "eslint . && prettier --check '**/*.{js,md}'",
102
+ "build": "tsc && chmod +x lib/cli.js",
103
+ "clean": "rimraf 'lib/{cli,subfont,subsetFonts,FontTracerPool,subsetFontWithGlyphs,subsetGeneration}.{js,d.ts,d.ts.map,js.map}'",
104
+ "typecheck": "tsc --noEmit",
105
+ "lint": "eslint . && prettier --check '**/*.{js,ts,md}'",
106
+ "pretest": "npm run build",
99
107
  "test": "mocha && npm run lint",
100
108
  "coverage": "nyc --reporter=lcov --reporter=text -- mocha",
101
109
  "check-coverage": "nyc check-coverage",