@turntrout/subfont 1.7.1 → 1.8.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.
Files changed (147) hide show
  1. package/CLAUDE.md +39 -13
  2. package/README.md +24 -14
  3. package/lib/FontTracerPool.d.ts +1 -0
  4. package/lib/FontTracerPool.d.ts.map +1 -1
  5. package/lib/FontTracerPool.js +46 -24
  6. package/lib/FontTracerPool.js.map +1 -1
  7. package/lib/HeadlessBrowser.d.ts +18 -0
  8. package/lib/HeadlessBrowser.d.ts.map +1 -0
  9. package/lib/HeadlessBrowser.js +216 -210
  10. package/lib/HeadlessBrowser.js.map +1 -0
  11. package/lib/codepointMaps.d.ts +4 -0
  12. package/lib/codepointMaps.d.ts.map +1 -0
  13. package/lib/codepointMaps.js +99 -0
  14. package/lib/codepointMaps.js.map +1 -0
  15. package/lib/collectFeatureGlyphIds.d.ts +3 -0
  16. package/lib/collectFeatureGlyphIds.d.ts.map +1 -0
  17. package/lib/collectFeatureGlyphIds.js +124 -138
  18. package/lib/collectFeatureGlyphIds.js.map +1 -0
  19. package/lib/collectTextsByPage.d.ts +41 -0
  20. package/lib/collectTextsByPage.d.ts.map +1 -0
  21. package/lib/collectTextsByPage.js +726 -965
  22. package/lib/collectTextsByPage.js.map +1 -0
  23. package/lib/concurrencyLimit.d.ts +3 -0
  24. package/lib/concurrencyLimit.d.ts.map +1 -0
  25. package/lib/concurrencyLimit.js +12 -11
  26. package/lib/concurrencyLimit.js.map +1 -0
  27. package/lib/escapeJsStringLiteral.d.ts +3 -0
  28. package/lib/escapeJsStringLiteral.d.ts.map +1 -0
  29. package/lib/escapeJsStringLiteral.js +7 -6
  30. package/lib/escapeJsStringLiteral.js.map +1 -0
  31. package/lib/extractReferencedCustomPropertyNames.d.ts +3 -0
  32. package/lib/extractReferencedCustomPropertyNames.d.ts.map +1 -0
  33. package/lib/extractReferencedCustomPropertyNames.js +15 -16
  34. package/lib/extractReferencedCustomPropertyNames.js.map +1 -0
  35. package/lib/extractVisibleText.d.ts +7 -0
  36. package/lib/extractVisibleText.d.ts.map +1 -0
  37. package/lib/extractVisibleText.js +110 -119
  38. package/lib/extractVisibleText.js.map +1 -0
  39. package/lib/findCustomPropertyDefinitions.d.ts +8 -0
  40. package/lib/findCustomPropertyDefinitions.d.ts.map +1 -0
  41. package/lib/findCustomPropertyDefinitions.js +41 -48
  42. package/lib/findCustomPropertyDefinitions.js.map +1 -0
  43. package/lib/fontConverter.d.ts +2 -0
  44. package/lib/fontConverter.d.ts.map +1 -0
  45. package/lib/fontConverter.js +40 -21
  46. package/lib/fontConverter.js.map +1 -0
  47. package/lib/fontConverterWorker.d.ts +2 -0
  48. package/lib/fontConverterWorker.d.ts.map +1 -0
  49. package/lib/fontConverterWorker.js +52 -15
  50. package/lib/fontConverterWorker.js.map +1 -0
  51. package/lib/fontFaceHelpers.d.ts +64 -0
  52. package/lib/fontFaceHelpers.d.ts.map +1 -0
  53. package/lib/fontFaceHelpers.js +237 -249
  54. package/lib/fontFaceHelpers.js.map +1 -0
  55. package/lib/fontFeatureHelpers.d.ts +30 -0
  56. package/lib/fontFeatureHelpers.d.ts.map +1 -0
  57. package/lib/fontFeatureHelpers.js +277 -212
  58. package/lib/fontFeatureHelpers.js.map +1 -0
  59. package/lib/fontTracerWorker.d.ts +11 -0
  60. package/lib/fontTracerWorker.d.ts.map +1 -0
  61. package/lib/fontTracerWorker.js +94 -60
  62. package/lib/fontTracerWorker.js.map +1 -0
  63. package/lib/gatherStylesheetsWithPredicates.d.ts +26 -0
  64. package/lib/gatherStylesheetsWithPredicates.d.ts.map +1 -0
  65. package/lib/gatherStylesheetsWithPredicates.js +75 -84
  66. package/lib/gatherStylesheetsWithPredicates.js.map +1 -0
  67. package/lib/getCssRulesByProperty.d.ts +29 -0
  68. package/lib/getCssRulesByProperty.d.ts.map +1 -0
  69. package/lib/getCssRulesByProperty.js +316 -316
  70. package/lib/getCssRulesByProperty.js.map +1 -0
  71. package/lib/getFontInfo.d.ts +11 -0
  72. package/lib/getFontInfo.d.ts.map +1 -0
  73. package/lib/getFontInfo.js +31 -33
  74. package/lib/getFontInfo.js.map +1 -0
  75. package/lib/initialValueByProp.d.ts +3 -0
  76. package/lib/initialValueByProp.d.ts.map +1 -0
  77. package/lib/initialValueByProp.js +20 -17
  78. package/lib/initialValueByProp.js.map +1 -0
  79. package/lib/injectSubsetDefinitions.d.ts +3 -0
  80. package/lib/injectSubsetDefinitions.d.ts.map +1 -0
  81. package/lib/injectSubsetDefinitions.js +55 -59
  82. package/lib/injectSubsetDefinitions.js.map +1 -0
  83. package/lib/normalizeFontPropertyValue.d.ts +3 -0
  84. package/lib/normalizeFontPropertyValue.d.ts.map +1 -0
  85. package/lib/normalizeFontPropertyValue.js +59 -54
  86. package/lib/normalizeFontPropertyValue.js.map +1 -0
  87. package/lib/parseCommandLineOptions.d.ts +9 -0
  88. package/lib/parseCommandLineOptions.d.ts.map +1 -0
  89. package/lib/parseCommandLineOptions.js +145 -149
  90. package/lib/parseCommandLineOptions.js.map +1 -0
  91. package/lib/parseFontVariationSettings.d.ts +3 -0
  92. package/lib/parseFontVariationSettings.d.ts.map +1 -0
  93. package/lib/parseFontVariationSettings.js +38 -36
  94. package/lib/parseFontVariationSettings.js.map +1 -0
  95. package/lib/progress.d.ts +27 -0
  96. package/lib/progress.d.ts.map +1 -0
  97. package/lib/progress.js +51 -54
  98. package/lib/progress.js.map +1 -0
  99. package/lib/sfntCache.d.ts +4 -0
  100. package/lib/sfntCache.d.ts.map +1 -0
  101. package/lib/sfntCache.js +67 -25
  102. package/lib/sfntCache.js.map +1 -0
  103. package/lib/stripLocalTokens.d.ts +3 -0
  104. package/lib/stripLocalTokens.d.ts.map +1 -0
  105. package/lib/stripLocalTokens.js +23 -21
  106. package/lib/stripLocalTokens.js.map +1 -0
  107. package/lib/subfont.d.ts +22 -1
  108. package/lib/subfont.d.ts.map +1 -1
  109. package/lib/subfont.js +7 -6
  110. package/lib/subfont.js.map +1 -1
  111. package/lib/subsetFontWithGlyphs.d.ts +4 -0
  112. package/lib/subsetFontWithGlyphs.d.ts.map +1 -1
  113. package/lib/subsetFontWithGlyphs.js +73 -14
  114. package/lib/subsetFontWithGlyphs.js.map +1 -1
  115. package/lib/subsetFonts.d.ts +1 -5
  116. package/lib/subsetFonts.d.ts.map +1 -1
  117. package/lib/subsetFonts.js +18 -17
  118. package/lib/subsetFonts.js.map +1 -1
  119. package/lib/subsetGeneration.d.ts +3 -6
  120. package/lib/subsetGeneration.d.ts.map +1 -1
  121. package/lib/subsetGeneration.js +42 -9
  122. package/lib/subsetGeneration.js.map +1 -1
  123. package/lib/types/shared.d.ts +11 -0
  124. package/lib/types/shared.d.ts.map +1 -0
  125. package/lib/types/shared.js +3 -0
  126. package/lib/types/shared.js.map +1 -0
  127. package/lib/unicodeRange.d.ts +3 -0
  128. package/lib/unicodeRange.d.ts.map +1 -0
  129. package/lib/unicodeRange.js +17 -30
  130. package/lib/unicodeRange.js.map +1 -0
  131. package/lib/unquote.d.ts +3 -0
  132. package/lib/unquote.d.ts.map +1 -0
  133. package/lib/unquote.js +18 -25
  134. package/lib/unquote.js.map +1 -0
  135. package/lib/variationAxes.d.ts +33 -0
  136. package/lib/variationAxes.d.ts.map +1 -0
  137. package/lib/variationAxes.js +127 -157
  138. package/lib/variationAxes.js.map +1 -0
  139. package/lib/warnAboutMissingGlyphs.d.ts +43 -0
  140. package/lib/warnAboutMissingGlyphs.d.ts.map +1 -0
  141. package/lib/warnAboutMissingGlyphs.js +139 -147
  142. package/lib/warnAboutMissingGlyphs.js.map +1 -0
  143. package/lib/wasmQueue.d.ts +3 -0
  144. package/lib/wasmQueue.d.ts.map +1 -0
  145. package/lib/wasmQueue.js +13 -10
  146. package/lib/wasmQueue.js.map +1 -0
  147. package/package.json +3 -2
@@ -1,25 +1,44 @@
1
- const pathModule = require('path');
2
- const { Worker } = require('worker_threads');
3
-
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.convert = convert;
4
+ const pathModule = require("path");
5
+ const worker_threads_1 = require("worker_threads");
4
6
  const workerPath = pathModule.join(__dirname, 'fontConverterWorker.js');
5
-
7
+ const CONVERT_TIMEOUT_MS = 120_000;
6
8
  function convert(buffer, targetFormat, sourceFormat) {
7
- return new Promise((resolve, reject) => {
8
- const worker = new Worker(workerPath);
9
- worker.on('message', (msg) => {
10
- worker.terminate();
11
- if (msg.type === 'result') {
12
- resolve(Buffer.from(msg.buffer));
13
- } else {
14
- reject(new Error(msg.error));
15
- }
9
+ return new Promise((resolve, reject) => {
10
+ let settled = false;
11
+ const worker = new worker_threads_1.Worker(workerPath);
12
+ const timer = setTimeout(() => {
13
+ if (!settled) {
14
+ settled = true;
15
+ worker.terminate();
16
+ reject(new Error(`Font conversion to ${targetFormat} timed out after ${CONVERT_TIMEOUT_MS}ms`));
17
+ }
18
+ }, CONVERT_TIMEOUT_MS);
19
+ timer.unref();
20
+ worker.on('message', (msg) => {
21
+ if (settled)
22
+ return;
23
+ settled = true;
24
+ clearTimeout(timer);
25
+ worker.terminate();
26
+ if (msg.type === 'result' && msg.buffer) {
27
+ resolve(Buffer.from(msg.buffer));
28
+ }
29
+ else {
30
+ reject(new Error(msg.error));
31
+ }
32
+ });
33
+ worker.on('error', (err) => {
34
+ if (settled)
35
+ return;
36
+ settled = true;
37
+ clearTimeout(timer);
38
+ worker.terminate();
39
+ reject(err);
40
+ });
41
+ worker.postMessage({ buffer, targetFormat, sourceFormat });
16
42
  });
17
- worker.on('error', (err) => {
18
- worker.terminate();
19
- reject(err);
20
- });
21
- worker.postMessage({ buffer, targetFormat, sourceFormat });
22
- });
23
43
  }
24
-
25
- module.exports = { convert };
44
+ //# sourceMappingURL=fontConverter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontConverter.js","sourceRoot":"","sources":["../src/fontConverter.ts"],"names":[],"mappings":";;AAYA,0BA0CC;AAtDD,mCAAoC;AACpC,mDAAwC;AAExC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;AACxE,MAAM,kBAAkB,GAAG,OAAO,CAAC;AAQnC,SAAgB,OAAO,CACrB,MAA2B,EAC3B,YAAoB,EACpB,YAAqB;IAErB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,UAAU,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CACJ,IAAI,KAAK,CACP,sBAAsB,YAAY,oBAAoB,kBAAkB,IAAI,CAC7E,CACF,CAAC;YACJ,CAAC;QACH,CAAC,EAAE,kBAAkB,CAAC,CAAC;QACvB,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAkB,EAAE,EAAE;YAC1C,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YACnC,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,SAAS,EAAE,CAAC;YACnB,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fontConverterWorker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontConverterWorker.d.ts","sourceRoot":"","sources":["../src/fontConverterWorker.ts"],"names":[],"mappings":""}
@@ -1,16 +1,53 @@
1
- const { parentPort } = require('worker_threads');
2
- const fontverter = require('fontverter');
3
-
4
- parentPort.on('message', async (msg) => {
5
- try {
6
- const buffer = Buffer.from(msg.buffer);
7
- const result = await fontverter.convert(
8
- buffer,
9
- msg.targetFormat,
10
- msg.sourceFormat
11
- );
12
- parentPort.postMessage({ type: 'result', buffer: result });
13
- } catch (err) {
14
- parentPort.postMessage({ type: 'error', error: err.message });
15
- }
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
16
17
  });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ const worker_threads_1 = require("worker_threads");
37
+ const fontverter = __importStar(require("fontverter"));
38
+ if (!worker_threads_1.parentPort) {
39
+ throw new Error('fontConverterWorker must be run as a worker thread');
40
+ }
41
+ const port = worker_threads_1.parentPort;
42
+ port.on('message', async (msg) => {
43
+ try {
44
+ const buffer = Buffer.from(msg.buffer);
45
+ const result = await fontverter.convert(buffer, msg.targetFormat, msg.sourceFormat);
46
+ port.postMessage({ type: 'result', buffer: result });
47
+ }
48
+ catch (rawErr) {
49
+ const err = rawErr;
50
+ port.postMessage({ type: 'error', error: err.message });
51
+ }
52
+ });
53
+ //# sourceMappingURL=fontConverterWorker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontConverterWorker.js","sourceRoot":"","sources":["../src/fontConverterWorker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAA4C;AAC5C,uDAAyC;AAQzC,IAAI,CAAC,2BAAU,EAAE,CAAC;IAChB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,IAAI,GAAG,2BAAU,CAAC;AAExB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAmB,EAAE,EAAE;IAC/C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CACrC,MAAM,EACN,GAAG,CAAC,YAAY,EAChB,GAAG,CAAC,YAAY,CACjB,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,MAAM,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,MAAe,CAAC;QAC5B,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,64 @@
1
+ export declare function stringifyFontFamily(name: string): string;
2
+ export declare function maybeCssQuote(value: string): string;
3
+ interface CssFontFaceRelation {
4
+ format?: string;
5
+ to: {
6
+ type?: string;
7
+ url: string;
8
+ };
9
+ }
10
+ export declare function getPreferredFontUrl(cssFontFaceSrcRelations?: CssFontFaceRelation[]): string | undefined;
11
+ interface RelationWithHrefType {
12
+ hrefType?: string;
13
+ }
14
+ interface PostCssToString {
15
+ toString(): string;
16
+ }
17
+ export declare function getFontFaceDeclarationText(node: PostCssToString, relations: RelationWithHrefType[]): string;
18
+ interface FontUsageLike {
19
+ subsets?: Record<string, Buffer>;
20
+ props: Record<string, string | number>;
21
+ codepoints: {
22
+ used: number[];
23
+ original: number[];
24
+ };
25
+ fontFamilies: Set<string>;
26
+ }
27
+ export declare function getFontFaceForFontUsage(fontUsage: FontUsageLike): string;
28
+ interface UnusedDeclaration {
29
+ src?: string;
30
+ relations: Array<{
31
+ to: {
32
+ url: string;
33
+ };
34
+ tokenRegExp?: RegExp;
35
+ }>;
36
+ 'font-family'?: string;
37
+ 'font-style'?: string;
38
+ 'font-weight'?: string;
39
+ 'font-stretch'?: string;
40
+ 'unicode-range'?: string;
41
+ 'size-adjust'?: string;
42
+ 'ascent-override'?: string;
43
+ 'descent-override'?: string;
44
+ 'line-gap-override'?: string;
45
+ [key: string]: unknown;
46
+ }
47
+ export declare function getUnusedVariantsStylesheet(fontUsages: FontUsageLike[], accumulatedFontFaceDeclarations: UnusedDeclaration[]): string;
48
+ export declare function getFontUsageStylesheet(fontUsages: FontUsageLike[]): string;
49
+ export declare function getCodepoints(text: string): number[];
50
+ export declare function cssAssetIsEmpty(cssAsset: {
51
+ parseTree: {
52
+ nodes?: Array<{
53
+ type: string;
54
+ text?: string;
55
+ }>;
56
+ };
57
+ }): boolean;
58
+ export declare function parseFontWeightRange(str: string | undefined): [number, number];
59
+ export declare function parseFontStretchRange(str: string | undefined): [number, number];
60
+ export declare function uniqueChars(text: string): string;
61
+ export declare function uniqueCharsFromArray(texts: string[]): string;
62
+ export declare function hashHexPrefix(stringOrBuffer: string | Buffer | Uint8Array): string;
63
+ export {};
64
+ //# sourceMappingURL=fontFaceHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fontFaceHelpers.d.ts","sourceRoot":"","sources":["../src/fontFaceHelpers.ts"],"names":[],"mappings":"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"}