# Fonts & licenses

## Fonts (both SIL Open Font License 1.1 — free for commercial use, embeddable, no attribution required in-product)

| Use | Family | Where | License |
|---|---|---|---|
| UI / labels / body | **Space Grotesk** | Google Fonts · https://fonts.google.com/specimen/Space+Grotesk · repo: https://github.com/floriankarsten/space-grotesk | OFL-1.1 |
| Pixel kicker / HUD tags / billboard titles | **Silkscreen** | Google Fonts · https://fonts.google.com/specimen/Silkscreen · by Jason Kottke | OFL-1.1 |
| Mono (clocks, code-y readouts) | **DM Mono** | Google Fonts · https://fonts.google.com/specimen/DM+Mono | OFL-1.1 |

The prototype loads these from the Google Fonts CDN. For the real build, **self-host** the woff2 files (drop them next to your bundle, `@font-face` them) so the overworld works behind the PIN with no third-party calls. OFL lets you bundle and serve them; just keep the OFL.txt alongside each family and don't sell the fonts themselves.

Roles:
- **Space Grotesk** 600/700 for everything readable (room labels, nametags, panels, headings).
- **Silkscreen** for the tiny uppercase "kickers", HUD `LIVE/MANUAL`, and billboard titles — it's the pixel-game flavor; never use it for body (illegible past a few words).
- **DM Mono** for the clock and any number readouts.

## Art assets — licensing story

**Everything in `fable-art.js` is original, procedurally-drawn pixel art** authored for this project (plain canvas rectangles + a seeded RNG). It is **not** derived from any third-party pack, so there's nothing to attribute and no license encumbrance — treat it as yours to use, modify, and ship. The same goes for the generated `sprite-atlas.png`.

Earlier notes referenced Kenney / OpenGameArt as *recolor targets* — that was about matching a CC0 production pipeline, not because any of their pixels are present here. Two clean paths for the real build:

1. **Keep it procedural.** Use `fable-art.js` directly — every tile/prop/character is a function, so you get unlimited non-repeating variants and trivial recoloring (pass a different ramp). This is the most flexible and stays 100% original.
2. **Swap in real CC0 raster sheets.** If you'd rather load static art, the tokens + zone map are pack-agnostic. Good CC0 (public-domain) starting points, all genuinely CC0:
   - **Kenney** — `kenney.nl` — Roguelike/RPG, Tiny Town, Tiny Dungeon, Topdown Shooter, Sci-Fi RTS, Pixel Platformer Industrial. (CC0.)
   - **OpenGameArt** — filter by license = CC0 for top-down RPG tilesets.
   Recolor them to `tokens.materials` ramps, re-ink outlines to `#2B2A38`, bake the top-left light, and they'll sit in the same world. Keep a `CREDITS.txt` noting the packs even though CC0 doesn't require it — it's good hygiene.

## Quick self-host snippet

```css
@font-face { font-family:'Space Grotesk'; src:url('./fonts/SpaceGrotesk-600.woff2') format('woff2'); font-weight:600; font-display:swap; }
@font-face { font-family:'Silkscreen';   src:url('./fonts/Silkscreen.woff2')       format('woff2'); font-weight:400; font-display:swap; }
@font-face { font-family:'DM Mono';      src:url('./fonts/DMMono-400.woff2')        format('woff2'); font-weight:400; font-display:swap; }
```
Grab the woff2s from the Google Fonts "Download family" zips (they ship the OFL.txt inside).
