'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 };