shots: glyph coverage check per language, automatic Noto fallbacks, check errors on fallback / system-font glyphs
Lilita One lacks most of Latin Extended-A (Turkish s-cedilla, g-breve, dotted I ...), so Turkish titles were drawn with a silent browser fallback while shots check passed. shots fonts now reads the cmap of every face (pure TS, TTF/OTF/WOFF/WOFF2), adds a Noto fallback per missing character or fails with language + characters; render measures which face drew each character (CDP probes) and records it in report.json; check errors on fallbacks the config did not choose (shots.fonts.fallback) and on system-font glyphs. Default game title font: Paytone One.
This commit is contained in:
parent
930f960318
commit
d942275920
22 changed files with 859 additions and 69 deletions
|
|
@ -74,20 +74,29 @@ in a plain Android tablet body instead of the iPad one.
|
|||
`badges` [[big, small]] (game style). Short and true (only claim what is in the app); about 15 Latin characters per title line.
|
||||
Natural marketing tone per language, not literal translation; use the app's own terms.
|
||||
4. **Fonts.** `storebound shots fonts` downloads title/body fonts and a Noto subset for every non-Latin script found in
|
||||
the copy (CJK, Arabic, Hebrew, Devanagari, Thai, Cyrillic/Greek). Re-run after copy edits.
|
||||
the copy (CJK, Arabic, Hebrew, Devanagari, Thai, Cyrillic/Greek), then checks every character of every language
|
||||
(copy.json + config languages) against the cmap of the fonts that draw it. A character the title / body font lacks
|
||||
gets an automatic Noto fallback (`WARN tr title: ş ğ not in Lilita One -> Noto Sans Display`); no fallback at all
|
||||
fails with the language and the characters. Renders that used an automatic fallback (or a system font) are ERRORS in
|
||||
`shots check`: fix it with a title / body font that covers the language (Paytone One, Baloo 2, Rowdies for game
|
||||
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).
|
||||
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,
|
||||
violet, blast, green, night, sky, gold, candy; app: mist, paper, mint, sand, rose, sky, ocean, slate; or custom
|
||||
`{ bg, glow, ink, shadow }`), frames (one front phone + optional back phones with x / dy / scale / rotate), badge
|
||||
slots (y, side, icon, hot, stars). Fonts default to Lilita One + Montserrat (game) or Inter (app).
|
||||
slots (y, side, icon, hot, stars). Fonts default to Paytone One + Montserrat (game) or Inter (app): all cover
|
||||
Latin Extended and Vietnamese.
|
||||
6. **Render.** `storebound shots render --lang en` first, review `store/renders/en/sheet.png` (contact sheet, sizes
|
||||
packed into a grid), then
|
||||
all languages in the background: `storebound shots render > .storebound/render.log 2>&1 &`.
|
||||
7. **JPEG for Play.** `storebound shots jpeg` (q92, about 4x smaller than PNG; App Store stays PNG).
|
||||
8. **Check.** `storebound shots check` (read-only, exit 1 on errors): pixel sizes (Apple: a listed size, portrait or
|
||||
landscape; Play screenshots 320-3840 px at most 2:1; feature graphic exactly 1024 x 500), alpha, Play JPEG /
|
||||
24-bit PNG and 8 MB, counts per set (Apple 1-10, Play 2-8), text overflow flags (warnings). `--variants` also checks
|
||||
24-bit PNG and 8 MB, counts per set (Apple 1-10, Play 2-8), text overflow flags (warnings), glyphs drawn by an
|
||||
automatic font fallback or a system font (errors; `shots render` measures every character in the page). `--variants` also checks
|
||||
A/B variant folders. `storebound validate` runs the same checks on the renders folder and lists errors as
|
||||
blockers next to the store state (`--no-local` skips them).
|
||||
9. **Review.** `storebound shots gallery` writes `<renders>/index.html`: one self-contained page (no network, open it
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue