Heddle 0.2: Latin Extended-A, lighter marks, open counters at Black, wdth 85 masters
RI
5h ago+4128+4128+0123456789012345678901234567890123456789-814-814-012345678901234567890123456789
Summary
Closes the "Open issues for 0.2" list in heddle/STATUS.md. Loom changes only; the fonts are rebuilt from it.
- Drift near wdth 85: 4 masters at wdth 85 (16 in all). Largest shape drift 11.1 % → 8.7 %, largest advance drift 38.8 → 30.6 units (
proofs/heddle/drift.json). Tabular figures now take the sketch width at every master width (0.85 at wdth 85; 0.1 gave 0.9). - Marks: lighter and smaller. A new
.narrowset on ı I l ȷ keeps ï Ï Ĩ ĺ at their base advance. Capital marks stay below 950, so win ascent is now 950 (was 1051). - Open counters at Black: a minimum counter rule: inner radius ≥ 0.25 S, capped at 38 units per weight. Hook rings (f t j ſ ŋ Ŋ £) widen so the hook counter stays open; j reaches left of its box at heavy weights. Nothing changes at Regular. ß ð @ © ® % are redrawn with the rule, and § is new.
- Glyphs: all of Latin Extended-A, Ș ș Ț ț, ¢ £ ¥ § ¶ ± × ÷ −, ½ ¼ ¾, fraction slash, numerators and denominators, spacing marks, and the
frac/numr/dnomfeatures. That is 398 glyphs and 338 code points (0.1: 197 and 184). Tests check text samples in 13 Central European languages. - Kerning: new lowercase pairs, plus figures against punctuation. Figures are tabular, so they do not kern with each other (Fontspector
tabular_kerning). The no-touch test now checks every member of every class in all 16 masters. - Boolean step: the pathops fallbacks are gone. The new step unions, snaps to integers, splits self-touching contours (Œ at wght 800 had its counter joined to the outline by a slit, wound wrong for nonzero) and winds each contour by nesting depth. Each static glyph is then checked against the nonzero fill and checked for leftover overlaps. No glyph needs a fallback.
- Hinting: static TTFs go through ttfautohint 1.8.4 (ttfautohint-py 0.6.1, pinned) with
no_infoand the head dates kept. The build stays byte-identical. - Name: register search for HEDDLE is recorded in
heddle/BRIEF.md. No mark for fonts or software was found; HEDDLE & CO. (textile decor) and STEEL HEDDLE (loom parts) exist. The register sites were not reachable from the build machine, so this used web search and Justia. Not renamed. - Version 0.200,
CHANGELOG.md,RELEASE-NOTES-0.2.md,STATUS.md(open items for 0.3, accepted WARNs). The specimen and download pages now linkreleases/tag/heddle-v0.2.0.
Checks
All run locally on Python 3.14 with the pinned tools. heddle.yml runs only on PRs, so CI runs when this PR opens.
- pytest: 533 passed.
- Byte-identical rebuild, hinting included: yes (
git statusclean after rebuilding the committed tree). fonttools varLib.interpolatable: clean on the designspace, the 16 master UFOs and the variable font.- Fontspector 1.9.0 universal: variable font 0 FAIL / 0 ERROR (4 WARN); 11 statics 0 FAIL / 0 ERROR (47 WARN). Accepted WARNs are listed in
heddle/STATUS.md. New ones aresuspicious_sidebearings(space, ſ) andalt_caron(decomposed statics). - Drift report is current; max shape 8.7 % (was 11.1 %).
- OCR check (display face, so it guards against regressions only;
proofs/heddle/readability.json, Tesseract 5.3.4, 24/32/48 px) gives CER 0.17 / 0.17 / 0 % for Regular / Bold / Black, against 0 / 0.34 / 0 % for 0.1. The gate (at most +1 point) passes. - Sketch comparison: IoU 0.96–0.97 at Regular and Black; at wght 250, wdth 85 it is 0.86 (was 0.73).
- Site: build and static checks pass. No external requests, no console errors and no horizontal scroll at 360 px on all pages, and Heddle loads.
Review
Please look at these:
proofs/heddle/heddle-before-after-accents.pngproofs/heddle/heddle-before-after-counters.pngproofs/heddle/heddle-before-after-drift.pngproofs/heddle/heddle-latin-ext.pngproofs/heddle/heddle-symbols.pngproofs/heddle/heddle-charset.png,heddle-kerning.png,heddle-designspace.png
Things to judge by eye:
- The open counters at Black show as small notches in s and t. They are on purpose, and are listed as a deviation from the sketch.
- The ogonek and the vertical caron (ď ľ ť Ľ).
- The new § (an s with a ring as its spine) and ¶.
- The j hook reaching left at Black.
Not done:
- The site repo's tracking values (machine-made.github.io) were not re-checked. Only figure widths at wdth 85 and kerning changed.
Generated by Claude Code