Skip to content
machine-madePublic

About

machine-made Weft and machine-made Sans: typefaces made by code.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

45 Commits

Folders and files

Repository files navigation

machine-made type

Four typefaces made by code, free under the SIL Open Font License.

  • machine-made Weft: a grid-built monospace. Variable font with a weight axis (wght 100 to 900) and a fragmentation axis (FRAG 0 to 100, from clean text to broken marks). Every shape comes from a table of centre-line strokes.
  • machine-made Sans: a reading sans with the same line metrics as Weft. Upright and italic, variable weight (wght 200 to 800). machine-made Sans is based on Plus Jakarta Sans by Gumpita Rahayu, Tokotype.
  • machine-made Heddle: a Swiss display grotesk for posters, headlines and big figures. Variable font with a weight axis (wght 100 to 900) and a width axis (wdth 70 to 140, Compressed to Extended). Every letter is built from four parts (rect, superellipse ring, parallelogram, V) and level cuts.
  • machine-made Warp: a Modern serif for science, drawn by a pen model: a level nib sweeps a few centre-lines per letter. Regular, Italic, Bold and Bold Italic for text, and machine-made Warp Display (Regular, Italic) for titles. Full basic Greek, maths symbols, small capitals, old-style and lining figures.

Specimen site: https://machine-made.github.io/type/

Download

Family Release Contents
machine-made Weft 0.1 weft-v0.1.0 Variable TTF, 9 static TTF and OTF, WOFF2, readability report
machine-made Sans 0.1 sans-v0.1.0 2 variable TTF, 14 static TTF and OTF, WOFF2
machine-made Heddle 0.1 heddle-v0.1.0 Variable TTF, 11 static TTF, WOFF2
machine-made Warp 0.1 warp-v0.1.0 6 static TTF and OTF (text and Display), WOFF2, readability report

The same files are in this repository in fonts/weft/, fonts/sans/, fonts/heddle/ and fonts/warp/. Each release has build provenance attestations: check a file with gh attestation verify FILE --repo machine-made/type.

machine-made Weft

Weft FRAG waterfall

FRAG 0 to 15 is for body text. FRAG 16 to 50 is for headings. Above 50, pieces drift and drop out: titles and marks only. An OCR gate in CI checks that FRAG 0 and 15 read as well as DejaVu Sans Mono (proofs/weft/readability.json). Details: weft/RELEASE-NOTES-0.1.md.

machine-made Sans

Sans stylistic sets

Straight (Lurus) forms of a, j, p, q, r, y are the defaults. Stylistic set ss02 gives the sharp (Lancip) forms, ss01 the original Plus Jakarta Sans forms, ss03 the swirl (Lingkar) forms. Details: sans/README.md and sans/RELEASE-NOTES-0.1.md.

machine-made Heddle

Heddle width ladder

Width changes the counters, not the stems. The 70 characters of the approved sketch match the sketch engine at every corner of the designspace (proofs/heddle/heddle-sketch-vs-font-charset.png). Details: heddle/RELEASE-NOTES-0.1.md.

machine-made Warp

Warp equations

Every letter is a few centre-lines with a pressure per node, swept by one level nib; the vertical stress, hairlines, serifs and teardrops come out of the pen. The font matches the approved sketch engine (proofs/warp/warp-sketch-vs-font-regular.png), every glyph matches its pen sweep (proofs/warp/fidelity.json), and an OCR gate compares it with DejaVu Serif (proofs/warp/readability.json). Statics in 0.1; the MATH table is planned for 0.2 and the variable font for 0.3. Details: warp/RELEASE-NOTES-0.1.md.

How to build

Needs Python 3.14 and, for the checks, the Fontspector 1.9.0 binary. All builds are byte-reproducible: a build on the committed sources gives the committed fonts.

Weft (from weft/):

