Monaspace: a five-family monospaced superfamily with texture healing
An innovative superfamily of fonts for code
At a glance
- What is it?
- Monaspace is a monospaced type superfamily of five metrics-compatible variable families, shipped as static, variable, Nerd Font and frozen builds. It is for developers who treat their editor font as a real choice, and who accept that some features depend on editor support.
- Who is it for?
- Adopt Monaspace if you want five metrics-compatible families you can mix in one editor, and if you are willing to check that your editor exposes the calt, liga and cvNN OpenType features. Do not adopt it as a drop-in for a terminal that cannot enable calt, because texture healing is off by default there, and do not install the frozen family unless your editor cannot configure stylistic sets.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Activity is slowing. The repository last received commits 6 months ago.
- What is it written in?
- Mainly Shell, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem Monaspace targets: one grid, five voices
Code is set on a fixed grid, so every character occupies the same advance width. That constraint is what makes alignment work, and it is also what makes a monospaced font feel flat: a thin letter such as i and a wide one such as m must share the same cell, so one of them ends up looking cramped or empty. Monaspace is a superfamily of five monospaced typefaces built to that same grid. Each family has what the README calls a distinct voice, and all five are metrics-compatible with one another, which means you can set a comment in one family and code in another without the columns falling apart. The five are Neon, Argon, Xenon, Radon and Krypton, and the repository ships them together rather than as separate downloads. The audience is narrow and specific: people who spend the day inside an editor and care about the shape of the text in it, plus anyone building a theme or a typographic palette who wants families that can be swapped without re-measuring.
How the packaging works: static, variable, Nerd Font and frozen
The README describes five interchangeable families, each packaged into three distinct formats, and it says you can install all of them side by side because the family names are distinct by family and format. The naming scheme carries the format: `Monaspace _____` is the static family, `Monaspace _____ Var` or `VF` is the variable family, `Monaspace _____ NF` is a static family patched with Nerd Fonts, and `Monaspace _____ Frozen` is a frozen TTF family. The variable fonts are one file per family. The static fonts are one file per cut per family, and the README is explicit that a complete static installation runs to hundreds of font files, because the axes have named stops such as light and bold for weight, italic for italics, and semiwide or wide for width. That is the central trade-off in the packaging: variable is compact and modern, static is what you fall back to when variable fonts are not supported. The frozen builds exist for a different reason. They enable all the stylistic sets by default, and the README says they are intended for environments where you cannot configure stylistic sets or character variants, naming XCode and IntelliJ IDEs as examples.
Texture healing and the calt feature
Texture healing is the technique the README says Monaspace pioneered for monospaced fonts. The mechanism is an OpenType feature: it is enabled when the `calt` font feature setting is turned on in your editor. When it is active, the font can adjust glyphs so that narrow and wide characters sit better in their cells, which is the problem described above. The README is direct about the limit: the location of that setting varies across applications, and not all applications support it. This is the single most important thing to understand before adopting Monaspace. The font can carry the feature, but the application has to ask for it, so the same font file looks different in two editors. The repository points to a separate document, docs/Texture Healing.md, for the implementation, and to the project website for a longer explanation. If your editor does not expose `calt`, texture healing is simply not part of what you get.
Coding ligatures and the ten stylistic sets
Monaspace ships coding ligatures in ten groups, separated into stylistic sets that the README says you may be able to enable or disable selectively. The groups cover equals-related glyphs such as `!=` and `===` in `ss01`, greater/less or equal in `ss02`, arrows such as `->` and `~>` in `ss03`, markup such as `</` and `/>` in `ss04`, F# related ligatures such as `|>` in `ss05`, repeated `#`, `+`, `_`, `=` and `&` in `ss06`, colons such as `::` and `=:=` in `ss07`, period combinations such as `..=` and `.-` in `ss08`, greater/less with equals such as `<=>`, `>>` and `=<<` in `ss09`, and tags such as `#[` and `#(` in `ss10`. There is also a separate `liga` feature that handles repeating characters like `///` or `||`, and the README says it is designed to avoid activating inside longer sequences like `////`. The warning at the top of that section matters more than the list: the README states that ligature handling has changed significantly in Monaspace point releases and tells upgraders to check the release notes for v1.1, v1.101, v1.2, v1.3 and v1.4 to learn what changes their editor configuration might need. Treat ligature configuration as something that can break on upgrade.
Installing Monaspace and setting it up in an editor
The README points to the latest release page as the download source, and the repository keeps the built fonts in the fonts/ directory with sources in sources/. Download the release archive and install the font files through your operating system's font installer, then select the family in your editor. The family name you pick determines what you get: the plain name is static, `Var` or `VF` is variable, `NF` is the Nerd Font patch, and `Frozen` has the stylistic sets already on. For VS Code, the font is set in settings.json; the README does not print this snippet, so the keys below are the editor's own, and the family string must match the installed family name exactly. Check the editor's font settings after restarting, because a name mismatch silently falls back to the default font.
{
"editor.fontFamily": "Monaspace Neon",
"editor.fontLigatures": "'calt' 1, 'liga' 1, 'ss01' 1, 'ss02' 1, 'ss03' 1"
}The `editor.fontLigatures` string is where texture healing and the stylistic sets are switched on. The README says texture healing needs `calt`, and the ligature groups are the `ssNN` features listed above. Not every editor accepts this string; the README says the location of the setting varies across applications and that not all applications support it. If your editor cannot take it, the frozen family is the documented workaround, because it enables the typographical features by default. After changing the setting, confirm the effect on a line that contains `->` or `!=`, where a ligature or a spacing change is visible.
Character variants, Nerd Fonts and where Monaspace is the wrong tool
Beyond ligatures, Monaspace exposes character variants through `cvNN` OpenType features. Figure variants cover `cv01` for the `0` with plain, slash, reverse slash and cut-out slash alternates, and `cv02` for a `1` without a serif. Letter variants include `cv10` for `l` and `i` alternates in Neon, Argon, Xenon and Radon, `cv11` for `j`, `f`, `r` and `t` in Neon and Argon, and Cyrillic alternates in `cv12` and `cv13`. Symbol variants include `cv30` for an asterisk aligned closer to the top of the space, `cv31` for a six-pointed asterisk, and `cv32` for an angled lower line on `≥` and `≤`. Optional ligatures sit in `cv60` to `cv62`, and the README flags one of them as a trap: `cv61` enables a closed square ligature for `[]`, which it says can be distracting when authoring arrays, because editors insert the closing bracket automatically and the ligature appears as soon as you type the open bracket. The Nerd Font builds have their own caveat. The README states that Monaspace makes a best-effort attempt to align the icons optically, and that some Nerd Fonts glyphs may not render correctly in every environment. The wrong-tool cases follow from that. If your editor or terminal cannot enable `calt`, you lose texture healing. If you need every Nerd Font icon to be pixel-consistent across a terminal and an editor, the README does not promise that.
How Monaspace differs from JetBrains Mono
JetBrains Mono is the common comparison, and the difference is structural rather than stylistic. JetBrains Mono is a single monospaced family; Monaspace is five families that share metrics, so the choice is not only which font but which combination. Monaspace also ships four packaging formats from one repository, including a variable build and a frozen build, which is a wider set of artifacts than a single-family release. The other difference is texture healing, which the README describes as a technique Monaspace pioneered for monospaced fonts. That is not a cosmetic extra: it changes how narrow and wide glyphs occupy their cells, and it only works where the `calt` feature can be turned on. If you want one font file and no per-editor feature configuration, a single-family font is the simpler choice. If you want to mix voices inside one file or move between editors, Monaspace is built for that, at the cost of reading the feature list first.
Licence, releases and what an upgrade costs
Monaspace is released under the OFL-1.1 licence, and the repository carries LICENSE, AUTHORS.txt and CONTRIBUTORS.txt at the top level. The OFL is the standard licence for open fonts; it permits use and redistribution, and it has conditions attached, but the repository does not restate them, so read the LICENSE file if your use is not a plain install. On maintenance, the last push was on 2026-03-27, and the most recent release is v1.400 from 2026-03-28, following v1.301 in September 2025 and v1.300 in August 2025. The upgrade cost is not the download; it is the editor configuration. The README warns that ligature handling changed significantly in point releases and lists the release notes for v1.1, v1.101, v1.2, v1.3 and v1.4 as the place to learn what configuration changes an upgrade requires. If you have pinned specific `ssNN` or `cvNN` features, read the v1.400 notes before replacing the files, and keep the previous release archive so you can revert the fonts without hunting for the older build. The repository does not document a rollback procedure.
Editorial conclusion
Adopt Monaspace if you want five metrics-compatible families you can mix in one editor, and if you are willing to check that your editor exposes the calt, liga and cvNN OpenType features. Do not adopt it as a drop-in for a terminal that cannot enable calt, because texture healing is off by default there, and do not install the frozen family unless your editor cannot configure stylistic sets. Before installing, open the release notes for v1.300 and v1.400 and read the ligature section, because the README warns that ligature handling has changed in point releases and your editor configuration may need to change with it.
Frequently asked questions
Is Monaspace a Nerd Font?
Part of it is. As of Monaspace 1.2, the static font builds, both desktop and web, are offered in versions patched with Nerd Fonts, and those carry the NF suffix in the family name. The README notes that some Nerd Fonts glyphs may not render correctly in every environment.
How do I install Monaspace in VS Code?
Download the latest release, install the font files through your operating system, then set editor.fontFamily to the exact installed family name in settings.json. Texture healing and the ligature sets go in editor.fontLigatures, using 'calt' for texture healing and the ssNN features for the ligature groups.
How do I install the Monaspace font?
The README points to the latest release page for downloads and the repository keeps built fonts in the fonts/ directory. You can install the static, variable, Nerd Font and frozen families side by side, because the family names are distinct by family and format.
What is the difference between Monaspace Argon and Neon?
They are two of the five families in the superfamily, each with a distinct voice, and they are metrics-compatible so you can mix them without breaking alignment. The README does not otherwise describe how the two differ in letterform, so the project website is the place to compare them.
How do I add Monaspace to VS Code?
Install the font files first, then set editor.fontFamily in settings.json to the exact installed family name, such as Monaspace Neon or Monaspace Neon NF. Ligatures and texture healing are enabled separately through editor.fontLigatures.
What are the Monaspace VS Code settings for ligatures?
The README gives the feature names rather than an editor snippet: texture healing needs 'calt', repeating-character spacing uses 'liga', and the ten ligature groups are 'ss01' through 'ss10'. Those go in the editor's font ligature setting, which the README says varies by application and is not supported everywhere.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/githubnext-monaspace)
Community notes