blob: b493f50aab8cddeb1ff8c4392e64bb237553fca4 [file] [log] [blame]
const svgtofont = require("svgtofont");
const path = require("path");
const fs = require("fs");
if (process.argv.length != 3) {
console.error(`Usage: node createfonts.js [font-name]`);
console.error(
`where [font-name] must follow the format "fauxtonicon[INTEGER]"`
);
process.exit(1);
}
if (!process.argv[2].startsWith("fauxtonicon")) {
console.error(
`Invalid value: ${process.argv[2]}. Font name must follow the format "fauxtonicon[INTEGER]"`
);
process.exit(1);
}
const fauxtonFontname = process.argv[2];
const generatedFontsDir = "generated";
// Generate the font files (.ttf, .woff, etc) and SCSS file
svgtofont({
emptyDist: true, // Clear output directory contents
src: "../icons", // svg path
dist: path.resolve(process.cwd(), generatedFontsDir), // output path
styleTemplates: path.resolve(process.cwd(), "styles"), // file templates path
fontName: fauxtonFontname, // font name
css: {
fileName: "icons",
cssPath: "../fonts/",
}, // Create CSS files.
startUnicode: 0xea01, // unicode start number
classNamePrefix: "fonticon",
svgicons2svgfont: {
fontHeight: 1000,
normalize: true,
descent: 64,
},
website: null,
}).then(() => {
console.log(`Font ${fauxtonFontname} generated`);
try {
// Remove old icons font files
const fontsDir = "../fonts";
fs.readdirSync(fontsDir).forEach((file) => {
if (file.startsWith("fauxtonicon")) {
const toDelete = fontsDir + "/" + file;
console.log("Deleting", toDelete);
fs.unlinkSync(toDelete);
}
});
// Add new icons font files
fs.readdirSync(generatedFontsDir).forEach((file) => {
if (file.startsWith("fauxtonicon")) {
const from = generatedFontsDir + "/" + file;
const to = fontsDir + "/" + file;
console.log("Moving", from, "to", to);
fs.renameSync(from, to);
}
});
// Replace 'assets/scss/icons.scss' with the newly generated version
const iconsScss = "../scss/_icons.scss";
console.log(`Replacing ${iconsScss} with the new version`);
if (fs.existsSync(iconsScss)) {
fs.unlinkSync(iconsScss);
}
const generatediconsScss = generatedFontsDir + "/icons.scss";
fs.renameSync(generatediconsScss, iconsScss);
} catch (err) {
console.error(err);
process.exit(1);
}
});