An open API service indexing awesome lists of open source software.

https://github.com/jlevy/planetaire


https://github.com/jlevy/planetaire

Last synced: 20 days ago
JSON representation

Awesome Lists containing this project

README

          


Planetaire Mono — visit the website

Planetaire Mono is a beautiful, highly legible monospace font for terminals, editors,
and agentic work.

[B612](https://github.com/polarsys/b612) is the typeface Airbus developed and validated
in legibility studies for cockpit displays.
Planetaire Mono adapts B612 Mono for modern use by adding weights, punctuation and
symbols from [Hack](https://github.com/source-foundry/Hack), and optional icons from
[Nerd Fonts](https://github.com/ryanoasis/nerd-fonts).
The result is highly usable and [licensed freely](#license) for personal, commercial,
and open source use.

**[View Planetaire →](https://ojoshe.com/planetaire/)**

**[Compare Monospace Fonts →](https://ojoshe.com/planetaire/compare.html)**

**[Read the Type Specimen (PDF) →](https://cdn.jsdelivr.net/gh/jlevy/planetaire@v0.1.5/docs/specimen/planetaire-mono-specimen.pdf)**

**[Download the Fonts (TTF, WOFF2) →](https://github.com/jlevy/planetaire/releases/latest)**


Alan Turing's “Can machines think?”
<br />passage set in Planetaire Mono on a dark background

The same Alan Turing passage on a light background

## About B612

B612 began not as a typeface but as an aviation research program.
In 2010, Airbus, [ENAC](https://www.enac.fr/en) (the French civil aviation university),
and the Université de Toulouse III set out to define and validate an “aeronautical font”
for cockpit screens: text a pilot can read correctly while fatigued, at oblique angles,
or under vibration, glare, or near-darkness.

The shapes were derived experimentally before they were drawn.
Jean-Luc Vinot (ENAC) and Sylvie Athènes (Toulouse III) built confusion matrices of
which characters readers mistake for others
(“[Legible, are you sure?](https://dl.acm.org/doi/10.1145/2207676.2208387)” at CHI
2012). In their controlled study, the prototype that became B612 drew slightly more
correct reads than Verdana and clearly outperformed the legacy avionics font.
Airbus then commissioned the Montpellier interface studio
[Intactile Design](https://intactile.com/) (Nicolas Chauveau, Thomas Paillot, and
Jonathan Favre-Lamarine) to draw the full family of eight variants.

B612 is named for the asteroid home of the
[Little Prince](https://en.wikipedia.org/wiki/The_Little_Prince) by Antoine de
Saint-Exupéry, who was
[himself an aviator](https://en.wikipedia.org/wiki/Wind,_Sand_and_Stars).

B612’s unusual character is a humanist answer to an instrument-panel problem.
Where earlier cockpit fonts went monolinear and rigid, B612 keeps stroke contrast, opens
counters, and lengthens ascenders and descenders.
Each word’s silhouette resolves quickly.
At stroke junctions it carries small notches (light traps) that keep joins from filling
in on bright, low-contrast displays.
In 2017, B612 was released as open source through the Eclipse
[Polarsys](https://github.com/polarsys/b612) project.

## About Planetaire Mono

B612 as it circulates today, including the version
[on Google Fonts](https://fonts.google.com/specimen/B612+Mono), has oddities and uneven
symbols that make it awkward in modern applications and terminals.
Planetaire Mono fixes this by merging B612’s letters and digits into Hack Nerd Font’s
base:

- **B612 letterforms** for letters, digits, and extended Latin, Greek, and Cyrillic.
- **Hack punctuation and symbols** for `{}[]()<>` and the rest.
- **Ten variants across five weights** (400/500/600/700/800), including added **SemiBold
(600)** and **ExtraBold (800)** weights, the latter especially useful as boldface in
the terminal.
- **Over 10,000 Nerd Font icons** (Powerline, Font Awesome, Devicons) in the Extended
package, part of 12,000+ total glyphs.
- **A dotted zero:** B612’s zero with a center dot for clear `0` vs `O`, in circle
(default) and rectangle (`ss01`) variants.

Hack has its own lineage: Bitstream Vera Mono (2003) became DejaVu Mono, which Chris
Simpkins reworked in 2015 into a face tuned for source code at small sizes.
Its signature is functional punctuation: brackets, braces, parentheses, and operators
are drawn at a heavier weight and given extra spacing next to letters, so they stay
distinct in dense code.
B612’s own punctuation lacks that weight.

The new name distinguishes the fonts and is required by the B612 [license](#license),
which reserves the B612 name.

## A Personal Note

Like architecture, typography is a functional art form.
A design may initially appear attractive, but you can’t know its true qualities until
you live close to it.
Or work within it.

A couple of years ago, I was building a terminal and surveyed monospace fonts to find
the best ones.
B612 wasn’t my obvious first choice, but after I tried many of the classic
modern options available as Nerd Fonts, it still just *felt* better over time.
But its technical flaws were a disappointment: it couldn’t fully replace a modern
workhorse like Hack or JetBrains Mono.
I made a hybrid of B612 that I was quite happy with, but it wasn’t in a clean enough
form to publish.

Now, Claude Code and Opus 4.8 have made it a pleasure to consolidate this work as
Planetaire Mono. I’ve used dozens of terminal fonts over the years, and it is now what I
use every day.

Thanks to agentic coding, monospace fonts are now in greater use than anyone could ever
have imagined. I hope Planetaire Mono’s aesthetics lighten the hours you spend with your
agents, editors, and terminals.

## Specimens


A syntax-highlighted analyze_trajectory() Python function in Planetaire Mono on a dark background


The same Python function on a light background


RFC 1 (1969) set in Planetaire Mono, on a dark background


The same RFC 1 document on a light background


Multi-size body text plus French, German, Spanish, Turkish, Greek, and Cyrillic samples in Planetaire Mono, on a dark background


The same multi-language text sample on a light background


Planetaire Mono from 8pt to 44pt with a large legibility line, on a dark background


The same size waterfall on a light background


A terminal session in Planetaire Mono on a dark background: a colored eza listing, a Python one-liner, and a git log


The same terminal session in Planetaire Mono on a light background


Planetaire Mono weight ladder from Regular to ExtraBold, upright and italic, on a dark background


The same weight ladder on a light background


Confusable-character pairs and the dotted-zero variants in Planetaire Mono, on a dark background


The same confusable-character pairs and dotted-zero variants on a light background

## High Legibility

B612’s letterforms keep commonly confused characters distinct: `Il1|`, `O0o`, `rn` vs
`m`, `5S`, `8B`, `2Z`. Coverage spans Latin Extended A/B, Greek and Coptic, Cyrillic,
and Latin Extended Additional: over 12,000 glyphs in the Extended package.

## Two Packages: Text and Extended

Both packages share the same letterforms.
The archives include **TTF** files (in `ttf/`) for local install plus **WOFF2** files
(in `web/`, with ready `@font-face` stylesheets) for the web.
They differ only in glyph coverage:

- **Planetaire Mono Extended** is the full font: everything in Text **plus** the 10,000+
Nerd Font icons and Powerline glyphs that terminals and CLIs draw, so it is a superset
of Text. **Recommended for local and terminal use**, where TTF is the standard option.
- **Planetaire Mono Text** is a lightweight subset (no icons), so it is far smaller.
**Recommended for the web**, where the WOFF2 stylesheet is the standard option.
Its default web CSS is a slim Regular/Bold, upright-only unicode-range split for
Latin, Greek, and Cyrillic; `planetaire-mono-text-italics.css` adds the optional
Regular/Bold italics.

Either package works for either purpose; the recommendations are just the common,
size-conscious defaults.
See [Download](#download) for the archives and sizes.

## Download

Planetaire Mono is available in two packages, built from the same letterforms.
Get the latest from
[**GitHub Releases**](https://github.com/jlevy/planetaire/releases/latest):

| Package | Best for | Includes | Download |
| --- | --- | --- | --- |
| **Planetaire Mono Text** *(standard)* | Websites, documents, reading | TTF: full text coverage, all 10 variants. Web: slim Regular/Bold Latin, Greek, and Cyrillic split, with optional italic CSS. | [`.tar.xz`](https://github.com/jlevy/planetaire/releases/latest/download/PlanetaireMono-Text.tar.xz) **~1 MB** · [`.zip`](https://github.com/jlevy/planetaire/releases/latest/download/PlanetaireMono-Text.zip) ~1 MB |
| **Planetaire Mono Extended** *(full)* | Terminals, coding, icon-rich CLIs | Everything in Text plus all 10,000+ Nerd Font icons and Powerline. TTF + WOFF2. | [`.tar.xz`](https://github.com/jlevy/planetaire/releases/latest/download/PlanetaireMono-Extended.tar.xz) **~19 MB** · [`.zip`](https://github.com/jlevy/planetaire/releases/latest/download/PlanetaireMono-Extended.zip) ~30 MB |

Both archives are laid out as `ttf/` (for local install) and `web/` (WOFF2 plus
`@font-face` stylesheets).
Text TTFs ship all 10 variants; Text web fonts default to the smaller Regular/Bold split
profile, with separate WOFF2 files for each script range.

To install, unzip the archive and add the TTFs:

- **macOS / Windows:** double-click the `ttf/*.ttf` files and click **Install** (macOS
Font Book or the Windows font preview).
- **Linux:** copy them into `~/.local/share/fonts/` and run `fc-cache -fv`.

Then point your terminal at **Planetaire Mono Extended** (see
[Terminal Configuration](#terminal-configuration)), or load the WOFF2 web fonts (see
[Web](#web)).

## Weights

### Additional Weights

Each package ships 10 variants across 5 weights.

Planetaire Mono adds an **ExtraBold (800)** weight for terminal bold: the jump from
Regular (400) to Bold (700) is often too subtle at terminal sizes, and ExtraBold gives
bold text (prompts, headings, highlighted output) the contrast to stand out.

| Variant | Weight | Recommended Use |
| --- | --- | --- |
| Regular | 400 | Normal terminal text |
| Italic | 400 | Emphasized text |
| Medium | 500 | UI labels, intermediate weight |
| Medium Italic | 500 | UI labels italic |
| SemiBold | 600 | UI emphasis, intermediate weight |
| SemiBold Italic | 600 | UI emphasis italic |
| Bold | 700 | Standard bold |
| Bold Italic | 700 | Standard bold italic |
| **ExtraBold** | **800** | **Terminal bold text** |
| **ExtraBold Italic** | **800** | **Terminal bold italic** |

### ExtraBold for Terminals

For best results, map your terminal’s **bold** to **ExtraBold (800)** rather than Bold
(700): the heavier stroke gives bold output (prompts, headings, highlighted text) clear
contrast at terminal sizes, which is how the font is designed to be used.
Per-terminal setup for Terminal.app, Ghostty, Alacritty, WezTerm, iTerm2, Kitty, and VS
Code is under [Terminal Configuration](#terminal-configuration).

## Terminal Configuration

After installing the font, point your terminal at **Planetaire Mono Extended**. For best
results, map **bold** text to **ExtraBold (800)** rather than Bold (700): the heavier
stroke gives bold output (prompts, headings, highlighted text) clear contrast at
terminal sizes (12–16px), which is how the font is designed to be used.

### macOS Terminal.app

Open **Terminal → Settings… → Profiles**, pick your profile, open the **Text** tab, and
in the **Font** section click **Change** to select Planetaire Mono Extended at 14 pt.
Check **Use bold fonts** so bold output renders in bold.
Terminal.app uses the family’s Bold (700) and has no per-weight bold mapping, so it
can’t route bold to ExtraBold; use Ghostty (below) if you want ExtraBold bold.

### Ghostty

In `~/.config/ghostty/config`:

```
font-family = "Planetaire Mono Extended"
font-size = 14
font-style-bold = "ExtraBold"
font-style-bold-italic = "ExtraBold Italic"
```

Run `ghostty +list-fonts` if a style name does not resolve.

### Alacritty

In `~/.config/alacritty/alacritty.toml`:

```toml
[font]
size = 14.0

[font.normal]
family = "Planetaire Mono Extended"
style = "Regular"

[font.bold]
family = "Planetaire Mono Extended"
style = "ExtraBold"

[font.italic]
family = "Planetaire Mono Extended"
style = "Italic"

[font.bold_italic]
family = "Planetaire Mono Extended"
style = "ExtraBold Italic"
```

### WezTerm

In `~/.wezterm.lua`:

```lua
local wezterm = require 'wezterm'
local config = wezterm.config_builder()

config.font = wezterm.font('Planetaire Mono Extended')
config.font_size = 14.0

-- Map bold to ExtraBold for maximum contrast
config.font_rules = {
{
intensity = 'Bold',
font = wezterm.font('Planetaire Mono Extended', { weight = 'ExtraBold' }),
},
{
intensity = 'Bold',
italic = true,
font = wezterm.font('Planetaire Mono Extended', { weight = 'ExtraBold', style = 'Italic' }),
},
}

return config
```

### iTerm2

Open **Preferences → Profiles → Text**, set **Font** to Planetaire Mono Extended at 14
pt, and check **Draw bold text in bold font** so bold renders in the family’s bold
member. iTerm2 has no separate bold-font field, so it can’t target the ExtraBold face
specifically; use Ghostty, Kitty, or the VS Code terminal if you want ExtraBold bold.

### Kitty

In `~/.config/kitty/kitty.conf`:

```
font_family family="Planetaire Mono Extended"
bold_font family="Planetaire Mono Extended" style="ExtraBold"
italic_font family="Planetaire Mono Extended" style="Italic"
bold_italic_font family="Planetaire Mono Extended" style="ExtraBold Italic"
font_size 14.0
```

### VS Code terminal

In `settings.json`:

```json
{
"terminal.integrated.fontFamily": "Planetaire Mono Extended",
"terminal.integrated.fontSize": 14,
"terminal.integrated.fontWeight": "normal",
"terminal.integrated.fontWeightBold": "800"
}
```

## Web

Both packages include WOFF2 web fonts and ready stylesheets in `web/`. The **Text**
package is recommended for the web (much smaller, no icons); use **Extended** only if
you need the Nerd Font icons in the browser.
From the Text archive’s `web/`:

```html

body { font-family: var(--planetaire-mono-text-font-stack); }
/* rectangle zero instead of the dotted circle: */
.code { font-feature-settings: "ss01" 1; }

```

The default Text web stylesheet declares Regular (400) and Bold (700), upright, split
into Google Fonts-style `latin`, `latin-ext`, `greek`, `cyrillic`, and `cyrillic-ext`
unicode ranges. Browsers fetch the Latin file for ordinary English text and fetch the
other script files only when the page uses those codepoints.
Add the italic stylesheet only when the app renders italic text.
The generated CSS also defines `--planetaire-mono-text-font-stack`, which includes a
metric-matched local fallback face so line height stays stable while
`font-display: swap` loads the WOFF2.

For production, serve the WOFF2 files from a versioned path or fingerprinted filename
with `Cache-Control: public, max-age=31536000, immutable`. Keep the CSS cache shorter if
the font URLs inside it are not versioned.

## Build from Source

This repo is the **build tooling**, not the font itself — you only need it to build from
source. The fonts are distributed via
[GitHub Releases](https://github.com/jlevy/planetaire/releases).

Requires Python 3.12+ and [uv](https://docs.astral.sh/uv/).

```bash
uv sync --all-extras
make fonts # download (verify) -> build Extended + Text -> validate
```

Planetaire Mono is built with a custom Python pipeline using fontTools.
For each weight variant, the pipeline loads Hack Nerd Font as the base, merges B612’s
letter and digit glyphs by Unicode range (normalizing units per em from 2048 to 2000),
adds a center dot to B612’s zero for O/0 disambiguation, sets family and version
metadata, applies post-processing fixes, and validates coverage and style linking.
The intermediate B612 weights (Medium, SemiBold, and ExtraBold) are generated from its
base weights with FontForge emboldening before merging.
Full build, specimen, and release steps are in
[fonts-build-and-release.md](docs/fonts-build-and-release.md); regenerating the specimen
and these images is in [build-assets.runbook.md](docs/build-assets.runbook.md).

## FAQ

- **Does it have ligatures?** No.
Neither B612 nor Hack includes them, and Planetaire Mono keeps every character
distinct, true to its legibility-first design.
It’s possible we could find a way to package ligatures from another font in the
future, but it would have to match Hack’s heavier punctuation style.

- **Why a dotted zero rather than a slashed zero?** A slash can be mistaken for the
Scandinavian Ø; a center dot cannot.
The dot is a circle by default, with a rectangle variant via `ss01`.

- **How is this different from B612 Mono on Google Fonts?** That release has four styles
and B612’s original symbols, which are harder to read (especially the quote marks),
and its `0` and `O` are easy to confuse.
Planetaire Mono replaces the punctuation and symbols with Hack’s and adds the extra
weights, the dotted zero, and the Nerd Font icons.

- **Why not fix B612 upstream?** The upstream project has been dormant for years, and
its license reserves the B612 name, so an adapted version must ship under a new name
regardless. The build pipeline works over the released B612 fonts, so upstream
improvements can still be merged if the project revives.

## Credits

- [**Planetaire Mono**](https://github.com/jlevy/planetaire): assembled and maintained
by [Joshua Levy](https://github.com/jlevy).
- [**B612 Mono**](https://github.com/polarsys/b612): letterforms by
[Intactile Design](https://intactile.com/) for Airbus.
Planetaire Mono takes its letters, digits, and extended Latin, Greek, and Cyrillic
glyphs from B612.
- [**Hack**](https://sourcefoundry.org/hack/): Chris Simpkins’ typeface designed for
source code. It provides Planetaire Mono’s base font structure: punctuation, symbols,
metrics, and Nerd Font integration.
- [**Nerd Fonts**](https://www.nerdfonts.com/): Ryan McIntyre’s icon patching project.
Planetaire Mono Extended includes 10,000+ developer icons, including Powerline, Font
Awesome, Devicons, Material Design, and more, via the Hack Nerd Font base.
- [**carlosedp**](https://github.com/carlosedp/b612): Carlos Eduardo de Paula’s B612
Nerd Font fork, which inspired the dotted zero.
It is not a build dependency.

## License

Planetaire Mono is released under the
[SIL Open Font License 1.1](https://openfontlicense.org/) (OFL-1.1), the standard
license for open fonts.
In practical terms:

- **Use it for anything, free.** Set text in Planetaire Mono in documents, books,
websites, apps, videos, and commercial products, with no fee and no permission needed.
- **No credit required for use.** Setting text in the font does not obligate you to
attribute Planetaire Mono or B612 anywhere, including in publications, commercial
work, or open source software.
Credit is welcome but optional.
- **Bundle and redistribute freely, but keep the license with the files.** If you ship
the font files themselves (embedding web fonts, packaging them in an app or OS),
include the bundled license and copyright notices alongside them.
You may not sell the font files on their own.
- **Don’t reuse the B612 name for modified versions.** OFL lets an author reserve font
names, and “B612” is reserved, so a derivative cannot be distributed under that name.

This is a summary, not legal advice; the [full OFL text](https://openfontlicense.org/)
is binding. The upstream sources carry their own licenses: **B612** under OFL-1.1 and
EPL-2.0; **Hack** under MIT and the Bitstream Vera License (Hack’s symbols descend from
Bitstream Vera, which reserves the names “Bitstream” and “Vera”); **Nerd Fonts** glyph
fonts under OFL-1.1 with the patcher tooling under MIT. Full license texts for all of
these ship in the `licenses/` folder of each release archive.
The build tooling in this repo is [MIT](LICENSE).