Skip to content

About

A pixel font for Quikscript that joins and flips like Read himself wrote it.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

4,044 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Abbots Morton Spaceport

A pixel-font pair (mostly) for Quikscript. Available as a sans-serif version or a monospace version.

Want to see what it looks like? Look at its demo website.

You can get a copy of the latest .otf and .woff2 files from the Releases page.

If you’d like this in a non-pixel version, keep your eye on Abbots Morton.

Usage

This font comes in two-and-a-half variants:

  • monospace (Abbots Morton Spaceport Mono) — bundles Departure Mono
  • proportional (Abbots Morton Spaceport Sans)
    • unligated (Abbots Morton Spaceport Sans Junior)
    • ligated (Abbots Morton Spaceport Sans Senior) — but it has bugs in addition to its Known issues below

You’ll definitely need to:

  • set your fonts to multiples of 11 pixels (unless you’re targeting print exclusively)

Font sizing

For pixel-perfect rendering on a screen, you’ll want to limit yourself to font sizes that are multiples of 11 pixels.

On the other hand, if you’re aiming for print (in, say, Word or Typst), you don’t really need to care about pixel alignment if your target is a 600 DPI laser printer.

Loading the fonts

Abbots Morton Spaceport Mono bundles the whole of Departure Mono — Latin, Greek, Cyrillic, eastern-European diacritics, punctuation, symbols, and all of Departure Mono’s OpenType features (small caps, fractions, super- and subscripts, combining-mark positioning, and the rest) — right alongside the Quikscript letters. You don’t need any companion font with it.

Abbots Morton Spaceport Sans is proportional and sticks to Latin, Quikscript, and Shavian. If you want Greek, Cyrillic, or a wider range of diacritics while using Sans, you’ll need to pair it with a fallback font like Abbots Morton Spaceport Mono.

CSS

/* Optional — only worth loading as a fallback if you’re using Abbots Morton Spaceport Sans */
@font-face {
  font-family: 'Departure Mono';
  src: url('…/DepartureMono-Regular.woff2') format('woff2');
}

/* Pick Junior, Senior, or both. You’ll probably want the matching `-Bold.woff2` file, too. */
@font-face {
  font-family: 'Abbots Morton Spaceport Sans Junior';
  src: url('…/AbbotsMortonSpaceportSansJunior-Regular.woff2') format('woff2');
  font-weight: 400;
}

@font-face {
  font-family: 'Abbots Morton Spaceport Sans Junior';
  src: url('…/AbbotsMortonSpaceportSansJunior-Bold.woff2') format('woff2');
  font-weight: 700;
}

@font-face {
  font-family: 'Abbots Morton Spaceport Mono';
  src: url('…/AbbotsMortonSpaceportMono-Regular.woff2') format('woff2');
  font-weight: 400;
}

@font-face {
  font-family: 'Abbots Morton Spaceport Mono';
  src: url('…/AbbotsMortonSpaceportMono-Bold.woff2') format('woff2');
  font-weight: 700;
}

/* you probably know what selector you want already, but we’ll go with :root */
:root {
  /* For Abbots Morton Spaceport Sans, you want it in front, with a fallback behind it */
  font-family: 'Abbots Morton Spaceport Sans Junior', 'Abbots Morton Spaceport Mono', monospace;

  /* Abbots Morton Spaceport Mono stands alone — no fallback needed */
  font-family: 'Abbots Morton Spaceport Mono', monospace;

  /* <https://caniuse.com/?search=font-smooth> isn’t universally supported as of early 2026, but it might be as you read this, so go check */
  -webkit-font-smoothing: none;
  -moz-osx-font-smoothing: unset;
  font-smooth: never;
}
#set text(
    // For Abbots Morton Spaceport Sans Junior, you want it in front
    font: ("Abbots Morton Spaceport Sans Junior", "Abbots Morton Spaceport Mono"),
)

or:

#set text(
    font: "Abbots Morton Spaceport Mono",
)

Microsoft Word

If you’re using Sans and want to set a fallback font in Microsoft Word, you’ll likely need to do something involved and nerdy, like opening up a saved Theme (it’s a .zip file with XML files in it) and editing its long list of language-dependent fallback fonts. Ask an LLM to help you out here. Also ask it to help you convert sizes in pixels to sizes in points.

Weights

Every family ships as a pair of static OTFs — a Regular and a Bold — for six files total:

  • AbbotsMortonSpaceportMono-Regular.otf and -Bold.otf
  • AbbotsMortonSpaceportSansJunior-Regular.otf and -Bold.otf
  • AbbotsMortonSpaceportSansSenior-Regular.otf and -Bold.otf

The Bold variant is a half-pixel rightward overstrike of the Regular — every “on” pixel becomes 1½ pixels wide. This is totally fine if your text is set at 22px (instead of the bare-minimum 11px) or if you can assume that one CSS pixel is actually four device pixels, as is true for Retina-class displays (displays at 200% text zoom).

Variation selectors

In order to properly transcribe The Manual, I needed a way to force the display of alternate ·Utter and ·No. I also needed a way to force the display of a half-·Way. I settled on using variation selectors instead of dedicating extra code points to get this sort of behavior in a vacuum. If you put VS1 (U+FE00) after an ·Utter or ·No, you’ll get the alternate look. If you put VS2 (U+FE01) after ·Way (at least), you’ll get a half-·Way instead.

Stylistic sets

In order to exactly match the contents of The Manual without peppering the HTML with zero-width joiners everywhere, I decided to add a number of OpenType stylistic sets to turn on and off behavior that only happened sometimes. They are:

  • ss02: allow ·I·Tea to join at the Short height
  • ss03: allow ·Tea to be joined to at the x-height as a full-size ·Tea (it stays full — descending to the baseline — when a following letter joins it there; otherwise the half ·Tea)
  • ss04: allow ·It to join at the baseline on both sides at once, whatever the neighbors
  • ss05: allow ·Tea to join at the baseline on both sides at once, whatever the neighbors
  • ss06: use gapped ·Owe (doesn’t connect at the top)
  • ss07: allow ·Owe·Day to join at the x-height again (the default shaping breaks the pair, including when ·Day is the start of a ligature like ·Day+Utter or ·Day+Eat)
  • ss08: write ·Key·Utter·May as The Manual does, ·Key | ·Utter.alt ~b~ ·May (only the rebuilt font has this set; the released font writes ·Key·Utter·May this way without the set). Don’t combine it with ss03, ss04 or ss05: together they can break joins next to any ·Key or ·Utter, not only in ·Key·Utter·May
  • ss10: show the wrapped letter(s) unjoined: no joins and no ligatures (·Day·Utter stays two letters), each letter in its standalone shape — beats interspersing ZWNJs between letters of a word

I make no guarantees that I’m going to keep these stylistic sets the same over multiple releases of this font. If you use these yourself and upgrade your Abbots Morton Spaceport font files ever, you’ll need to read the FONTLOG to see if I’ve rejiggered any of these.

Known issues

Abbots Morton Spaceport Sans Senior uses OpenType’s curs feature. While this is very much the obviously correct OpenType feature to use to join letters to one another as done in Quikscript, support for it in LTRTTB scripts like Latin and Quikscript isn’t universal because so far, curs is only used in RTLTTB scripts like Arabic and the one naturally-occurring TTBLTR script, Mongolian.

In my testing, AMSS Senior works fine in:

  • current evergreen browser engines (WebKit (Safari), Gecko (Firefox), Blink (Chrome, Edge))
  • Typst

It should work fine in:

It does not work in:

  • Microsoft Word 365 (as of February 18, 2026)

Contributing

If you’re going to be running git blame (or just clicking around blame views) in this repo, run this once after cloning:

git config blame.ignoreRevsFile .git-blame-ignore-revs

That tells git blame to skip the revisions listed in .git-blame-ignore-revs so each line’s blame points at whoever last touched it for real instead of at the reformat commit. GitHub’s blame view honors this file automatically.

Also run this once after cloning to install the pre-push hook that keeps unformatted Python out of the repo:

uv run pre-commit install

On every git push, the hook runs black --check on the Python files the pushed commits change. If anything would be reformatted, the push is aborted; run make prettier to fix it, commit the result, and push again.

Licensing

SIL OFL 1.1 for the font files themselves, and MIT for everything else.

Acknowledgements

  • Helena Zhang — Inspiration, more than a few directly-copied glyphs, several lightly-changed glyphs, and a handful of glyphs I just drew myself that amusingly happened to look exactly like DM’s
  • Brad Neil — Design critique
  • Kim Slawson for his bold mockup for Departure Mono
  • anyone who’s ever written about fontmaking in public on the Internet — your discussions have been the wind beneath my LLMs’ wings

About

A pixel font for Quikscript that joins and flips like Read himself wrote it.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages