Files
integration/website/bin/gaufre-glyphhanger-cmd.mjs
Emmanuel Pelletier 799a362f89 gaufre: better handle the marianne font subsetting
this should be easier to handle if the one doing it is not… me. Still
not that great but better than nothing!
2025-02-27 16:52:59 +01:00

44 lines
1.8 KiB
JavaScript

import path from "path"
import { execSync } from "child_process"
import pc from "picocolors"
import services from "../src/data/services.json" with { type: "json" }
const glyphhangerIsInstalled = `glyphhanger --version`
try {
execSync(glyphhangerIsInstalled, { encoding: "utf8", stdio: ["pipe", "pipe", "pipe"] })
} catch (error) {
console.log(pc.yellow("Warning: it seems glyphhanger is not installed."))
console.log("Please see https://github.com/zachleat/glyphhanger for installation instructions.\n")
}
const enabledServices = services.filter((service) => service.enabled)
const originalFontPath = path.join(
import.meta.dirname,
"..",
"public",
"fonts",
"Marianne-Regular.woff2",
)
const outputDir = path.join(import.meta.dirname, "..", "public", "fonts")
const whitelist = [...enabledServices.map(({ name }) => name.replace(/ /g, "")), " ✕beta"].join("")
console.log(`Run this command to generate the new subsetted gaufre font:`)
console.log(`
glyphhanger --formats=woff2 \\
--subset="${originalFontPath}" \\
--whitelist="${Array.from(whitelist).join("")}" \\
--output="${outputDir}"`)
console.log(
pc.yellow(`
Warning: after running the glyphhanger command, don't forget to:
- update the unicode-range of the subsetted font-family in the GaufrePage.astro component. The new unicode-range is outputed in the console when running glyphhanger.
- rename the newly generated \`Marianne-Regular-subset.woff2\` file to add a cachebusting number, that is superior to the one in the previous filename already existing in the folder.
- update the subsetted font-face src url in the GaufrePage.astro component to use the newly named filename.
- delete the previously existing subsetted font file in the \`public/fonts\` directory.
- commit and push the changes.`),
)