cd weft
python -m pip install -e ".[test]"
python -m pytest -q             # generator tests
scripts/build.sh                # fonts/weft/{variable,ttf,otf,webfonts}
scripts/check.sh fontspector    # Fontspector, universal profile
python tools/readability.py --gate   # OCR gate (needs tesseract-ocr, fonts-dejavu-core)
python tools/proof.py           # proofs/weft/

Sans (from the repository root):

python -m pip install -r sans/requirements.txt
sans/scripts/build.sh                    # fonts/sans/{variable,ttf,otf,webfonts}
sans/scripts/check.sh fontspector        # Fontspector and varLib.interpolatable
git clone https://github.com/tokotype/PlusJakartaSans /tmp/pjs
git -C /tmp/pjs checkout 18d1cd2f7ea10481919d2f05c1f7064b7307fc26
SANS_UPSTREAM=/tmp/pjs python -m pytest -q sans/tests
python sans/scripts/proof.py --upstream /tmp/pjs/fonts --weft fonts/weft/ttf/MachineMadeWeft-Regular.ttf

Heddle (from heddle/):

cd heddle
python -m pip install -e ".[test]"
python -m pytest -q             # generator tests (one needs node)
scripts/build.sh                # fonts/heddle/{variable,ttf,webfonts}
scripts/check.sh fontspector    # Fontspector, universal profile
python tools/proof.py           # proofs/heddle/
python tools/drift.py           # proofs/heddle/drift.json
python tools/sketch_compare.py  # sketch engine vs font (needs Playwright and Chromium)

Warp (from warp/):

cd warp
python -m pip install -e ".[test]"
python -m pytest -q             # generator tests (some need node)
scripts/build.sh                # fonts/warp/{ttf,otf,webfonts}
scripts/check.sh fontspector    # Fontspector, universal profile
python tools/fidelity.py --gate     # outlines against the pen sweep
python tools/readability.py --gate  # OCR gate (needs tesseract-ocr, fonts-dejavu-core)
python tools/proof.py           # proofs/warp/ (needs node)

Site (from the repository root):

python -m pip install -r site/requirements.txt
python site/build.py            # site/_site/

Repository layout

Path Content
weft/ Weft generator (loom/), tools, tests, brief, notes, OFL.txt
sans/ Sans sources (fork of Plus Jakarta Sans), scripts, tests, upstream credits, notes, OFL.txt
heddle/ Heddle generator (loom/), tools, tests, sketch reference, brief, notes, OFL.txt
warp/ Warp generator (loom/), tools, tests, sketch reference, brief, notes, OFL.txt
site/ Specimen site generator, pages and assets
fonts/weft/, fonts/sans/, fonts/heddle/, fonts/warp/ Committed build outputs: variable/, ttf/, otf/ (Weft, Sans, Warp), webfonts/
proofs/weft/, proofs/sans/, proofs/heddle/, proofs/warp/ Proof sheets, the Weft and Warp readability reports, the Heddle and Warp sketch comparisons, the Heddle drift report, the Warp fidelity report
.github/workflows/ weft.yml, sans.yml, heddle.yml, warp.yml (checks), site.yml (Pages deploy), release.yml (releases on tags)

Licence

  • Fonts: SIL Open Font License 1.1 with the Reserved Font Name "machine-made". Weft: weft/OFL.txt. Sans: sans/OFL.txt, which also keeps the Plus Jakarta Sans copyright line. Heddle: heddle/OFL.txt. Warp: warp/OFL.txt.
  • Code (generators, scripts, tests, CI, site): Apache-2.0, see LICENSE.

LICENSING.md lists which licence covers which path.

machine-made Sans is based on Plus Jakarta Sans by Gumpita Rahayu, Tokotype (https://github.com/tokotype/PlusJakartaSans).

Made by agents

AI agents wrote the generators, the fonts, the tests, the CI and the site. Jac, the director agent of machine-made, plans the work. People set the goals and review the proofs. See STATUS.md.

About

machine-made Weft and machine-made Sans: typefaces made by code.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages