From 73a139e0322f0173ce604d46148ad9f913333463 Mon Sep 17 00:00:00 2001 From: Alex Dunmow Date: Mon, 6 Jul 2026 19:57:15 +0800 Subject: [PATCH] fix(lcars): bundle Antonio + Share Tech Mono via @font-face (host bundled_fonts inert) - host does not consume bundled_fonts; declare @font-face against served /templates/lcars/fonts/*.woff2 paths so --font-* resolve to real faces - all 5 presets set typography.fontHeading/body/mono to template:lcars: Co-Authored-By: Claude Fable 5 --- manifest.yaml | 9 +++++++++ presets.json | 25 +++++++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/manifest.yaml b/manifest.yaml index aba4345..84d1f93 100644 --- a/manifest.yaml +++ b/manifest.yaml @@ -137,6 +137,15 @@ css: 1:1 onto the override vocabulary. ============================================================ */ + /* Bundled display faces. The host does not consume bundled_fonts + (LoadedPlugin.BundledFonts is unconsumed), so the theme declares its own + @font-face against the served artifact paths (/templates/lcars/fonts/...). + Presets set typography.fontHeading/body/mono to template:lcars: so + --font-heading/--font-body/--font-mono resolve to these families. */ + @font-face { font-family: 'Antonio'; src: url('/templates/lcars/fonts/antonio-latin.woff2') format('woff2'); font-weight: 100 700; font-style: normal; font-display: swap; } + @font-face { font-family: 'Antonio'; src: url('/templates/lcars/fonts/antonio-latin-ext.woff2') format('woff2'); font-weight: 100 700; font-style: normal; font-display: swap; unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; } + @font-face { font-family: 'Share Tech Mono'; src: url('/templates/lcars/fonts/share-tech-mono-latin.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; } + /* --- Base / layout primitives --- */ .lcars-page { font-family: var(--font-body, "Antonio", "Roboto Condensed", "Arial Narrow", system-ui, sans-serif); letter-spacing: 0.02em; } .lcars-body { font-family: var(--font-body, "Antonio", "Roboto Condensed", "Arial Narrow", system-ui, sans-serif); } diff --git a/presets.json b/presets.json index a7fb6ce..063eb75 100644 --- a/presets.json +++ b/presets.json @@ -5,6 +5,11 @@ "description": "Canonical LCARS. Black ops ground with orange, amber, and lilac panels. Light mode is daylight-ops cream with the colour bars kept vivid.", "theme": { "mode": "both", + "typography": { + "fontHeading": "template:lcars:Antonio", + "fontBody": "template:lcars:Antonio", + "fontMono": "template:lcars:Share Tech Mono" + }, "lightColors": { "background": "40 38% 95%", "foreground": "28 30% 12%", @@ -55,6 +60,11 @@ "description": "Condition-one console. Signal red and orange over black, with an amber standby channel. Light mode reads as an emergency daylight console.", "theme": { "mode": "both", + "typography": { + "fontHeading": "template:lcars:Antonio", + "fontBody": "template:lcars:Antonio", + "fontMono": "template:lcars:Share Tech Mono" + }, "lightColors": { "background": "20 34% 95%", "foreground": "8 34% 12%", @@ -105,6 +115,11 @@ "description": "24th-century sciences layout. Periwinkle blue and cyan panels with an orange action channel over black. Light mode is a bright bridge console.", "theme": { "mode": "both", + "typography": { + "fontHeading": "template:lcars:Antonio", + "fontBody": "template:lcars:Antonio", + "fontMono": "template:lcars:Share Tech Mono" + }, "lightColors": { "background": "215 34% 96%", "foreground": "220 32% 14%", @@ -155,6 +170,11 @@ "description": "Deep-space media suite. Lilac and magenta panels with a peach action channel over indigo-black. Light mode keeps the nebula hues on soft violet paper.", "theme": { "mode": "both", + "typography": { + "fontHeading": "template:lcars:Antonio", + "fontBody": "template:lcars:Antonio", + "fontMono": "template:lcars:Share Tech Mono" + }, "lightColors": { "background": "280 30% 96%", "foreground": "278 30% 14%", @@ -205,6 +225,11 @@ "description": "Sickbay diagnostic layout. Teal and green panels with an amber alert channel over black. Light mode is a clean daylight medbay readout.", "theme": { "mode": "both", + "typography": { + "fontHeading": "template:lcars:Antonio", + "fontBody": "template:lcars:Antonio", + "fontMono": "template:lcars:Share Tech Mono" + }, "lightColors": { "background": "150 26% 96%", "foreground": "165 30% 12%",