Skip to main content

max / makeover

Say what house_face's sources are, and what a native loader does instead The doc said there is no house ttf under any name, which was true and stopped short of the useful half: a native loader cuts its own through quasi-type's cut_native, which now exists. Naming a native file here would assert a path the web build never writes, and would save the consumer nothing, since it still runs the pipeline either way. The rev-pin hazard that arrangement carries is stated rather than solved: a stale pin ships an older glyph set silently.
Co-Authored-By
Claude Opus 5 (1M context) <noreply@anthropic.com>
Author: Max Johnson <me@maxj.phd> · 2026-08-28 14:53 UTC
Signed with PGP, not checked
Commit: 2cd025565e753eb8f459058841f64009e256928a
Parent: aab22bd
2 files changed, +12 insertions, -4 deletions
M Cargo.toml +1 -1
@@ -1,6 +1,6 @@
1 1 [package]
2 2 name = "makeover"
3 - version = "3.0.0"
3 + version = "3.0.1"
4 4 edition = "2024"
5 5 description = "Shared theme loading for the make-family apps: TOML theme files parsed into intent-based color tokens, with perceptual derivations and WCAG contrast."
6 6 license = "MIT"
M src/lib.rs +11 -3
@@ -1157,9 +1157,17 @@
1157 1157 /// emitted and not read — which made [`Typography::faces`] answer for the
1158 1158 /// brand tier and stay silent about the other two.
1159 1159 ///
1160 - /// The sources are the **web** copies, and that is the whole of what the
1161 - /// house tier ships today. A renderer loading a face directly wants a
1162 - /// `ttf`, and there is no house `ttf` under any name to hand it.
1160 + /// The sources are the **web** copies. A native loader wants a `ttf` and
1161 + /// cuts its own through `quasi-type`, whose `cut_native` writes the file
1162 + /// and hands back the family, style and default weight to register it
1163 + /// under; there is no house `ttf` named here, and there should not be. This
1164 + /// crate is on crates.io and `quasi-type` is `publish = false`, so naming a
1165 + /// native file here would assert a path the web build does not write and
1166 + /// save the consumer nothing, since it still has to run the pipeline.
1167 + ///
1168 + /// One hazard travels with that arrangement and is not solved: a native
1169 + /// consumer takes `quasi-type` as a git dep and pins a rev, so a stale pin
1170 + /// ships an older glyph set silently. Advance it deliberately.
1163 1171 pub fn house_face(self) -> Option<FontFace> {
1164 1172 let (family, file) = match self {
1165 1173 FontSlot::Mono => (HOUSE_MONO_FAMILY, WEBFONT_MONO_FILE),