Project typography (font lock)
Purpose
Users choose open/OSS, paid retail, or mixed typography per project. DevCentr supplies recommended OSS faces and foundry checkout links for retail — it does not scrape fonts or auto-download commercial files.
This spec is not Appearance (code font) (suite terminal/code chrome).
Status
| Piece | Status |
|---|---|
Canonical catalog |
Shipped in |
Project lock |
Spec + agent skill |
Fontsource / npm apply |
Agent-driven today; DevCentr wizard later |
Retail faces |
User-owned files + |
Team-docs narrative: Font lock — status and installunchecked.
Lock file (.devcentr/fonts.sdl)
fonts {
preference mixed
role ui_sans face "dm-sans" tier oss install web
role ui_mono face "jetbrains-mono" tier oss install os
}
| Field | Values |
| --- | --- |
| preference | oss — suggest OSS catalog picks only; retail — user supplies licenses; mixed — default |
| role | ui_sans, ui_mono, code, text_serif, display, … |
| face | Id from catalog (e.g. dm-sans, graphik) |
| tier | oss or retail; must match catalog |
| install | web (Fontsource), os (Scriptbook), local (user-provided files) |
Policy detail lives in agent-rules general/font-project-lock.md.
Catalog and providers
| Source | Role |
|---|---|
Fontsource |
Default OSS web pin ( |
Google Fonts |
Directory / slug audit — not recommended runtime CDN for production |
Foundry sites (Klim, Commercial Type, Dinamo, Type Network) |
Retail purchase; no redistribution from DevCentr |
Scriptbook + equivalence-rules-cli |
OS mono install (same pattern as Appearance) |
Recommended OSS UI sans include DM Sans, Source Sans 3, Inter, Plus Jakarta Sans, IBM Plex Sans. Recommended OSS code monos: JetBrains Mono, Cascadia Mono (DevCentr terminal default remains Cascadia Mono).
Visual App Editor
Projects using Visual App Editor mirror typography choices in visual_app_editor.sdl:
typography preference="mixed" ui_sans="dm-sans" ui_mono="jetbrains-mono"
Theme panel edits preview metadata only; app ThemeData still comes from the user’s Flutter theme code until codegen exists.