From 27f133f7aec3d311b7e669304211283076602267 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Sun, 9 Nov 2025 12:28:39 -0800 Subject: [PATCH] Feat: Add basic author metadata to font --- scripts/build-font.js | 157 +++++++++++++++++++++--------------------- 1 file changed, 80 insertions(+), 77 deletions(-) diff --git a/scripts/build-font.js b/scripts/build-font.js index f4001dc..7fa1e32 100644 --- a/scripts/build-font.js +++ b/scripts/build-font.js @@ -29,103 +29,106 @@ 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 __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 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 familyName="Stain"; +const styleName="Regular"; +const unitsPerEm=1000; +const ascender=800; +const descender=-200; +const defaultAdv=600; -const mkGlyph = (name, unicode, adv, pathFn) => +const mkGlyph=(name,unicode,adv,pathFn)=> new opentype.Glyph({ name, unicode, - advanceWidth: adv, - path: pathFn(new opentype.Path()) + advanceWidth:adv, + path:pathFn(new opentype.Path()) }); -const glyphSpace = mkGlyph("space", " ".codePointAt(0), 260, (p) => p); -const glyphPeriod = mkGlyph("period", ".".codePointAt(0), 260, (p) => { - p.moveTo(80, 0); - p.lineTo(80, 120); - p.lineTo(180, 120); - p.lineTo(180, 0); +const glyphSpace=mkGlyph("space"," ".codePointAt(0),260,p=>p); +const glyphPeriod=mkGlyph("period","." + .codePointAt(0),260,p=>{ + p.moveTo(80,0); + p.lineTo(80,120); + p.lineTo(180,120); + p.lineTo(180,0); p.close(); return p; }); -const glyphList = [ +const glyphList=[ glyphSpace, glyphPeriod, - 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) + 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({ +const font=new opentype.Font({ familyName, - styleName: "Regular", + styleName, unitsPerEm, ascender, descender, - glyphs: glyphList + glyphs:glyphList, + copyright:"Author: Anon" }); -const buf = Buffer.from(font.toArrayBuffer()); -const outPath = path.join(outDir, "Stain.otf"); -fs.writeFileSync(outPath, buf); +const buf=Buffer.from(font.toArrayBuffer()); +const outPath=path.join(outDir,"Stain.otf"); +fs.writeFileSync(outPath,buf); console.log(`Built ${outPath}`);