mkcapsule.c already ingests arbitrary non-.4th files as raw byte blobs (validate_forth_blocks only applies to .4th filenames), so no hex/base64 text-encoding or tool changes are needed -- corrects the design premise in FABRIC.md's 4.3.7b item text (see the FABRIC.md correction note this commit carries). ttf_load_from_capsule() resolves the font capsule by name, validates its content hash, and points ttf_font_t at the capsule arena bytes directly, zero-copy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1.8 KiB
capsules/fonts/
Font capsule for FABRIC.md items 4.3.7/4.3.7b (TrueType rendering, adjunct to the stroke font — §27.7).
| File | License | Provenance |
|---|---|---|
JetBrainsMono-Regular.ttf |
SIL Open Font License, Version 1.1 | The JetBrains Mono Project Authors, copyright 2020 (https://github.com/JetBrains/JetBrainsMono). License string confirmed by reading the font's own embedded name table directly (strings -e b JetBrainsMono-Regular.ttf) — not taken on trust from the filename. |
Chosen as the v1 test/default TTF font 2026-08-10 (FABRIC.md §27.7 "Update 2026-08-10"), resolving that item's licensing-check blocker.
Embedded as a raw-binary capsule, not text-encoded. tools/mkcapsule.c's
process_file() reads any regular file under capsules/ as raw bytes and
only runs the 64-char/16-line .4th text-block validation
(validate_forth_blocks()) when the filename ends in .4th — everything
else, including this .ttf, is stored byte-for-byte in the generated
capsule_arena[] and content-hashed (xxHash64) exactly like every other
capsule. Capsule name: fonts:JetBrainsMono-Regular.ttf (colon-separated
relative path, per build_capsule_name()). Fetch it with
capsule_find_by_name() (include/starkernel/capsule.h) — that returns
offset/length into the arena without ever routing through
capsule_exec_payload(), so nothing tries to interpret the font bytes as
FORTH source. This superseded FABRIC.md §27.7 decision #3 (hex/base64
text-encoding) — see that section's 2026-08-10 correction note.
No SIL OFL 1.1 full license text is bundled here yet — only the font's own
embedded attribution string. Add the full OFL.txt alongside this file if/
when redistribution requirements are checked in detail (OFL requires the
license text to accompany the font).