Nan Xiao

Paper Mono with Fira Code ligatures

TL;DR: This is the third entry in the ligaturized font series, after DM Mono and Noto Sans Mono. This time it’s Paper Mono, patched with ligatures and a slashed zero promoted to default. Download from GitHub: nanxstats/paper-mono-ligaturized.

Liga Paper Mono in Ghostty, configured with adjust-cell-height = 8.
Liga Paper Mono in Ghostty, configured with adjust-cell-height = 8.

Why Paper Mono

Paper Mono is built by Paper and released under the SIL Open Font License. While DM Mono leans into quirky, opinionated glyph shapes and Noto Sans Mono stays deliberately invisible, Paper Mono occupies a different space: clean and polished, closer in spirit to SF Mono, but with enough warmth to not feel clinical.

a b c d e f g h i j k l m n
o p q r s t u v w x y z
A B C D E F G H I J K L M N
O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
[ ] { } ( ) < > + - * / ^ =
! ? @ % & # $ ~ ` ; : , .

Ligatures

The build uses the same Ligaturizer + Makefile approach as the previous two projects. Currently, Paper Mono ships eight upright weights and no italics, so the output is eight font files: thin through extra bold.

Sample ligatures after patching:

<- -> => ==> |> :: :::
== != >= <= === || //

Without ligatures for comparison:

<- -> => ==> |> :: :::
== != >= <= === || //

The same ligature exclusions apply and render as separate characters.

Slashed zero by default

Paper Mono includes a slashed zero as an OpenType alternate (zero.zero), but accessing it requires the editor to support stylistic alternates. Since many IDEs don’t support setting that, I made a decision to make the slashed zero the default zero glyph. The Makefile achieves this by running a FontForge Python script that copies the slashed zero glyph onto the default zero position.

Setup

For VS Code:

"editor.fontFamily": "'Liga Paper Mono', monospace",
"editor.fontLigatures": "'calt', 'liga'",
"terminal.integrated.fontFamily": "'Liga Paper Mono', monospace",
"terminal.integrated.fontLigatures.enabled": true,

For Ghostty:

font-family = Liga Paper Mono
adjust-cell-height = 8