'use strict'; const fs = require('fs'); const JSZip = require('jszip'); const FONT_TABLE_PATH = 'word/fontTable.xml'; const FONT_TABLE_RELS_PATH = 'word/_rels/fontTable.xml.rels'; function fontTableXml(family) { return ` `; } function fontTableRels(fontFilename) { return ` `; } async function embedDocxFont(inputDocxPath, outputDocxPath, ttfPath, fontFamily) { if (!ttfPath || !fs.existsSync(ttfPath)) { throw new Error(`DocxFontEmbedder: TTF not found at ${ttfPath}`); } const inputBytes = fs.readFileSync(inputDocxPath); const zip = await JSZip.loadAsync(inputBytes); const safeFamily = String(fontFamily).replace(/[^A-Za-z0-9]/g, ''); const fontFilename = `${safeFamily}.ttf`; const fontBytes = fs.readFileSync(ttfPath); zip.file(`word/fonts/${fontFilename}`, fontBytes); zip.file(FONT_TABLE_PATH, fontTableXml(safeFamily)); zip.file(FONT_TABLE_RELS_PATH, fontTableRels(fontFilename)); const out = await zip.generateAsync({ type: 'nodebuffer' }); fs.writeFileSync(outputDocxPath, out); } module.exports = { embedDocxFont };