🔧 Auto-commit from sysupdate on 2026-05-19 21:49

This commit is contained in:
David F Glidden
2026-05-19 21:49:14 +02:00
parent e9e772d69c
commit f83aae27c5
132 changed files with 14728 additions and 38 deletions
@@ -0,0 +1,110 @@
---
name: EB Garamond + EBGaramondSC font update — Phase 1 / 2 / 3 + LaTeX + SC corrective + feature expansion all DONE 2026-05-15
description: Five commits across two days. Phase 1 (2026-05-14, d9efb88) — core TTFs + Regular/Italic/Bold WOFF2 from Pardo v1.131. Phase 2+3 (2026-05-15, 6763b54) — Medium/SemiBold WOFF2 subsets + EBGaramondSC{08,12}-Regular built from Duffner source. LaTeX integration (2026-05-15, e3478e0) — arc-typography.sty \scfont references EBGaramondSC12-Regular.ttf. SC subset corrective (2026-05-15, 4512b9a) — retained 403 .sc glyphs + smcp/c2sc in Medium/SemiBold (versalita verdadera). Feature expansion (2026-05-15, 9d2cccb) — added case + ss06 (Garamond long-tail Q) + ordn (proper ordinals per Hart's §3.3) + swsh + frontispiece-epigraph italic swash CSS pattern (chancery flourishes on every capital of threshold quotations; title stays sober roman per Aldine practice given roman swsh has only 3 Q.long subs). One pre-existing issue still parked — \textsc TeX-capacity crash from yesterday's Phase 1 — flagged at bottom of this memory.
type: project
originSessionId: 6cef24d0-242b-474e-b8d4-fd568edf5dc2
---
## State as of 2026-05-14
Steward's installed EB Garamond v1.000 (2017 release; installed to `~/Library/Fonts/` 2019-03-14) is ~6 years out of date. Upstream `octaviopardo/EBGaramond12` is alive with active development through 2026-03-27 (master `106a4a6`). Upgrade gains: language coverage refinements, kerning improvements, bug fixes accumulated since v1.000.
Plus: `EBGaramondSC` (the separate small-caps face from Georg Duffner's original `georgd/EB-Garamond`) is also stuck at the 2019 OTF. Duffner's repo last pushed 2024-03-16; ships source files (SFD/UFO/featurefiles) only — no pre-built TTF/OTF/WOFF2 available. Building requires fontforge/UFO tooling.
## Phase 1 — DONE 2026-05-14
Core face TTF (10 files) + 3 live web WOFF2 (Regular, Italic, Bold) replaced with upstream `octaviopardo/EBGaramond12` master (sha `106a4a6`, 2026-03-27). Old files backed up to dated `_backup_2026-05-14/` directories.
**Files updated:**
- `~/Library/Fonts/EBGaramond-{Regular,Italic,Bold,BoldItalic,Medium,MediumItalic,SemiBold,SemiBoldItalic,ExtraBold,ExtraBoldItalic}.ttf`
- `~/_Dev/animal-davidglidden-eu/static/fonts/eb-garamond/EBGaramond-{Regular,Italic,Bold}.woff2`
**Verification:**
- LaTeX hour1-fontcheck.tex re-rendered: substrate clean, no regressions
- Readings-entry PDF posture re-rendered: text rendering matches v1.000 character; advance widths landed slightly differently but rhythm holds
## Phase 2 — DEFERRED (re-subset Medium / SemiBold web subsets)
Four WOFF2 subset files are used live in the screen render:
- `EBGaramond-Medium-Latin.woff2` (23 KB; basic Latin block)
- `EBGaramond-Medium-LatinExt.woff2` (65 KB; Latin Extended)
- `EBGaramond-SemiBold-Latin.woff2`
- `EBGaramond-SemiBold-LatinExt.woff2`
These were produced via subsetting (probably `pyftsubset`) from full Medium / SemiBold WOFF2 with unicode-range CSS to split. After Phase 1, the SOURCE Medium/SemiBold has changed but the SUBSET files haven't been regenerated — so the weights 500/600 on screen still serve the May 2026 subsets which were derived from a slightly older upstream.
**To complete Phase 2:**
1. `pipx install fonttools[woff]` (or `brew install fonttools` — verify pipx vs brew for the right binary; the pipx route is the steward's preferred installation path per the toolchain feedback memory)
2. From the new `EBGaramond-Medium.ttf` and `EBGaramond-SemiBold.ttf` (in `~/Library/Fonts/`), produce:
- Latin subset (U+0020–U+007F + common Latin-1)
- LatinExtended subset (U+0080–U+024F + commonly-needed extended Latin)
3. Save as WOFF2 with optimal compression
4. Replace the four files in `static/fonts/eb-garamond/`
5. Visual-diff a screen render to confirm the new subsets are consistent
Approximate effort: ~30 min hands-on + the install of fonttools.
## Phase 3 — DEFERRED (EBGaramondSC update)
`EBGaramondSC.otf` (local) and `EBGaramondSC-{Display,Regular}.woff2` (web) are stuck at the 2019 Duffner version. The Pardo continuation (`octaviopardo/EBGaramond12`) does NOT include SC — the modern approach bakes small caps into the main face via OpenType `+smcp` feature.
**Two paths for Phase 3:**
A. **Build from Duffner source** — clone `georgd/EB-Garamond`, install fontforge tooling, build EBGaramondSC.otf from the SFD/UFO sources. Last upstream push 2024-03-16, so a fresh build may capture some updates since 2019 — though Duffner's repo has been quiet enough that gains are uncertain.
B. **Migrate to +smcp on the main face** — if Pardo's `EBGaramond-Regular.ttf` includes the `+smcp` feature, the separate SC face can be retired entirely. The LaTeX `\scfont` declaration becomes `\rmfamily\addfontfeatures{Letters=SmallCaps}`. CSS-side, `font-variant-caps: small-caps` works against the regular WOFF2.
The cleanest move is **B if Pardo has +smcp**. Verify by:
```
otfinfo -f ~/Library/Fonts/EBGaramond-Regular.ttf | grep -i smcp
```
or `fc-list -v 'EB Garamond' | grep -i small`.
If +smcp is present, retiring the separate SC face simplifies the stack across both LaTeX and web. If absent, Path A is the fallback.
Approximate effort:
- Path B (if +smcp present): ~20 min (verify, edit arc-typography.sty + SCSS, test)
- Path A (build from source): half-day session — fontforge + ufo2ft pipeline learning curve
## Sequencing recommendation
When the steward returns to this:
1. **First**: verify Pardo's +smcp presence (5 min check). Settles whether Phase 3 is the simpler Path B or the heavier Path A.
2. **Then**: install fonttools via pipx and complete Phase 2 (~30 min). Closes the subset-regression gap from Phase 1.
3. **Finally**: execute Phase 3 — Path B if +smcp confirmed; Path A if not.
## Filing discipline
- Local backups at `~/Library/Fonts/_backup_2026-05-14/`. Restore via `cp _backup_2026-05-14/*.ttf .` if a regression surfaces.
- Web font backups at `static/fonts/eb-garamond/_backup_2026-05-14/`. Restore via the same pattern.
- Per `feedback-tool-installation-pipx-default.md`: install fonttools via `pipx install fonttools[woff]` (general-purpose CLI tool, isolated deps, on PATH).
## Related memory
- `feedback-tool-installation-pipx-default.md` — pipx-default rule applies to the fonttools install.
- `project-arc-pdf-print-postures-session-plan.md` — LaTeX templates that consume the updated TTFs.
- `project-chamber-cruft-restoration.md` — independent thread; no font dependency.
---
## Pre-existing issue surfaced during 2026-05-15 verification — needs separate investigation
While verifying the LaTeX integration (commit `e3478e0`), `xelatex` on `tools/latex/samples/hour1-fontcheck.tex` crashed with **"TeX capacity exceeded, sorry [input stack size=10000]"** at line 49 — the `\textsc{small-caps via the synthesized command}` invocation. Confirmed by isolation test: failure persists with `\scfont` block entirely commented out, so it is NOT caused by today's SC font work.
**Likely root cause:** microtype tracking config (`mt-EBGaramond.cfg`) interaction with Pardo v1.131 OpenType feature table introduced in Phase 1 commit `d9efb88` (yesterday). The failure happens in expl3 csname construction (`exp_args:Nc`) shortly after `mt-EBGaramond.cfg` loads. The expansion never produces output; the PDF is not written.
**Verified scope:**
- `\textsc` (synthesized small caps on main EB Garamond Regular face) — BROKEN
- `\scfont` (true SC face via EBGaramondSC12-Regular) — WORKS (verified by minimal isolation test producing a clean 14 KB PDF)
- `\emph`, `\textbf`, `\textit{\textbf{...}}`, colour — not directly tested but no errors before line 49
**Last known working state:** `tools/latex/samples/hour1-fontcheck.pdf` dated `14 May 13:47` (just after Phase 1 commit at ~13:05). Whether that PDF actually reflects a successful post-Phase-1 render or was stale from an earlier successful render is not certain.
**Diagnostic path when picked up:**
1. Render `hour1-fontcheck.tex` with `microtype` disabled (`\usepackage[disable]{microtype}` or comment out the `microtype` `\RequirePackage` in arc-typography.sty). If render succeeds, microtype is implicated.
2. If microtype is the cause, inspect `mt-EBGaramond.cfg` for tracking rules that depend on font metadata that may have changed between EB Garamond v1.000 (2017) and Pardo v1.131 (2026-03-27).
3. Workaround if needed: drop `tracking = true` from the microtype options in `arc-typography.sty:28-32` and accept slightly less polished all-caps / small-caps spacing.
4. Real fix if microtype config is at fault: file a small fix to microtype's mt-EBGaramond.cfg, or override the relevant tracking config locally in arc-typography.sty.
**Where to find the working LaTeX setup once fixed:** the existing test `tools/latex/samples/hour1-fontcheck.tex` exercises every component arc-typography.sty registers — it's the right substrate for verifying any fix.
**Not blocking:** the SC font work (commits `6763b54` + `e3478e0`) is complete and independently verified. This issue is older than today's work and warrants its own session.