Skip to content

Weft 0.2: code look-alikes, Latin Extended-A, combining marks, box drawing, hinting - #7

Open
ricardofrantz wants to merge 1 commit into
mainfrom
weft/v0.2
Open

ricardofrantz wants to merge 1 commit into
mainfrom
weft/v0.2

Conversation

@ricardofrantz

@ricardofrantz ricardofrantz commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

Summary

machine-made Weft 0.2 (font version 0.200). Only the loom, tools and docs changed by hand. The fonts are rebuilt from them.

  • Look-alikes for code. l (stem at x 3, longer tail), I (6-unit serifs), 1 (longer flag, wider base), 0 (longer slash), q (spur at the foot). The dotted zero is ss01. The slashed zero stays the default: it gave fewer 0→O confusions than the dotted one, and both read the same overall.
  • wght 900. Accents above the base scale to 1.25 at Black, and the gap to the base grows with weight (0.95 units at Black). « » are two ‹ › components, and " “ ” „ two single quotes. They move apart at heavy weights. Offsets are piecewise linear between the master widths, so the variable font and the statics agree.
  • Glyphs. All of Latin Extended-A, Ș ș Ț ț, ẞ, Ǿ ǿ, Ǎ ǎ Ǔ ǔ Ẽ ẽ. New marks: caron, vertical caron (ď ľ ť Ľ), breve, dot above, double acute, ogonek, comma below. 14 combining marks (U+0300 to U+0328) with no advance, a mark feature, GDEF, and ccmp for i/j. ‹ › ‚ „ − and the spacing accents. £ ¥ § ¶ ± × ÷ ¢ ½ ¼ ¾ were in 0.1 already.
  • Code. Box drawing ─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼ with a new "butt" stroke kind (no caps): the lines end on the cell edges and join across cells and lines. Arrows ← → ↑ ↓. Every glyph keeps the 750 advance.
  • Hinting. The static TTFs are hinted with ttfautohint (ttfautohint-py 0.6.1, pinned). The build stays byte-identical.
  • Drift lock rebuilt with tools/relock.py (now aware of the scaled accents).
  • Docs and site. CHANGELOG, RELEASE-NOTES-0.2.md, STATUS.md (deviations from the sketch, accepted WARNs). Site download links point to releases/tag/weft-v0.2.0.

Checks

All run locally on this branch (weft.yml triggers only on pull requests and main, so there was no branch run).

  • pytest: 1749 passed.

  • Rebuild: byte-identical (hinted TTFs included); a fresh build leaves fonts/weft unchanged.

  • fonttools varLib.interpolatable: clean on the designspace, the 12 masters and the variable font.

  • Fontspector 1.9.0 universal: 0 FAIL, 0 ERROR. VF 4 WARN, static TTF 31 WARN, static OTF 22 WARN, all in the accepted list in weft/STATUS.md.

  • OCR gate (Tesseract 5.3.4), look-alike CER (DejaVu Sans Mono 0.0875):

    FRAG 0 FRAG 8 FRAG 15
    Weft 0.1 0.121 0.128 0.122
    Weft 0.2 0.071 0.079 0.078

    Paragraph CER 0.0034 / 0.0011 / 0.0023 (DejaVu 0.0046). The gate now covers FRAG 8, q is in the look-alike set, and the look-alike margin is 0 (was 0.06).

  • shaperglot 1.2.2 (not in CI): all mandatory checks pass for the Central European, Baltic, Turkish and Romanian languages. Only the small-caps checks are skipped.

  • Site: site/build.py passes, the static checks pass, no external requests, no horizontal scroll at 360 px.

Review

Proofs to look at in proofs/weft/:

  • weft-before-after-lookalikes.png, weft-before-after-black.png
  • weft-lookalikes.png, weft-accents.png, weft-code.png
  • weft-charset.png, weft-designspace.png, weft-sketch-compare.png (coverage IoU 0.940)
  • weft-weight-waterfall.png, weft-frag-waterfall.png, weft-body-text.png

Changed metrics: win ascent/descent go to 1250/403 (were 1167/339). The cause is the bigger accents at Black with FRAG 100 drift, and the comma below. The advance, typo/hhea (906/−281/0), x-height, cap height and axes do not change, so the tracking on machine-made.github.io stays valid. Its fonts.py would cut a 24.6 KB subset (was 23.7 KB).

Open: ½ ¼ ¾ still merge from Regular up, # merges at Black, and there are no small caps.


Generated by Claude Code

View guided diff

- l, I, 1, 0, q redrawn for code look-alikes; dotted zero in ss01.
  OCR look-alike CER 0.071/0.079/0.078 at FRAG 0/8/15 (DejaVu Sans
  Mono 0.0875; Weft 0.1 0.121/0.128/0.122). Gate margin 0, FRAG 8 gated.
- Heavy weights: accents scale and move away from the base with
  weight; guillemets and double quotes are components that move apart.
- Latin Extended-A, S/T comma below, combining marks with a mark
  feature and GDEF, spacing accents, single guillemets, low quotes,
  minus, box drawing (butt strokes on the cell edges), arrows.
- Static TTFs hinted with ttfautohint (ttfautohint-py 0.6.1), still
  byte-identical on rebuild.
- Drift lock rebuilt; fonts rebuilt; proofs re-rendered with new
  accents, code, designspace, sketch and before/after sheets.
- Version 0.200; changelog, release notes, status; site links to
  weft-v0.2.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHtj1XPp34FFs8LVpY1PRF

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants