@michelabboud/visual-forge-mcp 0.11.4 → 0.12.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 (35) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/config/pricing.json +1 -1
  3. package/dist/pdf/font-manager.d.ts +11 -0
  4. package/dist/pdf/font-manager.d.ts.map +1 -1
  5. package/dist/pdf/font-manager.js +36 -0
  6. package/dist/pdf/font-manager.js.map +1 -1
  7. package/dist/pdf/index.d.ts +2 -0
  8. package/dist/pdf/index.d.ts.map +1 -1
  9. package/dist/pdf/index.js +2 -0
  10. package/dist/pdf/index.js.map +1 -1
  11. package/dist/pdf/woff2-converter.d.ts +53 -0
  12. package/dist/pdf/woff2-converter.d.ts.map +1 -0
  13. package/dist/pdf/woff2-converter.js +169 -0
  14. package/dist/pdf/woff2-converter.js.map +1 -0
  15. package/fonts/README.md +81 -0
  16. package/fonts/minimal/Inter-Bold.ttf +0 -0
  17. package/fonts/minimal/Inter-Regular.ttf +0 -0
  18. package/fonts/minimal/JetBrainsMono-Bold.ttf +0 -0
  19. package/fonts/minimal/JetBrainsMono-Regular.ttf +0 -0
  20. package/fonts/minimal/LiberationMono-Bold.ttf +0 -0
  21. package/fonts/minimal/LiberationMono-BoldItalic.ttf +0 -0
  22. package/fonts/minimal/LiberationMono-Italic.ttf +0 -0
  23. package/fonts/minimal/LiberationMono-Regular.ttf +0 -0
  24. package/fonts/minimal/LiberationSans-Bold.ttf +0 -0
  25. package/fonts/minimal/LiberationSans-BoldItalic.ttf +0 -0
  26. package/fonts/minimal/LiberationSans-Italic.ttf +0 -0
  27. package/fonts/minimal/LiberationSans-Regular.ttf +0 -0
  28. package/fonts/minimal/LiberationSerif-Bold.ttf +0 -0
  29. package/fonts/minimal/LiberationSerif-BoldItalic.ttf +0 -0
  30. package/fonts/minimal/LiberationSerif-Italic.ttf +0 -0
  31. package/fonts/minimal/LiberationSerif-Regular.ttf +0 -0
  32. package/fonts/minimal/licenses/Inter-LICENSE.txt +6 -0
  33. package/fonts/minimal/licenses/JetBrainsMono-LICENSE.txt +6 -0
  34. package/fonts/minimal/licenses/Liberation-LICENSE.txt +7 -0
  35. package/package.json +4 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,35 @@ All notable changes to Visual Forge MCP will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.12.0] - 2026-01-17
9
+
10
+ ### Added - Bundled Fonts & WOFF2 Conversion
11
+
12
+ #### Bundled Minimal Fonts
13
+ Visual Forge now includes essential fonts out-of-the-box for PDF generation without additional setup:
14
+
15
+ - **Inter** (Regular, Bold) - Modern UI font
16
+ - **JetBrains Mono** (Regular, Bold) - Code blocks
17
+ - **Liberation Serif/Sans/Mono** (4 variants each) - Microsoft Office compatible
18
+
19
+ Total: 16 fonts (~4.5 MB) bundled in `fonts/minimal/`
20
+
21
+ #### WOFF2 Font Conversion
22
+ New TTF to WOFF2 conversion for HTML output using wawoff2 (WebAssembly):
23
+
24
+ - `convertTtfToWoff2(ttfPath, outputPath)` - Convert single font
25
+ - `convertTtfBatch(paths, outputDir)` - Batch conversion with concurrency
26
+ - `convertDirectoryToWoff2(dir, outputDir)` - Convert all fonts in directory
27
+ - `fontManager.convertFontsToWoff2(outputDir)` - Convert all available fonts
28
+
29
+ WOFF2 provides 30-50% smaller file sizes than TTF for web delivery.
30
+
31
+ ### Changed
32
+ - Font packages now use published npm versions instead of local file references
33
+ - `@michelabboud/visual-forge-fonts-standard` updated to ^1.0.1
34
+
35
+ ---
36
+
8
37
  ## [0.11.4] - 2026-01-17
9
38
 
10
39
  ### Added - Font Manager with Auto-Install
@@ -2,7 +2,7 @@
2
2
  "$schema": "./pricing-schema.json",
3
3
  "version": "2.1.0",
4
4
  "lastUpdated": "2026-01-16",
5
- "lastChecked": "2026-01-16T06:15:00.000Z",
5
+ "lastChecked": "2026-01-17T08:42:57.907Z",
6
6
  "providers": {
7
7
  "openai": {
8
8
  "name": "OpenAI",
@@ -107,6 +107,17 @@ export declare class FontManager {
107
107
  * Get recommended package based on use case
108
108
  */
109
109
  getRecommendedPackage(useCase: 'document' | 'code' | 'design' | 'all'): FontPackageInfo | null;
110
+ /**
111
+ * Convert all TTF fonts to WOFF2 for HTML output
112
+ * @param outputDir Output directory for WOFF2 files
113
+ * @returns Conversion results
114
+ */
115
+ convertFontsToWoff2(outputDir: string): Promise<{
116
+ success: boolean;
117
+ converted: number;
118
+ failed: number;
119
+ outputDir: string;
120
+ }>;
110
121
  }
111
122
  /**
112
123
  * Singleton font manager instance
@@ -1 +1 @@
1
- {"version":3,"file":"font-manager.d.ts","sourceRoot":"","sources":["../../src/pdf/font-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;GAEG;AACH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsDD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,WAAW,CAAS;;IAM5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CjC;;OAEG;YACW,cAAc;IAU5B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAe3B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAM3B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAW9B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAMtC;;OAEG;IACH,oBAAoB,IAAI,WAAW,EAAE;IAIrC;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAyBjC;;OAEG;IACH,SAAS,IAAI;QACX,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IASD;;OAEG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAOzC;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIhE;;;;;OAKG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,MAAM,UAAQ,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlE;;OAEG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,UAAQ,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAetF;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,eAAe,GAAG,IAAI;CAwB/F;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
1
+ {"version":3,"file":"font-manager.d.ts","sourceRoot":"","sources":["../../src/pdf/font-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH;;GAEG;AACH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsDD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAAgB;IACvC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,OAAO,CAAC,WAAW,CAAS;;IAM5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4CjC;;OAEG;YACW,cAAc;IAU5B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAe3B;;OAEG;IACH,eAAe,IAAI,MAAM,EAAE;IAM3B;;OAEG;IACH,kBAAkB,IAAI,MAAM,EAAE;IAW9B;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAMtC;;OAEG;IACH,oBAAoB,IAAI,WAAW,EAAE;IAIrC;;OAEG;IACH,qBAAqB,IAAI,MAAM,EAAE;IAyBjC;;OAEG;IACH,SAAS,IAAI;QACX,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB;IASD;;OAEG;IACH,oBAAoB,IAAI,eAAe,EAAE;IAOzC;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIhE;;;;;OAKG;IACG,kBAAkB,CACtB,WAAW,EAAE,MAAM,EACnB,MAAM,UAAQ,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAuDlE;;OAEG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EAAE,EACtB,MAAM,UAAQ,GACb,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAAE,CAAC;IAetF;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,eAAe,GAAG,IAAI;IAyB9F;;;;OAIG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC;QACpD,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CAiCH;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,EAAE,CAE5C"}
@@ -310,6 +310,42 @@ export class FontManager {
310
310
  }
311
311
  return null;
312
312
  }
313
+ /**
314
+ * Convert all TTF fonts to WOFF2 for HTML output
315
+ * @param outputDir Output directory for WOFF2 files
316
+ * @returns Conversion results
317
+ */
318
+ async convertFontsToWoff2(outputDir) {
319
+ const { convertDirectoryToWoff2 } = await import('./woff2-converter.js');
320
+ let totalConverted = 0;
321
+ let totalFailed = 0;
322
+ // Convert builtin fonts
323
+ try {
324
+ const builtinResult = await convertDirectoryToWoff2(this.builtinPath, outputDir);
325
+ totalConverted += builtinResult.successful;
326
+ totalFailed += builtinResult.failed;
327
+ }
328
+ catch (error) {
329
+ logger.warn('Failed to convert builtin fonts', { error });
330
+ }
331
+ // Convert fonts from installed packages
332
+ for (const fontPath of this.additionalPaths) {
333
+ try {
334
+ const result = await convertDirectoryToWoff2(fontPath, outputDir);
335
+ totalConverted += result.successful;
336
+ totalFailed += result.failed;
337
+ }
338
+ catch (error) {
339
+ logger.warn('Failed to convert fonts from package', { path: fontPath, error });
340
+ }
341
+ }
342
+ return {
343
+ success: totalFailed === 0,
344
+ converted: totalConverted,
345
+ failed: totalFailed,
346
+ outputDir
347
+ };
348
+ }
313
349
  }
314
350
  /**
315
351
  * Singleton font manager instance
@@ -1 +1 @@
1
- {"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/pdf/font-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"font-manager.js","sourceRoot":"","sources":["../../src/pdf/font-manager.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,7 @@ export * from './pdf-types.js';
6
6
  export { ImageConverter, imageConverter } from './image-converter.js';
7
7
  export { FontManager, fontManager, getTypstFontPaths, getAvailableFonts, } from './font-manager.js';
8
8
  export type { FontManager as FontManagerType } from './font-manager.js';
9
+ export { convertTtfToWoff2, convertTtfBatch, convertDirectoryToWoff2, hasUpToDateWoff2, } from './woff2-converter.js';
10
+ export type { ConversionResult, BatchConversionResult } from './woff2-converter.js';
9
11
  export { TypstEngine, typstEngine, generatePDF, generateBatchPDF, } from './typst-engine.js';
10
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pdf/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pdf/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,gBAAgB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtE,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAG3B,YAAY,EAAE,WAAW,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGxE,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAGpF,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
package/dist/pdf/index.js CHANGED
@@ -8,6 +8,8 @@ export * from './pdf-types.js';
8
8
  export { ImageConverter, imageConverter } from './image-converter.js';
9
9
  // Font manager
10
10
  export { FontManager, fontManager, getTypstFontPaths, getAvailableFonts, } from './font-manager.js';
11
+ // WOFF2 converter (for HTML output)
12
+ export { convertTtfToWoff2, convertTtfBatch, convertDirectoryToWoff2, hasUpToDateWoff2, } from './woff2-converter.js';
11
13
  // Typst engine
12
14
  export { TypstEngine, typstEngine, generatePDF, generateBatchPDF, } from './typst-engine.js';
13
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pdf/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAE/B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAe;AACf,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAK3B,eAAe;AACf,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/pdf/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,QAAQ;AACR,cAAc,gBAAgB,CAAC;AAE/B,kBAAkB;AAClB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtE,eAAe;AACf,OAAO,EACL,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAK3B,oCAAoC;AACpC,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC;AAG9B,eAAe;AACf,OAAO,EACL,WAAW,EACX,WAAW,EACX,WAAW,EACX,gBAAgB,GACjB,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Visual Forge MCP - WOFF2 Converter
3
+ * Converts TTF fonts to WOFF2 for HTML output
4
+ * Uses wawoff2 (WebAssembly-based, no native dependencies)
5
+ */
6
+ export interface ConversionResult {
7
+ success: boolean;
8
+ inputPath: string;
9
+ outputPath?: string;
10
+ inputSize?: number;
11
+ outputSize?: number;
12
+ compressionRatio?: number;
13
+ error?: string;
14
+ }
15
+ export interface BatchConversionResult {
16
+ total: number;
17
+ successful: number;
18
+ failed: number;
19
+ results: ConversionResult[];
20
+ totalInputSize: number;
21
+ totalOutputSize: number;
22
+ overallCompressionRatio: number;
23
+ }
24
+ /**
25
+ * Convert a TTF font file to WOFF2
26
+ * @param ttfPath Path to the TTF file
27
+ * @param outputPath Optional output path (defaults to same location with .woff2 extension)
28
+ * @returns Conversion result
29
+ */
30
+ export declare function convertTtfToWoff2(ttfPath: string, outputPath?: string): Promise<ConversionResult>;
31
+ /**
32
+ * Convert multiple TTF files to WOFF2
33
+ * @param ttfPaths Array of TTF file paths
34
+ * @param outputDir Optional output directory (defaults to same location as each file)
35
+ * @param concurrency Number of parallel conversions (default: 4)
36
+ * @returns Batch conversion result
37
+ */
38
+ export declare function convertTtfBatch(ttfPaths: string[], outputDir?: string, concurrency?: number): Promise<BatchConversionResult>;
39
+ /**
40
+ * Convert all TTF files in a directory to WOFF2
41
+ * @param inputDir Directory containing TTF files
42
+ * @param outputDir Output directory (defaults to inputDir)
43
+ * @param recursive Whether to search subdirectories
44
+ * @returns Batch conversion result
45
+ */
46
+ export declare function convertDirectoryToWoff2(inputDir: string, outputDir?: string, recursive?: boolean): Promise<BatchConversionResult>;
47
+ /**
48
+ * Check if WOFF2 version of a font exists and is up to date
49
+ * @param ttfPath Path to TTF file
50
+ * @returns True if WOFF2 exists and is newer than TTF
51
+ */
52
+ export declare function hasUpToDateWoff2(ttfPath: string): Promise<boolean>;
53
+ //# sourceMappingURL=woff2-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woff2-converter.d.ts","sourceRoot":"","sources":["../../src/pdf/woff2-converter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,uBAAuB,EAAE,MAAM,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,gBAAgB,CAAC,CAwD3B;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,CAAC,EAAE,MAAM,EAClB,WAAW,SAAI,GACd,OAAO,CAAC,qBAAqB,CAAC,CAkDhC;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,UAAQ,GAChB,OAAO,CAAC,qBAAqB,CAAC,CAgChC;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAaxE"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Visual Forge MCP - WOFF2 Converter
3
+ * Converts TTF fonts to WOFF2 for HTML output
4
+ * Uses wawoff2 (WebAssembly-based, no native dependencies)
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ import wawoff2 from 'wawoff2';
9
+ import { logger } from '../utils/index.js';
10
+ /**
11
+ * Convert a TTF font file to WOFF2
12
+ * @param ttfPath Path to the TTF file
13
+ * @param outputPath Optional output path (defaults to same location with .woff2 extension)
14
+ * @returns Conversion result
15
+ */
16
+ export async function convertTtfToWoff2(ttfPath, outputPath) {
17
+ try {
18
+ // Validate input file exists
19
+ const stats = await fs.stat(ttfPath);
20
+ if (!stats.isFile()) {
21
+ return {
22
+ success: false,
23
+ inputPath: ttfPath,
24
+ error: 'Input path is not a file'
25
+ };
26
+ }
27
+ // Read TTF file
28
+ const ttfBuffer = await fs.readFile(ttfPath);
29
+ const inputSize = ttfBuffer.length;
30
+ // Convert to WOFF2
31
+ const woff2Buffer = await wawoff2.compress(ttfBuffer);
32
+ const outputSize = woff2Buffer.length;
33
+ // Determine output path
34
+ const finalOutputPath = outputPath || ttfPath.replace(/\.ttf$/i, '.woff2');
35
+ // Ensure output directory exists
36
+ await fs.mkdir(path.dirname(finalOutputPath), { recursive: true });
37
+ // Write WOFF2 file
38
+ await fs.writeFile(finalOutputPath, woff2Buffer);
39
+ const compressionRatio = ((inputSize - outputSize) / inputSize) * 100;
40
+ logger.debug('Converted TTF to WOFF2', {
41
+ input: path.basename(ttfPath),
42
+ inputSize: `${(inputSize / 1024).toFixed(1)} KB`,
43
+ outputSize: `${(outputSize / 1024).toFixed(1)} KB`,
44
+ compression: `${compressionRatio.toFixed(1)}%`
45
+ });
46
+ return {
47
+ success: true,
48
+ inputPath: ttfPath,
49
+ outputPath: finalOutputPath,
50
+ inputSize,
51
+ outputSize,
52
+ compressionRatio
53
+ };
54
+ }
55
+ catch (error) {
56
+ const errorMsg = error instanceof Error ? error.message : String(error);
57
+ logger.error('Failed to convert TTF to WOFF2', { path: ttfPath, error: errorMsg });
58
+ return {
59
+ success: false,
60
+ inputPath: ttfPath,
61
+ error: errorMsg
62
+ };
63
+ }
64
+ }
65
+ /**
66
+ * Convert multiple TTF files to WOFF2
67
+ * @param ttfPaths Array of TTF file paths
68
+ * @param outputDir Optional output directory (defaults to same location as each file)
69
+ * @param concurrency Number of parallel conversions (default: 4)
70
+ * @returns Batch conversion result
71
+ */
72
+ export async function convertTtfBatch(ttfPaths, outputDir, concurrency = 4) {
73
+ const results = [];
74
+ let totalInputSize = 0;
75
+ let totalOutputSize = 0;
76
+ // Process in batches for concurrency control
77
+ for (let i = 0; i < ttfPaths.length; i += concurrency) {
78
+ const batch = ttfPaths.slice(i, i + concurrency);
79
+ const batchResults = await Promise.all(batch.map(ttfPath => {
80
+ const outputPath = outputDir
81
+ ? path.join(outputDir, path.basename(ttfPath).replace(/\.ttf$/i, '.woff2'))
82
+ : undefined;
83
+ return convertTtfToWoff2(ttfPath, outputPath);
84
+ }));
85
+ for (const result of batchResults) {
86
+ results.push(result);
87
+ if (result.success && result.inputSize && result.outputSize) {
88
+ totalInputSize += result.inputSize;
89
+ totalOutputSize += result.outputSize;
90
+ }
91
+ }
92
+ }
93
+ const successful = results.filter(r => r.success).length;
94
+ const failed = results.filter(r => !r.success).length;
95
+ const overallCompressionRatio = totalInputSize > 0
96
+ ? ((totalInputSize - totalOutputSize) / totalInputSize) * 100
97
+ : 0;
98
+ logger.info('Batch WOFF2 conversion complete', {
99
+ total: ttfPaths.length,
100
+ successful,
101
+ failed,
102
+ inputSize: `${(totalInputSize / 1024 / 1024).toFixed(2)} MB`,
103
+ outputSize: `${(totalOutputSize / 1024 / 1024).toFixed(2)} MB`,
104
+ compression: `${overallCompressionRatio.toFixed(1)}%`
105
+ });
106
+ return {
107
+ total: ttfPaths.length,
108
+ successful,
109
+ failed,
110
+ results,
111
+ totalInputSize,
112
+ totalOutputSize,
113
+ overallCompressionRatio
114
+ };
115
+ }
116
+ /**
117
+ * Convert all TTF files in a directory to WOFF2
118
+ * @param inputDir Directory containing TTF files
119
+ * @param outputDir Output directory (defaults to inputDir)
120
+ * @param recursive Whether to search subdirectories
121
+ * @returns Batch conversion result
122
+ */
123
+ export async function convertDirectoryToWoff2(inputDir, outputDir, recursive = false) {
124
+ const ttfPaths = [];
125
+ async function scanDir(dir) {
126
+ const entries = await fs.readdir(dir, { withFileTypes: true });
127
+ for (const entry of entries) {
128
+ const fullPath = path.join(dir, entry.name);
129
+ if (entry.isFile() && entry.name.toLowerCase().endsWith('.ttf')) {
130
+ ttfPaths.push(fullPath);
131
+ }
132
+ else if (recursive && entry.isDirectory()) {
133
+ await scanDir(fullPath);
134
+ }
135
+ }
136
+ }
137
+ await scanDir(inputDir);
138
+ if (ttfPaths.length === 0) {
139
+ return {
140
+ total: 0,
141
+ successful: 0,
142
+ failed: 0,
143
+ results: [],
144
+ totalInputSize: 0,
145
+ totalOutputSize: 0,
146
+ overallCompressionRatio: 0
147
+ };
148
+ }
149
+ return convertTtfBatch(ttfPaths, outputDir || inputDir);
150
+ }
151
+ /**
152
+ * Check if WOFF2 version of a font exists and is up to date
153
+ * @param ttfPath Path to TTF file
154
+ * @returns True if WOFF2 exists and is newer than TTF
155
+ */
156
+ export async function hasUpToDateWoff2(ttfPath) {
157
+ const woff2Path = ttfPath.replace(/\.ttf$/i, '.woff2');
158
+ try {
159
+ const [ttfStats, woff2Stats] = await Promise.all([
160
+ fs.stat(ttfPath),
161
+ fs.stat(woff2Path)
162
+ ]);
163
+ return woff2Stats.mtime >= ttfStats.mtime;
164
+ }
165
+ catch {
166
+ return false;
167
+ }
168
+ }
169
+ //# sourceMappingURL=woff2-converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"woff2-converter.js","sourceRoot":"","sources":["../../src/pdf/woff2-converter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAsB3C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,OAAe,EACf,UAAmB;IAEnB,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YACpB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,OAAO;gBAClB,KAAK,EAAE,0BAA0B;aAClC,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;QAEnC,mBAAmB;QACnB,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;QAEtC,wBAAwB;QACxB,MAAM,eAAe,GAAG,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAE3E,iCAAiC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnE,mBAAmB;QACnB,MAAM,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAEjD,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC;QAEtE,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE;YACrC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAC7B,SAAS,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAChD,UAAU,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAClD,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;SAC/C,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,OAAO;YAClB,UAAU,EAAE,eAAe;YAC3B,SAAS;YACT,UAAU;YACV,gBAAgB;SACjB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxE,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEnF,OAAO;YACL,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,OAAO;YAClB,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAkB,EAClB,SAAkB,EAClB,WAAW,GAAG,CAAC;IAEf,MAAM,OAAO,GAAuB,EAAE,CAAC;IACvC,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,eAAe,GAAG,CAAC,CAAC;IAExB,6CAA6C;IAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC;QACtD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YAClB,MAAM,UAAU,GAAG,SAAS;gBAC1B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;gBAC3E,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAChD,CAAC,CAAC,CACH,CAAC;QAEF,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBAC5D,cAAc,IAAI,MAAM,CAAC,SAAS,CAAC;gBACnC,eAAe,IAAI,MAAM,CAAC,UAAU,CAAC;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACzD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IACtD,MAAM,uBAAuB,GAAG,cAAc,GAAG,CAAC;QAChD,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,eAAe,CAAC,GAAG,cAAc,CAAC,GAAG,GAAG;QAC7D,CAAC,CAAC,CAAC,CAAC;IAEN,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE;QAC7C,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,UAAU;QACV,MAAM;QACN,SAAS,EAAE,GAAG,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QAC5D,UAAU,EAAE,GAAG,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;QAC9D,WAAW,EAAE,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG;KACtD,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,UAAU;QACV,MAAM;QACN,OAAO;QACP,cAAc;QACd,eAAe;QACf,uBAAuB;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB,EAChB,SAAkB,EAClB,SAAS,GAAG,KAAK;IAEjB,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,KAAK,UAAU,OAAO,CAAC,GAAW;QAChC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAE/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAE5C,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,SAAS,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAC5C,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAExB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,EAAE;YACX,cAAc,EAAE,CAAC;YACjB,eAAe,EAAE,CAAC;YAClB,uBAAuB,EAAE,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,OAAO,eAAe,CAAC,QAAQ,EAAE,SAAS,IAAI,QAAQ,CAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAEvD,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC/C,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;YAChB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;SACnB,CAAC,CAAC;QAEH,OAAO,UAAU,CAAC,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,81 @@
1
+ # Visual Forge Fonts
2
+
3
+ This directory contains fonts for PDF generation.
4
+
5
+ ## Bundled Fonts (fonts/minimal/)
6
+
7
+ Visual Forge includes a minimal set of fonts for out-of-the-box PDF generation:
8
+
9
+ | Font | Type | Use Case | License |
10
+ |------|------|----------|---------|
11
+ | Inter | Sans-serif | Modern UI, headings | OFL |
12
+ | JetBrains Mono | Monospace | Code blocks | OFL |
13
+ | Liberation Serif | Serif | Body text, formal docs | OFL |
14
+ | Liberation Sans | Sans-serif | Alternative to Arial | OFL |
15
+ | Liberation Mono | Monospace | Alternative to Courier | OFL |
16
+
17
+ These fonts are automatically detected by the font-manager.
18
+
19
+ ## Additional Font Packages
20
+
21
+ Install additional fonts via npm:
22
+
23
+ ```bash
24
+ # Standard bundle (11 document fonts)
25
+ npm install @michelabboud/visual-forge-fonts-standard
26
+
27
+ # Full bundle (35 fonts including display)
28
+ npm install @michelabboud/visual-forge-fonts-full
29
+
30
+ # Programming fonts only
31
+ npm install @michelabboud/visual-forge-fonts-code
32
+ ```
33
+
34
+ ## Default Fonts (Built into Typst)
35
+
36
+ Typst also includes **DejaVu** fonts as built-ins:
37
+ - DejaVu Serif (body text)
38
+ - DejaVu Sans (headings, UI elements)
39
+ - DejaVu Sans Mono (code blocks)
40
+
41
+ ## Using Custom Fonts
42
+
43
+ ### Option 1: System Fonts
44
+
45
+ Typst automatically detects fonts installed on your system:
46
+
47
+ **Ubuntu/Debian:**
48
+ ```bash
49
+ sudo apt install fonts-open-sans fonts-roboto
50
+ ```
51
+
52
+ **macOS:**
53
+ Fonts in `~/Library/Fonts` or `/Library/Fonts` are auto-detected.
54
+
55
+ **Windows:**
56
+ Fonts in `C:\Windows\Fonts` are auto-detected.
57
+
58
+ ### Option 2: Project Fonts
59
+
60
+ Place `.ttf` or `.otf` files in this `fonts/` directory.
61
+
62
+ ### Option 3: Environment Variable
63
+
64
+ Set `TYPST_FONT_PATHS` to include additional font directories:
65
+
66
+ ```bash
67
+ export TYPST_FONT_PATHS="/path/to/fonts:/another/path"
68
+ ```
69
+
70
+ ## Listing Available Fonts
71
+
72
+ To see all fonts Typst can find:
73
+
74
+ ```bash
75
+ typst fonts
76
+ ```
77
+
78
+ ## Font Licenses
79
+
80
+ All bundled fonts are licensed under SIL Open Font License 1.1.
81
+ See `fonts/minimal/licenses/` for individual license files.
Binary file
Binary file
@@ -0,0 +1,6 @@
1
+ Copyright 2020 The Inter Project Authors (https://github.com/rsms/inter)
2
+
3
+ SIL Open Font License 1.1
4
+
5
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
6
+ This license is available with a FAQ at: https://scripts.sil.org/OFL
@@ -0,0 +1,6 @@
1
+ Copyright 2020 The JetBrains Mono Project Authors (https://github.com/JetBrains/JetBrainsMono)
2
+
3
+ SIL Open Font License 1.1
4
+
5
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
6
+ This license is available with a FAQ at: https://scripts.sil.org/OFL
@@ -0,0 +1,7 @@
1
+ Digitized data copyright (c) 2010 Google Corporation
2
+ with Reserved Font Arimo, Tinos and Cousine.
3
+ Copyright (c) 2012 Red Hat, Inc.
4
+ with Reserved Font Name Liberation.
5
+
6
+ This Font Software is licensed under the SIL Open Font License, Version 1.1.
7
+ This license is available with a FAQ at: https://scripts.sil.org/OFL
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@michelabboud/visual-forge-mcp",
3
- "version": "0.11.4",
3
+ "version": "0.12.0",
4
4
  "description": "MCP server for AI image generation from markdown and HTML with multi-provider support, model testing, and automatic web optimization",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -52,6 +52,7 @@
52
52
  "author": "Michel Abboud",
53
53
  "license": "SEE LICENSE IN LICENSE",
54
54
  "dependencies": {
55
+ "@michelabboud/visual-forge-fonts-standard": "^1.0.1",
55
56
  "@modelcontextprotocol/sdk": "^1.25.2",
56
57
  "axios": "^1.7.0",
57
58
  "axios-retry": "^4.5.0",
@@ -64,6 +65,7 @@
64
65
  "ora": "^8.1.0",
65
66
  "sharp": "^0.33.0",
66
67
  "uuid": "^10.0.0",
68
+ "wawoff2": "^2.0.1",
67
69
  "zod": "^3.25.0"
68
70
  },
69
71
  "devDependencies": {
@@ -84,6 +86,7 @@
84
86
  "files": [
85
87
  "dist",
86
88
  "templates",
89
+ "fonts",
87
90
  "config/pricing.json",
88
91
  "config/pricing-schema.json",
89
92
  "scripts/update-pricing.js",