shots fonts: local font files (title / body / fallback) with cmap coverage, served in place, hash in fonts.json, license note

This commit is contained in:
CRTkafa 2026-10-12 04:15:19 +08:00
parent 1150d4e4e6
commit 354daba672
13 changed files with 513 additions and 48 deletions

View file

@ -92,6 +92,11 @@ in a plain Android tablet body instead of the iPad one.
titles; Montserrat, Inter, Nunito for body), or, if the owner accepts mixed glyphs, `shots.fonts.fallback:
['Noto Sans Display']`. Lilita One lacks most of Latin Extended (Turkish ş ğ İ, Polish, Czech, Romanian) and
Vietnamese. Re-run after copy or font edits (render refuses fonts that no longer cover the copy).
A game's own brand font: put the file path (relative to the config; TTF / OTF / WOFF / WOFF2) or
`{ family, file, license }` into `shots.fonts.title` / `body` / `fallback`. The same coverage check runs on it, listed
fallbacks are tried before Noto (`pl title: ę ł ą Ł not in ER Display -> Noto Sans Display`), the file is served in
place (never copied) and its hash is in fonts.json, so edits to the font need `shots fonts` again. Ask the owner for
the license ('OFL-1.1', 'proprietary', ...) and put it in `license`; `shots check` warns without one.
5. **Style and scenes.** `shots.style`: `game` (sunburst, sparkles, outlined titles, badges) or `app` (calm gradient,
one clean device frame, headline + subline, no sparkles; badges only as quiet chips when the copy has them).
Default: `app` for the app / subscription-app profiles, `game` otherwise. `shots.scenes`: palette (game: fire,