design: bundle Inter + JetBrains Mono (OFL-1.1) as the standard typefaces

The DESIGN.md type standard needs the fonts actually present — the machine's installed faces
are not a design system. Four Inter weights (400/500/600/700) and two JetBrains Mono weights
(500/600) ship as WPF resources from Assets/Fonts; the token families resolve them with the
`/Assets/Fonts/#Family` pack form, so nothing depends on an install or a network fetch.

Licensing (recorded in docs/ai/product.md): OFL-1.1 is a free licence but is NOT GPL-compatible
in the linking sense. These are separate .ttf files loaded through WPF's font stack — an
aggregate, not linked code — so they coexist with the GPL-3.0 app. Obligations carried:
copyright line in THIRD-PARTY-NOTICES.txt (new items 13-14), the OFL text beside the files
(Assets/Fonts/OFL-*.txt), no modification, no reserved-name reuse.

Guard: BundledFontsTests — files exist and are real binaries, the csproj ships them, the theme
uses pack URIs (a bare family name would silently fall back), the notice and both OFL texts are
present, and no third font family sneaks in.

Pending visual confirmation: the first launch should render panel text in Inter and telemetry
in JetBrains Mono.
This commit is contained in:
2026-10-30 07:45:19 -07:00
parent f2bf577f34
commit 84c335a929
14 changed files with 416 additions and 142 deletions
+7
View File
@@ -98,6 +98,13 @@ the rule itself still stands for its other reasons. **NEVER:**
would complicate every redistribution. The app's icon + logo (`Assets/llamacasty-icon.*`,
`Assets/llamacasty-logo.jpg`) are the creator's own art — all rights reserved, outside the GPL
(`ADDITIONAL-TERMS.md`).
- **Ship a font whose licence was not checked.** The two bundled families — **Inter** and
**JetBrains Mono** — are **SIL Open Font License 1.1** (approved 2026-10-30 with the DESIGN.md
standard). OFL is a free licence but is **not** GPL-compatible in the linking sense; they ship as
separate `.ttf` files loaded through WPF's font stack, which is aggregation, so the two coexist.
Obligations: keep the copyright line in `THIRD-PARTY-NOTICES.txt`, ship the `OFL-*.txt` text
beside the files in `Assets/Fonts/`, and never modify the fonts or reuse their reserved family
names for a modified version. Any new typeface needs this same check before it ships.
- **Ship an ML model without clean provenance** — the background-effects model (TASK 51) is Google's
official MediaPipe Selfie Segmenter download (Apache-2.0, model card), converted by our own script.
Model-zoo re-hosts (e.g. PINTO #109 = ML Kit's model, extracted) are off-limits. Apache-2.0 §4