docgen-utils 1.0.16 → 1.0.18

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 (37) hide show
  1. package/dist/bundle.js +441 -176
  2. package/dist/bundle.min.js +233 -233
  3. package/dist/cli.js +350 -151
  4. package/dist/packages/cli/commands/export-docs.d.ts +2 -3
  5. package/dist/packages/cli/commands/export-docs.d.ts.map +1 -1
  6. package/dist/packages/cli/commands/export-docs.js +108 -101
  7. package/dist/packages/cli/commands/export-docs.js.map +1 -1
  8. package/dist/packages/cli/commands/export-slides.d.ts +10 -0
  9. package/dist/packages/cli/commands/export-slides.d.ts.map +1 -1
  10. package/dist/packages/cli/commands/export-slides.js +41 -26
  11. package/dist/packages/cli/commands/export-slides.js.map +1 -1
  12. package/dist/packages/docs/convert.d.ts.map +1 -1
  13. package/dist/packages/docs/convert.js +14 -10
  14. package/dist/packages/docs/convert.js.map +1 -1
  15. package/dist/packages/docs/import-docx.d.ts.map +1 -1
  16. package/dist/packages/docs/import-docx.js +256 -11
  17. package/dist/packages/docs/import-docx.js.map +1 -1
  18. package/dist/packages/shared/fetch-with-proxy.d.ts +13 -0
  19. package/dist/packages/shared/fetch-with-proxy.d.ts.map +1 -0
  20. package/dist/packages/shared/fetch-with-proxy.js +33 -0
  21. package/dist/packages/shared/fetch-with-proxy.js.map +1 -0
  22. package/dist/packages/shared/fonts.d.ts +73 -0
  23. package/dist/packages/shared/fonts.d.ts.map +1 -0
  24. package/dist/packages/shared/fonts.js +251 -0
  25. package/dist/packages/shared/fonts.js.map +1 -0
  26. package/dist/packages/slides/common.d.ts +4 -0
  27. package/dist/packages/slides/common.d.ts.map +1 -1
  28. package/dist/packages/slides/convert.d.ts.map +1 -1
  29. package/dist/packages/slides/convert.js +34 -4
  30. package/dist/packages/slides/convert.js.map +1 -1
  31. package/dist/packages/slides/fonts.d.ts +4 -37
  32. package/dist/packages/slides/fonts.d.ts.map +1 -1
  33. package/dist/packages/slides/fonts.js +4 -205
  34. package/dist/packages/slides/fonts.js.map +1 -1
  35. package/dist/packages/slides/vendor/pptxgen.d.ts +2 -0
  36. package/dist/packages/slides/vendor/pptxgen.js +2 -1
  37. package/package.json +1 -1
