# CADR Mono: A Monospace Programming Font Generated via Common Lisp

A programmatic typeface featuring 935 glyphs and algorithmic box drawing capabilities.

- **Source:** [Hacker News: Show HN](https://news.ycombinator.com)
- **Published:** 2026-10-18
- **Topic:** [Software & Engineering](https://brifing.si/c/engineering)
- **Original article:** <https://github.com/atgreen/cadr-mono>
- **On Brifing:** https://brifing.si/s/daa89639-c829-47ae-ba3a-2b21b5cee8be

## Algorithmic Font Generation

CADR Mono is a monospace typeface for terminals and code, generated entirely from Common Lisp. Unlike traditional font design, every glyph functions as a pure function of parameters defined in src/params.lisp. This approach eliminates drawn outlines and removes the need for a standard font editor within the development loop.

## Technical Design Specifications

The project includes 935 glyphs across eight static font files, utilizing a 2048 em grid with an advance of 1229. It supports 39 European languages, including Latin Extended, Greek, and Cyrillic sets. The typeface is licensed under the SIL Open Font License 1.1, ensuring broad accessibility for developers and terminal users.

## Grade and Theme Optimization

The family features two distinct grades: CADR Mono for light themes and CADR Mono Dark for dark backgrounds. The dark version reduces stem weight from 180 to 164 while maintaining identical advances and vertical metrics. This design choice ensures that swapping themes never causes column reflows in terminal environments.

## Computed Box and Braille

Box drawing, blocks, and braille characters are computed directly from the cell metrics. Rules reach cell edges to meet across boundaries, with junction arms overrunning by half the crossing rule's weight. Notably, these elements do not slope in italic mode, ensuring that italic terminals continue to draw straight, consistent boxes.

## Italic and Powerline Support

The italic variant is explicitly drawn rather than slanted. Six specific letters are reshaped: the 'a' becomes single-storey, 'f' gains a descender, and 'k', 'v', 'w', and 'y' are redrawn. Additionally, Powerline separators are generated from the same cell metrics as the box drawing, ensuring alignment across various terminal status line configurations.

## Hinting and Rendering Details

The font is hinted using ttfautohint. At 13px, a whole pixel corresponds to 158 units, with horizontal strokes set at 147 units. Above 13px, manual instructions are ignored in favor of hintslight, which provides better rendering results. This ensures clarity across different screen densities and terminal emulator font rendering engines.

## Nerd Fonts Integration

Users can generate a Nerd Font build using the provided Makefile, which supports 11,130 codepoints. This build pins to Nerd Fonts v3.5.1, though Font Logos and Pomicons are excluded due to licensing conflicts. Any distribution of this build requires shipping the src/nerdfont/LICENSES/ directory to maintain compliance with upstream attribution requirements.

## Development and Tooling

Designed by Anthony Green, the project relies on fontmake, ttfautohint, and SBCL for its build pipeline. By treating typography as code, the project demonstrates a unique intersection between Lisp programming and font engineering. It serves as a functional tool for developers seeking precise control over their terminal's visual presentation and character rendering.

## Sources covering this story

- https://github.com/atgreen/cadr-mono — 

---

_Summary written by Brifing from the original reporting. Copyright in the original article belongs to its publisher; read the full piece at the link above._
