From 9a267c7ee571ab2a184b7a9a2cc2bc4c4254d470 Mon Sep 17 00:00:00 2001 From: multipleof4 Date: Sat, 8 Nov 2025 22:50:29 -0800 Subject: [PATCH] Feat: Basic font sanity checks --- scripts/validate-font.js | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 scripts/validate-font.js diff --git a/scripts/validate-font.js b/scripts/validate-font.js new file mode 100644 index 0000000..7397b78 --- /dev/null +++ b/scripts/validate-font.js @@ -0,0 +1,33 @@ +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; +import opentype from "opentype.js"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); +const fontPath = path.join(__dirname, "..", "dist", "Stain-Regular.ttf"); + +if (!fs.existsSync(fontPath)) { + console.error("Font not found:", fontPath); + process.exit(1); +} + +try { + const font = opentype.loadSync(fontPath); + if (!font.glyphs || font.glyphs.length === 0) { + console.error("Font has no glyphs"); + process.exit(1); + } + const required = ["A", "B", "C", "D", "E", "F", "G"]; + for (const ch of required) { + const g = font.charToGlyph(ch); + if (!g || !g.path || g.path.commands.length === 0) { + console.error("Missing or empty glyph for", ch); + process.exit(1); + } + } + console.log("Font validation passed."); +} catch (e) { + console.error("Error validating font:", e); + process.exit(1); +}