Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/weft.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ jobs:
if: always()
uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2
with:
name: weft-0.1
name: weft-0.2
path: |
fonts/weft/
proofs/weft/
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,13 @@ Each family keeps its own changelog:

Release tags: `weft-vX.Y.Z`, `sans-vX.Y.Z`, `heddle-vX.Y.Z`, `warp-vX.Y.Z`, `site-vX.Y.Z`.

## 2026-10-28: Weft 0.2

- machine-made Weft 0.2.0 (font version 0.200): look-alikes, Latin
Extended-A, combining marks, box drawing, arrows, hinted static TTF.
See `weft/CHANGELOG.md`. Site: the Weft download links point to
`weft-v0.2.0`.

## 2026-10-27: Warp 0.1

- machine-made Warp 0.1.0 (font version 0.100): machine-made Warp
Expand Down
7 changes: 3 additions & 4 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
| Visibility | public after the 0.1 release (founder approved) |
| Stage | released 0.1: machine-made Weft 0.1.0, machine-made Sans 0.1.0, specimen site 0.1.0, machine-made Heddle 0.1.0. machine-made Warp 0.1 built on branch `warp/v0.1` |
| Gate now | Warp: Jac reviews the PR from `warp/v0.1`; the founder reviews the proofs; then the tags `warp-v0.1.0` and a new `site-v*` |
| Next task | Warp 0.2: the OpenType MATH table; Warp 0.3: the variable font (see `warp/STATUS.md`). Heddle 0.2 (see `heddle/STATUS.md`). Weft: polish (look-alikes l/1, I/1, O/0; heavy accented capitals), width axis, Thread style. Sans 0.2: redraw in the style of Weft and match Weft's x-height (see `sans/STATUS.md`). npm packages for both families. |
| Next task | Warp 0.2: the OpenType MATH table; Warp 0.3: the variable font (see `warp/STATUS.md`). Heddle 0.2 (see `heddle/STATUS.md`). Weft 0.2 is on branch `weft/v0.2` (see `weft/STATUS.md`); then the width axis and the Thread style. Sans 0.2: redraw in the style of Weft and match Weft's x-height (see `sans/STATUS.md`). npm packages for both families. |
| Blocked by | none |
| Last green CI | none yet (first runs are on the release PR). Local end-to-end run of all steps on 2026-10-26: green |
| Owner model | to assign |
Expand Down Expand Up @@ -102,9 +102,8 @@ Family notes: `weft/STATUS.md`, `sans/STATUS.md`,
runners can differ (for example ttfautohint for the Sans static TTF).
If the Sans byte check fails on the runner, the workflow says so; the
fallback is the structural check `sans/scripts/compare_builds.py`.
- **Weft look-alikes.** OCR confuses l and I with 1, and O with 0, more
than in DejaVu Sans Mono (CER 0.12 against 0.075). The gate stops a
regression; it does not prove parity.
- **Weft look-alikes.** Fixed in Weft 0.2 (branch `weft/v0.2`): OCR
CER 0.07 to 0.08 against 0.0875 for DejaVu Sans Mono.
- **Line height with accented capitals.** Both families use an ascender
of 906. Accented capitals go above it (Sans Á at about 1000). Win
metrics cover all ink, so nothing clips, but tight line spacing can
Expand Down
Binary file modified fonts/weft/otf/MachineMadeWeft-Black.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-Bold.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-ExtraBold.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-ExtraLight.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-Light.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-Medium.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-Regular.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-SemiBold.otf
Binary file not shown.
Binary file modified fonts/weft/otf/MachineMadeWeft-Thin.otf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Black.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Bold.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-ExtraBold.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-ExtraLight.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Light.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Medium.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Regular.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-SemiBold.ttf
Binary file not shown.
Binary file modified fonts/weft/ttf/MachineMadeWeft-Thin.ttf
Binary file not shown.
Binary file modified fonts/weft/variable/MachineMadeWeft[FRAG,wght].ttf
Binary file not shown.
Binary file modified fonts/weft/webfonts/MachineMadeWeft-Bold.woff2
Binary file not shown.
Binary file modified fonts/weft/webfonts/MachineMadeWeft-Regular.woff2
Binary file not shown.
Binary file modified fonts/weft/webfonts/MachineMadeWeft[FRAG,wght].woff2
Binary file not shown.
158 changes: 104 additions & 54 deletions proofs/weft/readability.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,78 +8,98 @@
24
],
"upscale": 3,
"lookalike_text": "5mlg8 I8clO 0dcZr 98nrI Ol0Bg l8n|5\n1l|n| mcr5g S29rn 8OI95 c91Sl 99l9S\nn209r 01ZS2 1mS52 B1|m5 d92IO |9B9Z\nIIr82 mcSB8 In555 1I0gB mcBc| lr|SZ\n2ZlrI d25Id 2ZdO0 l9I0r 92|2| Ignl5\nS0I|5 g5ln0 S0nlg 5lIcZ Bm8mS 90g1B\nlgm|8 S5S19 |9ng5 8d|nB BgBSl 9g88d\nI9gl2 O|08r ||9Ol O2ZB0 nlrdr 051dl",
"lookalike_text": "5mlg8 Iq8cl O0dcZ rq98n rIOl0 Bglq8\nn|5q1 l|n|m cr5gS 29rn8 OI95c 91Sl9\nq9l9S n209r 01ZS2 1mS52 B1|m5 qd92I\nOq|9B 9ZIIr 82mcS B8qIn 5551I 0gBmc\nBqc|l r|SZ2 ZlrId 25Id2 ZdO0l 9Iq0r\n92|2| Ignql 5S0I| 5g5ln 0S0nl g5lIc\nZBmq8 mS90g 1Blgm |8S5S 19|9n g58d|\nnBBgB Sl9g8 8dI9g ql2O| 08r|| 9OlO2",
"weft": {
"font": "machine-made Weft (variable, wght 400)",
"paragraph": {
"FRAG 0": {
"cer_by_px": {
"16": 0.0034,
"20": 0.0,
"24": 0.0069
},
"cer_mean": 0.0034
},
"FRAG 8": {
"cer_by_px": {
"16": 0.0,
"20": 0.0,
"24": 0.0034
},
"cer_mean": 0.0023
"cer_mean": 0.0011
},
"FRAG 15": {
"cer_by_px": {
"16": 0.0034,
"20": 0.0,
"24": 0.0
"24": 0.0034
},
"cer_mean": 0.0011
"cer_mean": 0.0023
},
"FRAG 50": {
"cer_by_px": {
"16": 0.0552,
"20": 0.0207,
"24": 0.031
"16": 0.0517,
"20": 0.0138,
"24": 0.0138
},
"cer_mean": 0.0356
"cer_mean": 0.0264
},
"FRAG 100": {
"cer_by_px": {
"16": 0.3621,
"16": 0.3793,
"20": 0.4172,
"24": 0.4552
"24": 0.6241
},
"cer_mean": 0.4115
"cer_mean": 0.4735
}
},
"lookalikes": {
"FRAG 0": {
"cer_by_px": {
"20": 0.1417,
"24": 0.1167,
"32": 0.1125
"20": 0.0833,
"24": 0.0625,
"32": 0.0667
},
"cer": 0.0708,
"confusions": {
"other": 11,
"O->0": 5,
"I->1": 5,
"l->1": 4,
"0->O": 4,
"I->l": 1
}
},
"FRAG 8": {
"cer_by_px": {
"20": 0.0875,
"24": 0.075,
"32": 0.075
},
"cer": 0.1236,
"cer": 0.0792,
"confusions": {
"O->0": 11,
"l->1": 11,
"0->O": 10,
"I->1": 8,
"other": 4,
"l->I": 3,
"5->S": 1,
"|->l": 1
"other": 12,
"l->1": 8,
"O->0": 6,
"I->1": 5,
"0->O": 4,
"I->l": 1
}
},
"FRAG 15": {
"cer_by_px": {
"20": 0.1542,
"24": 0.1292,
"32": 0.1083
"20": 0.0833,
"24": 0.0708,
"32": 0.0792
},
"cer": 0.1306,
"cer": 0.0778,
"confusions": {
"l->1": 16,
"O->0": 12,
"0->O": 11,
"I->1": 10,
"other": 6,
"l->I": 3,
"|->1": 1,
"1->l": 1
"other": 9,
"l->1": 7,
"O->0": 6,
"I->1": 4,
"0->O": 3,
"I->l": 1
}
}
}
Expand All @@ -99,69 +119,99 @@
"lookalikes": {
"static": {
"cer_by_px": {
"20": 0.0833,
"24": 0.0667,
"32": 0.075
"20": 0.0917,
"24": 0.0875,
"32": 0.0833
},
"cer": 0.075,
"cer": 0.0875,
"confusions": {
"0->O": 19,
"O->0": 12,
"l->1": 8,
"I->1": 4,
"O->0": 9,
"l->1": 6,
"q->g": 3,
"I->1": 3,
"1->l": 1,
"I->l": 1,
"other": 1
}
}
}
},
"gate": {
"margin": 0.02,
"lookalike_margin": 0.06,
"lookalike_margin": 0.0,
"frag15_margin": 0.02,
"reference_paragraph_cer": 0.0046,
"reference_lookalike_cer": 0.075,
"reference_lookalike_cer": 0.0875,
"checks": [
{
"frag": 0,
"test": "paragraph",
"cer": 0.0023,
"cer": 0.0034,
"limit": 0.0246,
"pass": true
},
{
"frag": 0,
"test": "lookalikes",
"cer": 0.1236,
"limit": 0.135,
"cer": 0.0708,
"limit": 0.0875,
"pass": true
},
{
"frag": 15,
"frag": 8,
"test": "paragraph",
"cer": 0.0011,
"limit": 0.0246,
"pass": true
},
{
"frag": 15,
"frag": 8,
"test": "lookalikes",
"cer": 0.1306,
"limit": 0.135,
"cer": 0.0792,
"limit": 0.0875,
"pass": true
},
{
"frag": 15,
"test": "paragraph",
"cer": 0.0023,
"limit": 0.0246,
"pass": true
},
{
"frag": 15,
"test": "lookalikes",
"cer": 0.0778,
"limit": 0.0875,
"pass": true
},
{
"frag": 8,
"test": "paragraph vs FRAG 0",
"cer": 0.0011,
"limit": 0.0223,
"limit": 0.0234,
"pass": true
},
{
"frag": 8,
"test": "lookalikes vs FRAG 0",
"cer": 0.0792,
"limit": 0.0908,
"pass": true
},
{
"frag": 15,
"test": "paragraph vs FRAG 0",
"cer": 0.0023,
"limit": 0.0234,
"pass": true
},
{
"frag": 15,
"test": "lookalikes vs FRAG 0",
"cer": 0.1306,
"limit": 0.1436,
"cer": 0.0778,
"limit": 0.0908,
"pass": true
}
],
Expand Down
Binary file added proofs/weft/weft-accents.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added proofs/weft/weft-before-after-black.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added proofs/weft/weft-before-after-lookalikes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified proofs/weft/weft-body-text.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified proofs/weft/weft-charset.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added proofs/weft/weft-code.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added proofs/weft/weft-designspace.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified proofs/weft/weft-frag-waterfall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified proofs/weft/weft-lookalikes.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added proofs/weft/weft-sketch-compare.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified proofs/weft/weft-weight-waterfall.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion site/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
REPO_URL = "https://github.com/machine-made/type"
ORG_URL = "https://github.com/machine-made"
RELEASES = {
"weft": REPO_URL + "/releases/tag/weft-v0.1.0",
"weft": REPO_URL + "/releases/tag/weft-v0.2.0",
"sans": REPO_URL + "/releases/tag/sans-v0.1.0",
"heddle": REPO_URL + "/releases/tag/heddle-v0.1.0",
"warp": REPO_URL + "/releases/tag/warp-v0.1.0",
Expand Down
4 changes: 2 additions & 2 deletions site/pages/download/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ <h1 id="dl-h">Download and install</h1>
<section class="wrap band" id="weft" aria-labelledby="dl-weft-h">
<div class="sec-head">
<p class="eyebrow">Monospace</p>
<h2 id="dl-weft-h" class="weft-title">machine-made Weft 0.1</h2>
<h2 id="dl-weft-h" class="weft-title">machine-made Weft 0.2</h2>
</div>
<p><a class="btn" href="{{WEFT_RELEASE}}">Download Weft 0.1 from GitHub</a></p>
<p><a class="btn" href="{{WEFT_RELEASE}}">Download Weft 0.2 from GitHub</a></p>
<h3>On your computer</h3>
<p>Unzip the release. On macOS, open the TTF files and select Install. On Windows, right-click the files and select Install. On Linux, copy them to <code>~/.local/share/fonts</code> and run <code>fc-cache</code>.</p>
<h3>On the web</h3>
Expand Down
4 changes: 2 additions & 2 deletions site/pages/weft/index.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<!--
title: machine-made Weft: a grid-built variable monospace
description: machine-made Weft 0.1. A monospace built from strokes on a 12-unit grid, with a weight axis and a FRAG axis from clean to broken. Free under the SIL Open Font License.
description: machine-made Weft 0.2. A monospace built from strokes on a 12-unit grid, with a weight axis and a FRAG axis from clean to broken. Free under the SIL Open Font License.
nav: weft
class: page-weft
preload: weft,sans
Expand Down Expand Up @@ -164,6 +164,6 @@ <h3>Agent commits</h3>
</section>

<section class="wrap band cta" aria-labelledby="get-weft-h">
<h2 id="get-weft-h">Get Weft 0.1</h2>
<h2 id="get-weft-h">Get Weft 0.2</h2>
<p><a class="btn" href="{{WEFT_RELEASE}}">Download from GitHub</a> <a class="btn btn-ghost" href="../download/#weft">Install and @font-face</a></p>
</section>
5 changes: 5 additions & 0 deletions weft/BRIEF.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ the axes and the build plan. Source of all shapes: the approved sketch 0.1
> Update for Weft 0.1 (phase 2): the build plan below is done up to
> phase 4. The width axis and the Thread style are not in 0.1. See
> `STATUS.md`, `CHANGELOG.md` and `RELEASE-NOTES-0.1.md`.
>
> Update for Weft 0.2: l, I, 1, 0 and q changed for code look-alikes,
> and the set grew to Latin Extended-A, combining marks, box drawing
> and arrows. See `STATUS.md` (deviations from the sketch) and
> `RELEASE-NOTES-0.2.md`.

## Name check: "Weft"

Expand Down
Loading