--- 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.