font.4th: default system font-set capsule, 113 glyphs (item 4.3.6c)

Punch list §25 item 4.3.6c complete. Digits, upper/lowercase, ASCII
punctuation, Latin-1 Supplement, and General Punctuation, each a
stroke-drawing word in the 4.3.6 em-square convention.

Corrected mid-build: the first pass used G-LINE only, missing that
CIRCLE/ARC/ELLIPSE already existed (4.3.3b). Reworked all round shapes
to use them via new em-square-aware wrappers (G-CIRCLE/G-ARC/G-ELLIPSE/
EM-R, fabric.4th 5000-5002), bounded to quarter/half/three-quarter/
full sweeps to avoid unbounded per-glyph angle tuning. font.4th also
redefines DISPATCH-GLYPH/DRAW-GLYPH themselves, not just the six
DISPATCH-* bucket words, since fabric.4th's originals were compiled
early against the 4.3.6b placeholders (CASE early-binding, §27.6.5).

Three-arch acceptance boot clean, Stadium conservation unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Robert Allan James
2026-08-09 20:26:14 -04:00
co-authored by Claude Sonnet 5
parent 4427986c96
commit 5d2e1c2184
14 changed files with 55314 additions and 114 deletions
+44 -1
View File
@@ -4514,12 +4514,55 @@ document and committing that amendment as its own item.*
> amd64 (`logs/20260809-191200`), aarch64 (`logs/20260809-191237`), riscv64
> (`logs/20260809-191327`).
- [ ] **4.3.6c — Default system font-set capsule.** The confirmed 113-glyph v1 repertoire
- [x] **4.3.6c — Default system font-set capsule.** The confirmed 113-glyph v1 repertoire
(95 ASCII printable + 11 Latin-1 Supplement + 7 General Punctuation, itemized in §27.6.4),
each glyph a stroke-drawing word in the 4.3.6 em-square convention returning its own
`em-advance`, one capsule. *Done when:* every glyph in the 113-glyph v1 repertoire is
defined, lint-clean (`mkcapsule --lint`), individually verified to render a recognizable
shape via screendump. *Refs:* §27.6.4.
> **Done 2026-08-09.** `capsules/font.4th`, all 113 glyphs, blocks 4925-4984, 60 blocks.
>
> **Correction found mid-build, not designed around silently:** the first pass built every
> glyph with `G-LINE` only, missing that `CIRCLE`/`ARC`/`ELLIPSE` already existed
> (item 4.3.3b, `fabric.4th` 4907-4912) for exactly this. User caught it and chose to rework
> everything already built, not just curves going forward. Required new em-square-aware
> wrappers — `EM-R` (magnitude scaling, no `GOX`/`GOY` translation) plus `G-CIRCLE`/
> `G-ARC`/`G-ELLIPSE`, added to `fabric.4th` blocks 5000-5002 (non-contiguous with
> `fabric.4th`'s own 4900-4924 range because `font.4th` had already claimed 4925+ —
> BLOCK_MAP.md checked before picking 5000). Scoped to this item (4.3.6c), not a reopening
> of 4.3.6, same precedent as the FORGET-hook/`stadium_owner` additions elsewhere in this
> list — but 4.3.6 itself should be read as having grown these three words later.
> `ARC`'s sweep direction was derived, not assumed (`ang=0`→3 o'clock, increasing angle
> sweeps CCW through 12 o'clock) and confirmed by a one-shot render before any glyph used
> it (top semicircle at `a0=0 a1=PI`, matched the derivation).
>
> **Bounded curve scope** (advisor-flagged risk: hand-tuning arc sweep angles per glyph is
> unbounded, one QEMU boot per iteration). Only quarter/half/three-quarter/full sweeps of
> the four Q48.16 literals (`0`, `PI/2`=102944, `PI`=205887, `3PI/2`=308831) plus full
> `CIRCLE`/`ELLIPSE`, no custom-fitted angles. Converted: digit `0`, upper `O` `Q` `C` `G`
> `D`, lower `o` `b` `d` `p` `q` `c` `e`, punct `%` `.` `@`. `D`'s bowl and the lowercase
> `b`/`d`/`p`/`q` bowls use one `ARC` each, radius = half the bowl height, centered on the
> stem's x — the arc's two endpoints land exactly on the stem ends by construction (no
> seam). Everything else (`S`/`s`/`&`/digits 2-9/etc.) stays the original blocky `G-LINE`
> style — recognizable, not hand-fitted, per the same advisor guidance.
>
> **Early-binding fix applied, not just documented:** per §27.6.5 (found during 4.3.6b),
> `CASE` binds early, so `font.4th` redefines all six `DISPATCH-*` bucket words with real
> `CASE` tables (replacing fabric.4th's 4.3.6b placeholders) *and* redefines
> `DISPATCH-GLYPH`/`DRAW-GLYPH` themselves (blocks 4979-4984) — fabric.4th's originals were
> also compiled early, against the old placeholder buckets, so redefining only the six
> bucket words would not have been enough. Verified live: `DRAW-GLYPH` called directly with
> codepoints 48/67/111/176 rendered the real `0`/`C`/`o`/`°` (ellipse/arc/ellipse/circle),
> not `TOFU`, confirming the full pipeline binds to the new definitions.
>
> Verification: `mkcapsule --lint capsules/font.4th` clean. All 113 glyphs screendump-
> verified in one grid render (digits+`%.@`, upper, lower, Latin-1+GenPunct rows) plus a
> separate `DRAW-GLYPH`-pipeline render — arc-bowl direction, oval shapes, and dispatch
> routing all confirmed correct by eye.
>
> Three-architecture acceptance boot clean, Stadium conservation unchanged
> (`resident_sum=43691 reservoir=21845 sum=65536`): amd64 (`logs/20260809-202214`),
> aarch64 (`logs/20260809-202252`), riscv64 (`logs/20260809-202342`).
- [ ] **4.3.6d — Boot-time loading.** Wire `fabric.4th` and the 4.3.6c font capsule into
`init.4th`'s boot chain. *Done when:* standard three-arch QEMU boot shows both capsules