Files
stain.otf/scripts/build-font.js

112 lines
3.7 KiB
JavaScript

import fs from "fs";
import path from "path";
import { fileURLToPath } from "url";
import opentype from "opentype.js";
import { glyphA, glypha } from "../src/glyphs/A.js";
import { glyphB, glyphb } from "../src/glyphs/B.js";
import { glyphC, glyphc } from "../src/glyphs/C.js";
import { glyphD, glyphd } from "../src/glyphs/D.js";
import { glyphE, glyphe } from "../src/glyphs/E.js";
import { glyphF, glyphf } from "../src/glyphs/F.js";
import { glyphG, glyphg } from "../src/glyphs/G.js";
import { glyphH, glyphh } from "../src/glyphs/H.js";
import { glyphI, glyphi } from "../src/glyphs/I.js";
import { glyphJ, glyphj } from "../src/glyphs/J.js";
import { glyphK, glyphk } from "../src/glyphs/K.js";
import { glyphL, glyphl } from "../src/glyphs/L.js";
import { glyphM, glyphm } from "../src/glyphs/M.js";
import { glyphN, glyphn } from "../src/glyphs/N.js";
import { glyphO, glypho } from "../src/glyphs/O.js";
import { glyphP, glyphp } from "../src/glyphs/P.js";
import { glyphQ, glyphq } from "../src/glyphs/Q.js";
import { glyphR, glyphr } from "../src/glyphs/R.js";
import { glyphS, glyphs as glyphsLowerS } from "../src/glyphs/S.js";
import { glyphT, glypht } from "../src/glyphs/T.js";
import { glyphU, glyphu } from "../src/glyphs/U.js";
import { glyphV, glyphv } from "../src/glyphs/V.js";
import { glyphW, glyphw } from "../src/glyphs/W.js";
import { glyphX, glyphx } from "../src/glyphs/X.js";
import { glyphY, glypthy as glyphy } from "../src/glyphs/Y.js";
import { glyphZ, glyphz } from "../src/glyphs/Z.js";
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const outDir = path.join(__dirname, "..", "dist");
if (!fs.existsSync(outDir)) fs.mkdirSync(outDir, { recursive: true });
const familyName = "Stain";
const unitsPerEm = 1000;
const ascender = 800;
const descender = -200;
const defaultAdv = 600;
const glyphList = [
glyphA(opentype, defaultAdv),
glypha(opentype, defaultAdv),
glyphB(opentype, defaultAdv),
glyphb(opentype, defaultAdv),
glyphC(opentype, defaultAdv),
glyphc(opentype, defaultAdv),
glyphD(opentype, defaultAdv),
glyphd(opentype, defaultAdv),
glyphE(opentype, defaultAdv),
glyphe(opentype, defaultAdv),
glyphF(opentype, defaultAdv),
glyphf(opentype, defaultAdv),
glyphG(opentype, defaultAdv),
glyphg(opentype, defaultAdv),
glyphH(opentype, defaultAdv),
glyphh(opentype, defaultAdv),
glyphI(opentype, defaultAdv),
glyphi(opentype, defaultAdv),
glyphJ(opentype, defaultAdv),
glyphj(opentype, defaultAdv),
glyphK(opentype, defaultAdv),
glyphk(opentype, defaultAdv),
glyphL(opentype, defaultAdv),
glyphl(opentype, defaultAdv),
glyphM(opentype, 740),
glyphm(opentype, 740),
glyphN(opentype, defaultAdv),
glyphn(opentype, defaultAdv),
glyphO(opentype, defaultAdv),
glypho(opentype, defaultAdv),
glyphP(opentype, defaultAdv),
glyphp(opentype, defaultAdv),
glyphQ(opentype, defaultAdv),
glyphq(opentype, defaultAdv),
glyphR(opentype, defaultAdv),
glyphr(opentype, defaultAdv),
glyphS(opentype, defaultAdv),
glyphsLowerS(opentype, defaultAdv),
glyphT(opentype, defaultAdv),
glypht(opentype, defaultAdv),
glyphU(opentype, defaultAdv),
glyphu(opentype, defaultAdv),
glyphV(opentype, defaultAdv),
glyphv(opentype, defaultAdv),
glyphW(opentype, 760),
glyphw(opentype, 660),
glyphX(opentype, defaultAdv),
glyphx(opentype, defaultAdv),
glyphY(opentype, defaultAdv),
glyphy(opentype, defaultAdv),
glyphZ(opentype, defaultAdv),
glyphz(opentype, defaultAdv)
];
const font = new opentype.Font({
familyName,
styleName: "Regular",
unitsPerEm,
ascender,
descender,
glyphs: glyphList
});
const buf = Buffer.from(font.toArrayBuffer());
const outPath = path.join(outDir, "Stain.otf");
fs.writeFileSync(outPath, buf);
console.log(`Built ${outPath}`);