# The bases this pipeline may cut a face from, and the slots it cuts. # # A base is pinned by upstream version and by the sha256 of the archive upstream # publishes. A moved upstream is then a checksum failure rather than a silent # redraw, which is the whole point of pinning: the same checkout produces the # same face, and a base that changed under us says so. # # Adding a base is a licence read first. Most OFL faces declare a Reserved Font # Name, and clause 3 bars it as a prefix and as a suffix alike. The `quasi-*` # naming clears that by construction, so the only live gate is "did anyone reach # for the base's own name". A base that is not OFL at all needs its own read. # # A base arrives one of two ways and the pin says which. A release archive gets # `url` + `sha256` here and a `path` per face; a project that publishes no # releases gets no archive and a `url` per face instead. The second shape exists # because the alternative is a generated source tarball, and GitHub builds those # on demand: the bytes have changed before under repositories nobody touched, # which would read here as "upstream moved" and mean nothing of the sort. # Atkinson Hyperlegible Mono, the mono slot's base since 2026-08-17. # # It replaced IBM Plex Mono, which was this file's first base and is gone rather # than kept beside it: an unnamed base is a second answer to "what is Quasi Mono # cut from", and the pin file is the place that question is settled. The Plex # entry is in the history if a comparison is ever wanted (`quasi-type@3d080a6`). # What the swap cost is recorded in wiki `typography-standard`: Plex shipped box # drawing, block elements and the four arrows complete, Atkinson ships none of # them, so the house set carries all 167 rather than the original seven. # # Variable, `wght` 200-800, one file. Everything about it that is new is in # `src/vary.rs`; the short version is that a cut keeps the axis, so the marks # carry `gvar` deltas drawn at each end of it. # # WATCH THE DEFAULT INSTANCE. This face defaults to `wght` 200 and its own name # table reads `Atkinson Hyperlegible Mono ExtraLight`. Keeping the axis means # keeping that default, so the face below is pinned as `ExtraLight` and the build # refuses any other style name. A consumer therefore has to ask for the weight it # wants — `font-weight: 200 800` in the `@font-face` and the browser resolves # `normal` to 400 — rather than loading the file and getting whatever it opens at. # # The licence read: OFL 1.1, and **no Reserved Font Name is declared**. The only # RFN text in the file is the boilerplate definition, so clause 3 does not bite # here at all. `Quasi Mono` clears it either way, on its own grounds. [[base]] id = "atkinson-mono" family = "Atkinson Hyperlegible Mono" version = "2.001" license = "OFL-1.1" license_url = "https://raw.githubusercontent.com/googlefonts/atkinson-hyperlegible-next-mono/154d50362016cc3e873eb21d242cd0772384c8f9/OFL.txt" license_sha256 = "1ebb31cf7393164f20d10c1d48406cddb5314feff8465531cf1e4ba37e9dd740" copyright = "Copyright 2020-2024 The Atkinson Hyperlegible Mono Project Authors (https://github.com/googlefonts/atkinson-hyperlegible-next-mono)" designer = "Applied Design Works, Letters from Sweden" vendor_url = "https://www.brailleinstitute.org/" # The project publishes no releases and no tags, so the pin is a file at a # commit: 154d503, the head of `main` on 2026-08-16. [[base.face]] style = "ExtraLight" url = "https://raw.githubusercontent.com/googlefonts/atkinson-hyperlegible-next-mono/154d50362016cc3e873eb21d242cd0772384c8f9/fonts/variable/AtkinsonHyperlegibleMono%5Bwght%5D.ttf" sha256 = "5ce8b1698d1ded7dff2178c1a3ad159470085a58ea239e8b2cb88f4fb4a6f646" variable = true # Atkinson Hyperlegible Next, the body slot's base. Same designers, same axis, # same licence and no Reserved Font Name; the sans half of the superfamily the # typography standard is built on. # # It is PROPORTIONAL, which is the one thing this pipeline had never cut from. # Every mark took the cell, which is true of a monospace face and meaningless # here, so `advance` is what the slot has to answer; see the `quasi-body` slot # below for what it answers and why. # # Its default instance is `Regular` at `wght` 400, unlike the mono's ExtraLight, # so the ExtraLight trap does not arise on this face. [[base]] id = "atkinson-next" family = "Atkinson Hyperlegible Next" version = "2.001" license = "OFL-1.1" license_url = "https://raw.githubusercontent.com/googlefonts/atkinson-hyperlegible-next/7925f50f649b3813257faf2f4c0b381011f434f1/OFL.txt" license_sha256 = "aca6a428580965d2297d1b718042dd427c2a9443ece3b0d02d758e161e0c4030" copyright = "Copyright 2020-2024 The Atkinson Hyperlegible Next Project Authors (https://github.com/googlefonts/atkinson-hyperlegible-next)" designer = "Applied Design Works, Letters from Sweden" vendor_url = "https://www.brailleinstitute.org/" # No releases and no tags here either, so the pin is a file at a commit: # 7925f50, the head of `main` on 2026-08-17. [[base.face]] style = "Regular" url = "https://raw.githubusercontent.com/googlefonts/atkinson-hyperlegible-next/7925f50f649b3813257faf2f4c0b381011f434f1/fonts/variable/AtkinsonHyperlegibleNext%5Bwght%5D.ttf" sha256 = "5a455d1cfa099b601ab70751bb9673e8fe1854dc4500c80e1a220d0d75e31745" variable = true # Italic is not cut, for the same reason it is not cut from the mono and with a # different amount of doubt. The suite ships a matching italic here # (`AtkinsonHyperlegibleNext-Italic[wght].ttf`, sha256 # ce9cffed32742ad2d9238c561a93220385e5934cdc02b8eb4097a50efa957dc6 at the same # commit) and body text is where an italic actually gets used — but a consumer # reaches for italic on *letters*, and letters are the base's own and unmodified. # A house mark in an italic run is the upright mark, which is what every text # face does with `▲` anyway. So the italic stays stock upstream under upstream's # name until something wants a mark slanted, and that is a face away, not a # redesign. # A slot is a house type role. The name tracks the slot and not the base, which # is what let the base move from Plex Mono to Atkinson on 2026-08-17 without a # consumer changing a family name: the output is `Quasi Mono` either way and the # base is named in the metadata, where the licence requires it anyway. [[slot]] id = "quasi-mono" family = "Quasi Mono" base = "atkinson-mono" # Every glyph in the house set. A slot may take a subset; none does today. glyphs = "*" # `quasi-body`, cut for the first time 2026-08-17. It was stock IBM Plex Sans # with no entry here, on the rule that a slot runs the upstream face under the # upstream's own name until it needs the house set. Taking Atkinson for both # slots satisfies that condition from the other side: the body slot needs the # same marks the mono slot does, for the same reason, so it becomes a real cut. # # `marks` rather than `*`, and this is the first slot to take a subset. Box # drawing and block elements are sized against the cell and have to be # cell-exact to tile; a proportional face has no cell, and nothing set in one # tiles, so a `┌` here would be a corner that joins nothing. The marks are the # half that carries meaning rather than geometry, and meaning is the same in # body text as in a terminal — which is the whole argument for a house set. [[slot]] id = "quasi-body" family = "Quasi Body" base = "atkinson-next" glyphs = "marks"