@@ -1,209 +1,8 @@
1
1
  /**
2
- * Shared font mapping for PPTX import and export.
2
+ * Font utilities for office artifacts import and export.
3
3
  *
4
- * Single source of truth that maps font names to:
5
- * - CSS fallback stacks (for import: PPTX HTML)
6
- * - Office-compatible font names (for export: HTML → PPTX)
7
- *
8
- * Used by import-pptx.ts, transform.ts, and parse.ts.
9
- */
10
- // ============================================================================
11
- // Font Map — single source of truth
12
- // ============================================================================
13
- /**
14
- * Comprehensive font map covering:
15
- * - Microsoft Office fonts (Calibri, Cambria, Aptos, etc.)
16
- * - CJK fonts (Japanese, Chinese, Korean)
17
- * - Google Fonts / web fonts (Inter, Montserrat, Playfair Display, etc.)
18
- * - GitHub Copilot fonts (Ginto)
19
- * - Common system/UI fonts
20
- * - Handwriting / decorative fonts
21
- * - Symbol fonts
22
- *
23
- * Keys are the canonical (case-sensitive) font names as they appear in PPTX
24
- * files or CSS. Lookup helpers normalize case as needed.
25
- */
26
- const FONT_MAP = {
27
- // ---- Microsoft Office fonts ----
28
- "Calibri": { cssFallback: "'Calibri','Carlito','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Calibri", category: "sans-serif" },
29
- "Calibri Light": { cssFallback: "'Calibri Light','Carlito','Helvetica Neue Light','Helvetica Neue',Arial,sans-serif", officeFont: "Calibri Light", category: "sans-serif" },
30
- "Cambria": { cssFallback: "'Cambria','Caladea','Times New Roman',Georgia,serif", officeFont: "Cambria", category: "serif" },
31
- "Cambria Math": { cssFallback: "'Cambria Math','Caladea','Times New Roman',serif", officeFont: "Cambria Math", category: "serif" },
32
- "Consolas": { cssFallback: "'Consolas','Courier New',monospace", officeFont: "Consolas", category: "monospace" },
33
- "Aptos": { cssFallback: "'Aptos','Carlito','Helvetica Neue',Arial,sans-serif", officeFont: "Aptos", category: "sans-serif" },
34
- "Times New Roman": { cssFallback: "'Times New Roman','Liberation Serif',Georgia,serif", officeFont: "Times New Roman", category: "serif" },
35
- // ---- Handwriting / decorative fonts ----
36
- "MV Boli": { cssFallback: "'MV Boli','Comic Sans MS','Marker Felt',cursive", officeFont: "MV Boli", category: "cursive" },
37
- "Kristen ITC": { cssFallback: "'Kristen ITC','Comic Sans MS','Marker Felt',cursive", officeFont: "Kristen ITC", category: "cursive" },
38
- "Stylus BT": { cssFallback: "'Stylus BT','Brush Script MT','Snell Roundhand',cursive", officeFont: "Stylus BT", category: "cursive" },
39
- "Caveat": { cssFallback: "'Caveat','Comic Sans MS','Marker Felt',cursive", officeFont: "Caveat", category: "cursive" },
40
- // ---- Japanese sans-serif fonts ----
41
- "MS Gothic": { cssFallback: "'MS Gothic','Noto Sans CJK JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif", officeFont: "MS Gothic", category: "sans-serif" },
42
- "MS PGothic": { cssFallback: "'MS PGothic','Noto Sans CJK JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif", officeFont: "MS PGothic", category: "sans-serif" },
43
- "\uFF2D\uFF33 \uFF30\u30B4\u30B7\u30C3\u30AF": { cssFallback: "'\uFF2D\uFF33 \uFF30\u30B4\u30B7\u30C3\u30AF','Noto Sans CJK JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif", officeFont: "\uFF2D\uFF33 \uFF30\u30B4\u30B7\u30C3\u30AF", category: "sans-serif" },
44
- "\uFF2D\uFF33 \u30B4\u30B7\u30C3\u30AF": { cssFallback: "'\uFF2D\uFF33 \u30B4\u30B7\u30C3\u30AF','Noto Sans CJK JP','Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif", officeFont: "\uFF2D\uFF33 \u30B4\u30B7\u30C3\u30AF", category: "sans-serif" },
45
- "Kozuka Gothic Pro R": { cssFallback: "'Kozuka Gothic Pro R','Noto Sans CJK JP','Hiragino Kaku Gothic ProN',sans-serif", officeFont: "Kozuka Gothic Pro R", category: "sans-serif" },
46
- "Kozuka Gothic Pro B": { cssFallback: "'Kozuka Gothic Pro B','Noto Sans CJK JP Bold','Hiragino Kaku Gothic ProN',sans-serif", officeFont: "Kozuka Gothic Pro B", category: "sans-serif" },
47
- "Kozuka Gothic Pro M": { cssFallback: "'Kozuka Gothic Pro M','Noto Sans CJK JP Medium','Hiragino Kaku Gothic ProN',sans-serif", officeFont: "Kozuka Gothic Pro M", category: "sans-serif" },
48
- "Kozuka Gothic Pro EL": { cssFallback: "'Kozuka Gothic Pro EL','Noto Sans CJK JP Light','Hiragino Kaku Gothic ProN',sans-serif", officeFont: "Kozuka Gothic Pro EL", category: "sans-serif" },
49
- "HGSKyokashotai": { cssFallback: "'HGSKyokashotai','Noto Sans CJK JP','Hiragino Kaku Gothic ProN',sans-serif", officeFont: "HGSKyokashotai", category: "sans-serif" },
50
- // ---- Japanese serif fonts ----
51
- "MS Mincho": { cssFallback: "'MS Mincho','Noto Serif CJK JP','Hiragino Mincho ProN','Yu Mincho',serif", officeFont: "MS Mincho", category: "serif" },
52
- "MS PMincho": { cssFallback: "'MS PMincho','Noto Serif CJK JP','Hiragino Mincho ProN','Yu Mincho',serif", officeFont: "MS PMincho", category: "serif" },
53
- // ---- CJK fonts (Chinese, Korean) ----
54
- "\u5B8B\u4F53": { cssFallback: "'\u5B8B\u4F53','Noto Serif CJK SC','Songti SC','STSong',serif", officeFont: "\u5B8B\u4F53", category: "serif" },
55
- "\u65B0\u7D30\u660E\u9AD4": { cssFallback: "'\u65B0\u7D30\u660E\u9AD4','Noto Serif CJK TC','Songti TC',serif", officeFont: "\u65B0\u7D30\u660E\u9AD4", category: "serif" },
56
- "\u9ED1\u4F53": { cssFallback: "'\u9ED1\u4F53','Noto Sans CJK SC','Heiti SC','STHeiti',sans-serif", officeFont: "\u9ED1\u4F53", category: "sans-serif" },
57
- "\u5FAE\u8EDF\u6B63\u9ED1\u9AD4": { cssFallback: "'\u5FAE\u8EDF\u6B63\u9ED1\u9AD4','Noto Sans CJK TC','Heiti TC',sans-serif", officeFont: "\u5FAE\u8EDF\u6B63\u9ED1\u9AD4", category: "sans-serif" },
58
- "\uB9D1\uC740 \uACE0\uB515": { cssFallback: "'\uB9D1\uC740 \uACE0\uB515','Apple SD Gothic Neo',sans-serif", officeFont: "\uB9D1\uC740 \uACE0\uB515", category: "sans-serif" },
59
- // ---- UI / system fonts ----
60
- "Lucida Sans Unicode": { cssFallback: "'Lucida Sans Unicode','Lucida Grande','Lucida Sans',sans-serif", officeFont: "Lucida Sans Unicode", category: "sans-serif" },
61
- "Segoe UI": { cssFallback: "'Segoe UI','-apple-system','Helvetica Neue',sans-serif", officeFont: "Segoe UI", category: "sans-serif" },
62
- "Segoe Sans Display": { cssFallback: "'Segoe Sans Display','-apple-system','Helvetica Neue',Arial,sans-serif", officeFont: "Segoe Sans Display", category: "sans-serif" },
63
- "Segoe Sans Display Semibold": { cssFallback: "'Segoe Sans Display Semibold','-apple-system','Helvetica Neue',Arial,sans-serif", officeFont: "Segoe Sans Display Semibold", category: "sans-serif" },
64
- "Segoe Sans Small Regular": { cssFallback: "'Segoe Sans Small Regular','Segoe UI','-apple-system','Helvetica Neue',sans-serif", officeFont: "Segoe Sans Small Regular", category: "sans-serif" },
65
- "Segoe Sans Text Regular": { cssFallback: "'Segoe Sans Text Regular','Segoe UI','-apple-system','Helvetica Neue',sans-serif", officeFont: "Segoe Sans Text Regular", category: "sans-serif" },
66
- "Grandview": { cssFallback: "'Grandview','Helvetica Neue',Arial,sans-serif", officeFont: "Grandview", category: "sans-serif" },
67
- "Nirmala UI": { cssFallback: "'Nirmala UI','Helvetica Neue',Arial,sans-serif", officeFont: "Nirmala UI", category: "sans-serif" },
68
- "Ebrima": { cssFallback: "'Ebrima','Helvetica Neue',Arial,sans-serif", officeFont: "Ebrima", category: "sans-serif" },
69
- // ---- Google Fonts / web fonts (sans-serif) ----
70
- // Preserve original font names in PPTX export for maximum fidelity.
71
- // PowerPoint will render these correctly if the fonts are installed,
72
- // and fall back gracefully if not. The cssFallback stack provides
73
- // alternatives for HTML rendering (import side) only.
74
- "Inter": { cssFallback: "'Inter','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Inter", category: "sans-serif" },
75
- "Inter Light": { cssFallback: "'Inter Light','Inter','Helvetica Neue',Arial,sans-serif", officeFont: "Inter Light", category: "sans-serif" },
76
- "Inter ExtraBold": { cssFallback: "'Inter ExtraBold','Inter','Helvetica Neue',Arial,sans-serif", officeFont: "Inter ExtraBold", category: "sans-serif" },
77
- "Roboto": { cssFallback: "'Roboto','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Roboto", category: "sans-serif" },
78
- "Open Sans": { cssFallback: "'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Open Sans", category: "sans-serif" },
79
- "Lato": { cssFallback: "'Lato','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Lato", category: "sans-serif" },
80
- "Montserrat": { cssFallback: "'Montserrat','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Montserrat", category: "sans-serif" },
81
- "Montserrat SemiBold": { cssFallback: "'Montserrat SemiBold','Montserrat','Helvetica Neue',Arial,sans-serif", officeFont: "Montserrat SemiBold", category: "sans-serif" },
82
- "Montserrat ExtraBold": { cssFallback: "'Montserrat ExtraBold','Montserrat','Helvetica Neue',Arial,sans-serif", officeFont: "Montserrat ExtraBold", category: "sans-serif" },
83
- "Poppins": { cssFallback: "'Poppins','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Poppins", category: "sans-serif" },
84
- "Source Sans Pro": { cssFallback: "'Source Sans Pro','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Source Sans Pro", category: "sans-serif" },
85
- "Nunito": { cssFallback: "'Nunito','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Nunito", category: "sans-serif" },
86
- "Raleway": { cssFallback: "'Raleway','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Raleway", category: "sans-serif" },
87
- "Ubuntu": { cssFallback: "'Ubuntu','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Ubuntu", category: "sans-serif" },
88
- "PT Sans": { cssFallback: "'PT Sans','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "PT Sans", category: "sans-serif" },
89
- "Noto Sans": { cssFallback: "'Noto Sans','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Noto Sans", category: "sans-serif" },
90
- "Fira Sans": { cssFallback: "'Fira Sans','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Fira Sans", category: "sans-serif" },
91
- "Work Sans": { cssFallback: "'Work Sans','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Work Sans", category: "sans-serif" },
92
- "Space Grotesk": { cssFallback: "'Space Grotesk','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Space Grotesk", category: "sans-serif" },
93
- "Oswald": { cssFallback: "'Oswald','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Oswald", category: "sans-serif" },
94
- "Archivo": { cssFallback: "'Archivo','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Archivo", category: "sans-serif" },
95
- "Economica": { cssFallback: "'Economica','Helvetica Neue',Arial,sans-serif", officeFont: "Economica", category: "sans-serif" },
96
- "Syncopate": { cssFallback: "'Syncopate','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Syncopate", category: "sans-serif" },
97
- // ---- Google Fonts / web fonts (serif) ----
98
- "Playfair Display": { cssFallback: "'Playfair Display','Georgia','Times New Roman',serif", officeFont: "Playfair Display", category: "serif" },
99
- "Playfair Display SemiBold": { cssFallback: "'Playfair Display SemiBold','Playfair Display','Georgia',serif", officeFont: "Playfair Display SemiBold", category: "serif" },
100
- "Libre Baskerville": { cssFallback: "'Libre Baskerville','Georgia','Times New Roman',serif", officeFont: "Libre Baskerville", category: "serif" },
101
- "Merriweather": { cssFallback: "'Merriweather','Georgia','Times New Roman',serif", officeFont: "Merriweather", category: "serif" },
102
- "PT Serif": { cssFallback: "'PT Serif','Georgia','Times New Roman',serif", officeFont: "PT Serif", category: "serif" },
103
- "Noto Serif": { cssFallback: "'Noto Serif','Georgia','Times New Roman',serif", officeFont: "Noto Serif", category: "serif" },
104
- "Lora": { cssFallback: "'Lora','Georgia','Times New Roman',serif", officeFont: "Lora", category: "serif" },
105
- // ---- Google Fonts / web fonts (monospace) ----
106
- "Fira Code": { cssFallback: "'Fira Code','Courier New',monospace", officeFont: "Fira Code", category: "monospace" },
107
- "Source Code Pro": { cssFallback: "'Source Code Pro','Courier New',monospace", officeFont: "Source Code Pro", category: "monospace" },
108
- "JetBrains Mono": { cssFallback: "'JetBrains Mono','Courier New',monospace", officeFont: "JetBrains Mono", category: "monospace" },
109
- // ---- GitHub Copilot fonts ----
110
- "Ginto Copilot": { cssFallback: "'Ginto Copilot','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Ginto Copilot", category: "sans-serif" },
111
- "Ginto Copilot Light": { cssFallback: "'Ginto Copilot Light','Helvetica Neue Light','Helvetica Neue',Arial,sans-serif", officeFont: "Ginto Copilot Light", category: "sans-serif" },
112
- "Ginto Copilot 400": { cssFallback: "'Ginto Copilot 400','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Ginto Copilot 400", category: "sans-serif" },
113
- "Ginto Copilot Medium": { cssFallback: "'Ginto Copilot Medium','Ginto Copilot','Helvetica Neue',Arial,sans-serif", officeFont: "Ginto Copilot Medium", category: "sans-serif" },
114
- "Ginto Copilot Black": { cssFallback: "'Ginto Copilot Black','Ginto Copilot','Helvetica Neue',Arial,sans-serif", officeFont: "Ginto Copilot Black", category: "sans-serif" },
115
- "Ginto Copilot Thin": { cssFallback: "'Ginto Copilot Thin','Ginto Copilot Light','Helvetica Neue',Arial,sans-serif", officeFont: "Ginto Copilot Thin", category: "sans-serif" },
116
- // ---- Common system fonts ----
117
- "Arial": { cssFallback: "Arial,'Helvetica Neue',Helvetica,sans-serif", officeFont: "Arial", category: "sans-serif" },
118
- "Arial Black": { cssFallback: "'Arial Black','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Arial Black", category: "sans-serif" },
119
- "Georgia": { cssFallback: "Georgia,'Times New Roman',serif", officeFont: "Georgia", category: "serif" },
120
- "Georgia Regular": { cssFallback: "'Georgia Regular',Georgia,'Times New Roman',serif", officeFont: "Georgia", category: "serif" },
121
- "Courier New": { cssFallback: "'Courier New',Courier,monospace", officeFont: "Courier New", category: "monospace" },
122
- "Times": { cssFallback: "Times,'Times New Roman',serif", officeFont: "Times", category: "serif" },
123
- "Tahoma": { cssFallback: "'Tahoma','Verdana','Geneva',sans-serif", officeFont: "Tahoma", category: "sans-serif" },
124
- "Verdana": { cssFallback: "'Verdana','Geneva',sans-serif", officeFont: "Verdana", category: "sans-serif" },
125
- "Helvetica Neue Light": { cssFallback: "'Helvetica Neue Light','Helvetica Neue',Helvetica,Arial,sans-serif", officeFont: "Helvetica Neue Light", category: "sans-serif" },
126
- // ---- Symbol fonts ----
127
- "Wingdings": { cssFallback: "'Wingdings','Zapf Dingbats',sans-serif", officeFont: "Wingdings", category: "sans-serif" },
128
- "Wingdings 2": { cssFallback: "'Wingdings 2','Zapf Dingbats',sans-serif", officeFont: "Wingdings 2", category: "sans-serif" },
129
- "Wingdings 3": { cssFallback: "'Wingdings 3','Zapf Dingbats',sans-serif", officeFont: "Wingdings 3", category: "sans-serif" },
130
- };
131
- // Build case-insensitive lookup index (lowercase key → FontEntry)
132
- const FONT_MAP_LOWER = {};
133
- for (const [key, entry] of Object.entries(FONT_MAP)) {
134
- FONT_MAP_LOWER[key.toLowerCase()] = entry;
135
- }
136
- // ============================================================================
137
- // Exported helpers
138
- // ============================================================================
139
- /**
140
- * Returns a CSS font-family value for the given font name (used by PPTX import).
141
- *
142
- * Looks up the font in FONT_MAP and returns the full CSS fallback stack.
143
- * For unknown fonts, wraps the name in quotes and appends sans-serif.
144
- * Handles malformed typeface attributes that already contain commas.
145
- */
146
- export function cssFontFamily(fontName) {
147
- const entry = FONT_MAP[fontName];
148
- if (entry)
149
- return entry.cssFallback;
150
- // Try case-insensitive lookup
151
- const entryLower = FONT_MAP_LOWER[fontName.toLowerCase()];
152
- if (entryLower)
153
- return entryLower.cssFallback;
154
- // Handle malformed typeface attributes that already contain commas (e.g. "Arial,Sans-Serif")
155
- if (fontName.includes(',')) {
156
- return fontName.split(',').map(f => {
157
- const trimmed = f.trim();
158
- const lower = trimmed.toLowerCase();
159
- if (lower === 'sans-serif' || lower === 'serif' || lower === 'monospace' || lower === 'cursive' || lower === 'fantasy') {
160
- return lower;
161
- }
162
- return `'${trimmed}'`;
163
- }).join(',');
164
- }
165
- return `'${fontName}',sans-serif`;
166
- }
167
- /**
168
- * Maps a font family name to its Office-compatible equivalent (used by PPTX export).
169
- *
170
- * Returns the mapped Office font if found, or the original font if no mapping exists.
171
- * Lookup is case-insensitive.
172
- */
173
- export function mapToOfficeFont(fontFamily) {
174
- const normalized = fontFamily.toLowerCase().trim();
175
- const entry = FONT_MAP_LOWER[normalized];
176
- return entry ? entry.officeFont : fontFamily;
177
- }
178
- /**
179
- * Extract and map fontFace from a CSS font-family string (used by PPTX export).
180
- *
181
- * Takes the first font in a comma-separated CSS font stack, strips quotes,
182
- * and maps it to an Office-compatible equivalent.
183
- */
184
- export function extractFontFace(fontFamily) {
185
- if (!fontFamily)
186
- return undefined;
187
- const firstFont = fontFamily.split(',')[0].replace(/['"]/g, '').trim();
188
- return mapToOfficeFont(firstFont);
189
- }
190
- /**
191
- * Returns the font-to-CSS-replacement mapping for HTML regex-based font
192
- * substitution (used by transform.ts).
193
- *
194
- * Returns entries as [fontName, cssReplacement] pairs where cssReplacement
195
- * is in the format "Georgia, serif" (Office font + category).
196
- * Only includes fonts that map to a different Office font (web fonts → Office equivalents).
4
+ * Re-exports everything from packages/shared/fonts.ts the single source of
5
+ * truth for font mapping shared across slides and docs packages.
197
6
  */
198
- export function getFontReplacementEntries() {
199
- const entries = [];
200
- for (const [fontName, entry] of Object.entries(FONT_MAP)) {
201
- // Only include fonts where the Office font differs from the original
202
- // (e.g. "Inter" → "Calibri", but not "Calibri" → "Calibri")
203
- if (entry.officeFont.toLowerCase() !== fontName.toLowerCase()) {
204
- entries.push([fontName, `${entry.officeFont}, ${entry.category}`]);
205
- }
206
- }
207
- return entries;
208
- }
7
+ export { FONT_MAP, cssFontFamily, mapToOfficeFont, extractFontFace, getAltFont, getFontReplacementEntries, } from '../shared/fonts';
209
8
  //# sourceMappingURL=fonts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../packages/slides/fonts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../../packages/slides/fonts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAGL,QAAQ,EACR,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,yBAAyB,GAC1B,MAAM,iBAAiB,CAAC"}
@@ -347,6 +347,8 @@ export interface TextBaseProps {
347
347
  fontFill?: ShapeFillProps;
348
348
  /** Font face name. */
349
349
  fontFace?: string;
350
+ /** Alternate font face — used when the primary fontFace is not installed (OOXML altFont). */
351
+ altFont?: string;
350
352
  /** Font size (points). */
351
353
  fontSize?: number;
352
354
  /** Text highlight color (hex). */
@@ -6060,7 +6060,8 @@ function genXmlTextRunProperties(opts, isDefault) {
6060
6060
  runProps += `<a:effectLst>${createGlowElement(opts.glow, DEF_TEXT_GLOW)}</a:effectLst>`;
6061
6061
  if (opts.fontFace) {
6062
6062
  // NOTE: 'cs' = Complex Script, 'ea' = East Asian (use "-120" instead of "0" - per Issue #174); ea must come first (Issue #174)
6063
- runProps += `<a:latin typeface="${opts.fontFace}" pitchFamily="34" charset="0"/><a:ea typeface="${opts.fontFace}" pitchFamily="34" charset="-122"/><a:cs typeface="${opts.fontFace}" pitchFamily="34" charset="-120"/>`;
6063
+ var altAttr = opts.altFont ? ' altFont="' + opts.altFont + '"' : '';
6064
+ runProps += `<a:latin typeface="${opts.fontFace}"${altAttr} pitchFamily="34" charset="0"/><a:ea typeface="${opts.fontFace}"${altAttr} pitchFamily="34" charset="-122"/><a:cs typeface="${opts.fontFace}"${altAttr} pitchFamily="34" charset="-120"/>`;
6064
6065
  }
6065
6066
  }
6066
6067
  // Hyperlink support
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "docgen-utils",
3
- "version": "1.0.16",
3
+ "version": "1.0.18",
4
4
  "description": "Utilities for converting HTML into DOCX and PPTX.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",