Pixel Font Readability Pass for Steam Capsule and In-Game HUD - 2026
Your capsule icon can pass 32px silhouette gates while the title wordmark on the header capsule dissolves into noise. Players install, launch the fest demo, and the in-game HUD uses the same pixel font at sizes that were never proofed at 1080p downscale on a TV or laptop panel scaled to 125% Windows display scaling.
October 2026 Next Fest multiplies that failure: discovery rows show tiny type; trailers and screenshots inherit your font choices; refund screenshots attach unreadable damage numbers beside honest gameplay.
This Art & Design guide is the font legibility layer—not another store-metadata parity checklist, not a repeat of color-contrast UI rules. You will run one readability pass across capsule title text and HUD critical strings, document five gates, and ship a pixel_font_readability_receipt_v1.json beside your existing art proofs.
Who this is for and what you get
| Audience | Outcome |
|---|---|
| Solo artist doing store + UI | One evening pass with export proofs |
| Producer | Reject illegible fonts with a rubric, not taste arguments |
| Programmer using bitmap fonts | Engine export sizes tied to store downscale matrix |
Time: ~90 minutes first pass; 20 minutes per font revision after templates exist.
Prerequisites: Master capsule PSD/vector, in-game UI scene at 1920×1080 capture, palette lock worksheet, optional color-picking tools listicle.
Why this matters now (May 2026)
- Header stack discipline — Fest prep blogs already cover 32px icons and screenshot safe zones; title typography is the gap teams still ship broken.
- 1080p living-room tests — Steam Deck and TV browsers downscale UI; pixel fonts sized for 4K editor windows fail on $400 laptops.
- Screenshot merchandising — Store teams crop HUD corners into stills; fonts that fail in stills fail in trailer frame audits.
- Demo hour-one parity — Players read HP, ammo, and objective text in the first minute; unreadable HUD reads as “early access broken,” not “retro aesthetic.”
- Art cluster completion — After palette + icon + composition, font pass is the cheapest fix before burning trailer weeks—pairs with fest-first visual discipline.
Direct answer: Export capsule title type and HUD strings through a fixed downscale matrix, pass five font gates, block fest branch promotion until store-art/pixel-font-proof/ is green.
How this differs from nearby guides (anti-cannibalization)
| Guide | Focus | This pass |
|---|---|---|
| 32px icon gates | Silhouette icon crop | Letterforms on header capsule |
| Pixel UI color contrast | Luminance separation | Glyph size, spacing, aliasing policy |
| Screenshot composition | Layout beats | Typography in those beats |
| Store FAQ/metadata checklists | Text fields in Steamworks | Rendered pixels, not copy docs |
The five font gates (overview)
| Gate | Surface | Question | Fail signal |
|---|---|---|---|
| F1 Capsule title | Header 920×430 downscale | Readable at 25% width preview? | Letters merge to rectangles |
| F2 Store still HUD | Screenshot 1920→600px wide | Critical labels survive crop? | Quest text illegible |
| F3 In-game HUD | 1080p fullscreen | HP/ammo/objective readable 2 m? | Squint required |
| F4 Dynamic type | Damage floats, pickups | 3-digit numbers distinct? | 888 vs 808 ambiguity |
| F5 Fest parity | Capsule vs demo | Same font family + weight story? | Pinterest font on store, generic UI in demo |
Work F1 → F5. Do not tune kerning on capsule until F3 passes on device.
Beginner path — one evening pass
Step 0 — Inventory fonts (15 minutes)
List every font file and size used in:
- Header capsule title (if rasterized into art)
- Logo wordmark overlay
- HUD: health, ammo, objectives, pause menu
- Store screenshot captures (same build)
Save as docs/font_inventory.md:
capsule_title: [font name] @ [export px height]
hud_hp: [font] @ [size in engine]
hud_objective: [font] @ [size]
screenshot_build_id: [git or export tag]
Step 1 — Build the downscale matrix (20 minutes)
| Preview context | Export method | Target width |
|---|---|---|
| Capsule title crop | Scale master header to 230px wide | Sidebar thumbnail |
| Store carousel | Resize screenshot to 600px wide | Steam listing |
| In-game | Native 1920×1080 PNG + 125% OS scale photo | Real desk test |
| Trailer frame | 1280×720 still at 1:08 | Trailer audit |
Beginner mistake: Only zooming inside Photoshop at 100%. You need exported PNGs at target widths, not canvas zoom.
Step 2 — Run F1 capsule title gate
- Export header capsule without changing layout.
- Generate 230px-wide PNG of title region only.
- Squint test at arm’s length—can a non-backer read the game name genre?
- If fail: increase x-height, reduce letter count, or add 1px neutral outline (not glow soup).
Rule of thumb: Capsule titles above six words rarely survive F1—shorten copy in art, not in Steam short description only.
Step 3 — Run F2 screenshot HUD gate
Capture three screenshots at combat, menu, and map/objective states. Downscale to 600px width. Mark any string you cannot read in 3 seconds red on a copy layer—those strings must grow or gain backing panels before fest capture week.
Pair with pixel UI contrast rules when failure is color not size.
Step 4 — Run F3 in-game HUD gate (device required)
Install fest demo build on:
- One 1080p laptop at 125% display scaling (common Windows default)
- One 1080p TV or monitor at 2 m viewing distance
Play 10 minutes. Partner reads aloud HP and objective text while you play—if they hesitate, F3 fails.
Construct / Godot note: Bitmap font sizes in editor ≠ CSS-like pt sizes; change export scale or font resource height, not only letter spacing in art tool.
Step 5 — Run F4 dynamic type gate
Spawn test room with:
- Damage numbers 888 vs 808
- Currency 9999 vs 10000 width change
- Timer 0:09 vs 0:08 at session end
Ambiguous glyphs mean widen digit sprites or pick a font with distinct 0/8, 1/7, 6/9 bowls.
Step 6 — Run F5 fest parity gate
Side-by-side: capsule PNG + in-game HUD screenshot. Ask:
- Same pixel grid density?
- Same stroke policy (all outlined or all flat)?
- Same sci-fi vs medieval story?
Mismatch trains “store lie” before install—feeds store-demo mismatch recovery patterns.
Step 7 — File proof folder
store-art/pixel-font-proof/
gates.md
capsule_title_230w.png
screenshot_600w_combat.png
hud_1080p_photo.jpg
pixel_font_readability_receipt_v1.json
Developer path — engine and pipeline detail
Bitmap font authoring (Aseprite / BMFont / engine importers)
| Decision | Recommendation |
|---|---|
| Base glyph height | Start 16 px grid for body HUD; 24 px for hero numbers |
| Padding | 1 px transparent between glyphs in sheet |
| Anti-aliasing | Pick one policy: full pixel (hard) or 1×AA—mixing fails F5 |
| Outline | Max 1 px outer; 2 px doubles blur at downscale |
| Fallback Latin | Include accented chars you use in translations now, not at loc lock |
Handoff JSON for programmers:
{
"font_readability_spec_version": "1.0.0",
"hud_critical_min_height_px": 16,
"damage_float_min_height_px": 20,
"capsule_title_max_words": 6,
"downscale_tests": ["230w_capsule", "600w_screenshot", "1080p_125pct_os"],
"gates_required": ["F1", "F2", "F3", "F4", "F5"]
}
Godot 4.x Label / BitmapFont
- Enable integer scaling where project settings allow—fractional scale blurs pixel fonts.
- Separate UI canvas layer from world camera zoom.
- Capture screenshots with
content_scale_modeidentical to ship build. - Document
theme_override_font_sizesin BUILD_RECEIPT when fest build changes.
Construct 3 Text vs Sprite Font
- Sprite fonts survive downscale better than stretched TTF at small sizes.
- If using Text object, verify Sampling point mode on export.
- Event sheet order does not fix illegible fonts—art pass does (event sheet challenge is orthogonal).
Unity UI Toolkit / TMP
TMP with pixel-perfect material still fails F3 if point size < 14 on 1080p. Prefer bitmap font assets for retro titles; TMP for menus only.
pixel_font_readability_receipt_v1.json (template)
{
"receipt_type": "pixel_font_readability",
"version": "1.0.0",
"build_id": "fest-demo-2026-05-22",
"fonts": {
"capsule_title": { "face": "YourFont7", "height_px": 28, "gate_F1": "pass" },
"hud_hp": { "face": "YourFont7", "height_px": 16, "gate_F3": "pass" },
"damage_float": { "face": "YourFont7Digits", "height_px": 20, "gate_F4": "pass" }
},
"proof_folder": "store-art/pixel-font-proof/",
"reviewer": "human",
"fest_target": "October 2026 Next Fest"
}
Attach beside BUILD_RECEIPT uploads so partners see art discipline beyond metadata diffs.
Size matrix — starting points (adjust per font)
| String role | Editor native | Minimum after 600w downscale | Notes |
|---|---|---|---|
| Capsule title | 28–36 px cap height | 7–9 px cap height in 230w crop | Fewer words beats bigger PSD |
| Objective label | 16 px | 5 px apparent stroke | Add 8px backing plate |
| HP counter | 16–20 px | Digits must clear F4 | Tabular figures preferred |
| Damage float | 20–24 px | 1-frame peak readable | Avoid yellow-on-white |
| Pause menu | 18 px | Largest menu item F3 | One column layout |
These are starting points, not laws—your font’s x-height may demand +2 px.
Common pixel font failures (and fixes)
| Failure | Fix |
|---|---|
| Glow halos on type | Remove outer glow; use flat backing rect |
| Subpixel positioning | Snap glyphs to integer pixels |
| Italic pixel fonts | Avoid on HUD; reads as blur |
| Gradient fill in letters | Replace with two-tone flat |
| All-caps long words | Title case or abbreviate |
| Cyrillic added late | Re-run F1–F4 with worst-case strings |
| HDR bloom on UI | Disable bloom on text layer |
| Video compression mush | Export trailer text plates larger |
Proof table — gates vs evidence
| Gate | Evidence file | Pass |
|---|---|---|
| F1 | capsule_title_230w.png |
☐ |
| F2 | screenshot_600w_*.png |
☐ |
| F3 | hud_1080p_photo.jpg |
☐ |
| F4 | damage_float_test.png |
☐ |
| F5 | parity_side_by_side.png |
☐ |
Pairing with fest operations (not metadata)
| Ritual | How font pass plugs in |
|---|---|
| Wednesday metadata diff | Add 5 min F1 check if capsule art changed |
| Wednesday demo smoke | F3 read-aloud during golden path |
| 7-day metadata sprint | Day 4 art block includes font proof |
| Fest marketing cap | Unreadable ads waste spend |
AI-assisted art workflows (honest limits)
Teams using generative art for capsules often paste AI poster typography that is not in the demo HUD. F5 exists to kill that drift.
| AI use | Safe | Risky |
|---|---|---|
| Background art | Yes | — |
| Logo sketch reference | Yes | Do not ship unreadable AI letters |
| HUD font generation | Rarely | Re-draw on pixel grid manually |
| Upscale tiny text | No | Creates fake sharpness |
Disclose assistive AI on store pages when required—see AI disclosure intake.
Cross-links for programmers (floor transitions, saves)
Unreadable HUD hides systemic bugs—players cannot read [DEBUG] seeds or migration warnings. After font pass, return to:
- Godot threaded loader vs Construct tick groups (comparative engine guide)
- Construct save migration playbook
- RNG replay case study
48-hour font pass sprint (micro-studio schedule)
| Block | Task |
|---|---|
| Hour 0–1 | Font inventory + matrix exports |
| Hour 1–3 | F1–F2 fixes in art tool |
| Hour 3–5 | F3 device tests + engine size bumps |
| Hour 5–6 | F4 digit torture room |
| Hour 6–7 | F5 parity + receipt JSON |
| Hour 7–8 | Re-capture screenshots + update capsule if needed |
Steam header layers — where typography hides
The 920×430 header capsule is not one image—it is a stack. Teams fail F1 because they proof the wide hero while Steam shows a cropped title corner beside the 32px icon.
| Layer | Typography risk | Proof action |
|---|---|---|
| Background illustration | Busy texture behind letters | Add scrim plate behind title only |
| Logo wordmark | Too many weights | One weight + optional 1px outline |
| Tagline strip | Subtitle at 8px equivalent | Delete or move to screenshots |
| Legal / EA badge | Competes with title | Move to screenshot #5, not capsule |
Export proofs for full header, icon-adjacent crop, and library thumbnail crop—three PNGs, three F1 checks. The capsule opinion post argues fest-first discipline; this section is the type-specific implementation.
HUD string priority tier (what must pass F3 first)
Not every string deserves the same pixel budget. Tier before resizing fonts blindly:
| Tier | Examples | Gate |
|---|---|---|
| P0 Survival | HP, lives, pause hint | F3 mandatory |
| P1 Objective | Quest active, room goal | F3 mandatory |
| P2 Economy | Gold, crafting count | F4 if changes fast |
| P3 Flavor | Barks, item descriptions | F2 only if in screenshots |
| P4 Debug | build_id, seed |
F3 if visible in demo |
Cut P3 from screenshots if it fails F2—do not shrink P0 to rescue flavor text.
Collaboration script — artist + programmer + marketer
Monday 15 min: Artist shares font_inventory.md. Programmer confirms engine sizes match sheet. Marketer lists six-word max capsule title.
Wednesday: After metadata diff ritual, if store/capsule.png changed, rerun F1 only.
Friday: Marketer recaptures screenshots from build with bumped HUD sizes; rerun F2.
Pre-branch: Producer signs gates.md all green—blocks promotion like a failing smoke test.
This rhythm prevents the “artist fixed capsule Friday, programmer shipped old HUD Monday” drift that triggers demo mismatch timelines.
Engine-specific capture checklist (screenshot truth)
| Engine | Capture rule |
|---|---|
| Godot | Disable debug overlay; use content_scale ship value |
| Construct | Browser preview ≠ NW.js export—capture export build |
| Unity | Game view scale 1×; disable gizmos |
| GameMaker | GUI layer not scaled separately from application surface |
Wrong capture invalidates F2—you will “fix” fonts that players never see.
Accessibility and readability (practical, not legal advice)
WCAG contrast ratios help when text sits on busy plates—use the color contrast guide for luminance. Font pass adds:
- Minimum x-height for body HUD strings
- No color-only state (poison vs normal must differ by icon + text)
- Optional scalable mode post-fest if scope allows—document as roadmap, not fest lie
Fest week regression watch (October 2026)
When traffic spikes, teams hot-fix gameplay and accidentally shrink UI. Add to demo patch notes template:
UI font sizes changed since last build_id? [Y/N]
If Y: pixel_font_readability_receipt version bumped? [semver]
One line saves refund threads claiming “UI became unreadable after Tuesday patch.”
Genre notes (patterns, not prescriptions)
Roguelite runs: Prioritize room label + HP; shrink flavor text. Tactics: Grid numbers need F4 more than title art. Cozy: Larger objective font; smaller damage floats. Shooter: Ammo counter width at 999 ammo. Puzzle: Move count must pass F2 in carousel still.
Outbound references
- Steamworks store page assets — official dimension context
- WCAG contrast understanding — pair with color guide, not replace font gates
Key takeaways
- Pixel font pass covers capsule title text and in-game HUD, not icons alone.
- Five gates F1–F5 with proof folder before October 2026 Next Fest.
- Test 230w capsule, 600w screenshots, and 1080p @ 125% OS scale.
- F4 catches ambiguous digits—888 vs 808.
- F5 stops store/demo font story drift.
- Complements 32px icon and UI contrast guides—does not replace them.
- Ship
pixel_font_readability_receipt_v1.jsonwith fest evidence. - Shorten capsule words, not only shrink letters.
- Device playtest is mandatory for F3—Photoshop zoom is insufficient.
- This is Art & Design, not another metadata surface checklist.
FAQ
Does this replace the 32px icon checklist?
No—run both. Icon silhouette and title typography are separate gates.
We use a vector font on capsule only—is this relevant?
Yes—rasterize through the same downscale matrix; vector smoothness often dies at F1.
What if our game has no pixel art HUD?
Skip F4 patterns that do not apply; keep F2–F3 for any critical text.
How does this relate to localization?
Re-run F1–F4 with longest translated strings before lock.
Can I fix fonts only in screenshots?
That creates store-demo mismatch—fix the build.
BMFont vs engine bitmap fonts?
Either works if export sizes match matrix rows.
October fest deadline—minimum viable?
Pass F1, F2, F3 on critical strings; schedule F4–F5 before branch promotion.
We already passed icon gates—still fail fest CTR?
Audit F1 title text and first screenshot HUD; icons and words fail independently.
Does Steam compress fonts in trailers?
Yes—proof at 720p export per trailer frame audit.
Worked example — failing F1 to green (composite)
Before: Six-word fantasy title at 22px cap height on busy forest background; 230w crop reads as moss.
Changes (no code): Shorten to three words; raise cap height to 30px; add 40% dark scrim behind title only; 1px #222 outline on letters.
After: Partner reads title aloud at 2 m from laptop without hesitation. Time spent: 35 minutes art tool only.
HUD follow-up: Same font family at 16px for objective string; F3 pass on 125% scaled laptop. Receipt version 1.0.1.
Document before/after PNGs in proof folder—publisher diligence packets love visual discipline without invented metrics.
Conclusion
Unreadable pixel fonts are a silent fest killer: players never articulate “bad kerning at 230 pixels wide,” they say “looks cheap” and bounce. A single readability pass across Steam capsule title text and in-game HUD—with five gates, downscale proofs, and a receipt JSON—costs one evening and protects every downstream checklist you already run.
Start with docs/font_inventory.md, export the matrix PNGs, and do not promote a fest branch until store-art/pixel-font-proof/gates.md is green. Your icon can sparkle at 32px while your title still whispers; fix both before October traffic arrives.
Next reads: Palette lock worksheet, Screenshot safe zones, 14 free metadata export tools.