buena
buena mono is designed for the place where writing and code meet. Optimized for markdown editors, code editors, and terminals with carefully tuned ligatures, small caps, and variable weight (Thin to ExtraBold) and slant (upright to 10° italic) axes.
Playground
Type anything — switch between Text and Code, sweep the weight (100–800) and slant (0 to −10°) axes, and toggle OpenType features live.
Human & machine, in color
Borrowed words carry color, your own stay plain — the writer-with-AI workflow buena mono is drawn for. Or turn on Show Syntax to recolor the prose by part of speech.
For Humans & Machines
buena mono is built for both human-authored prose and machine-generated text.
Glyph Browser
Hover over any glyph to inspect it with metric guidelines.
Design Notes
buena mono is a writer-first monospace — tuned to read comfortably across long passages of prose in markdown, while keeping code unambiguous. Every glyph sits on one fixed 618-unit cell, so columns stay aligned in editors and terminals.
Distinct by design
The characters most often confused while reading code are drawn to be told apart at a glance.
A true italic on the slant axis
Rather than a mechanical oblique, the slnt axis runs from upright to a 10° italic voice — enough to mark emphasis and comments without straining the eye.
Recommended settings
Vision science puts fluent reading a touch above editor defaults (Legge & Bigelow 2011); buena mono's tall x-height earns some of that back. Readers differ — find your size in the playground.
// Community
writers, too.
Weight Ramp
Coding Ligatures
A ligature merges two or more characters into a single shape. In code, this renders multi-character operators as one clear symbol — cutting visual noise and evening out whitespace — while the underlying text stays exactly what you typed.
159 coding ligatures via calt + 5 standard (liga) + 11 discretionary (dlig)
Arrows
Comparison
Operators
Comments & JSX
Arrows — Extended
Pipes & Bars
Slashes & Comments
Tildes
Assignment
Question Marks
Hash / Pound
Arrows — Exotic
Plus / Asterisk / Dollar
Brackets & Braces
Logical & Arithmetic
Miscellaneous
Extended Operators
On / Off Comparison
Stylistic Alternates
13 alternates across 12 stylistic sets — mix and match for your preferred coding style — plus ss13, a machine-readable mode that decomposes every ligature for OCR/verbatim contexts
All Alternates Combined
Small Caps
847 mappings — smcp (457 lowercase → small caps) and c2sc (390 uppercase → small caps)
Variable Weight & Slant
Size Waterfall
Slant Spectrum
The slnt axis runs 0 to −10° for a true, upright-to-italic voice.
Weight × Slant Matrix
Box Drawing & TUI
128 box drawing glyphs — light, heavy, double, rounded, dashed, and diagonal. Ships native Powerline glyphs and is compatible with the Nerd Fonts patcher for the full 10K+ dev-icon set.
Tiling Test
TUI Demos
Directory Tree
Box-drawing glyphs render file trees cleanly — here, the .claude harness layout (agents, skills, hooks, workflows).
your-project/ ├── CLAUDE.md Instructions read every session ├── .mcp.json Project-scoped MCP servers └── .claude/ The harness — config + extensions ├── settings.json Permissions, hooks, config ├── rules/ Topic-scoped instructions │ ├── testing.md │ └── api-design.md ├── skills/ Reusable prompts invoked by name │ └── security-review/ │ ├── SKILL.md Trigger + instructions │ └── checklist.md ├── agents/ Subagents with their own context │ └── code-reviewer.md ├── commands/ │ └── fix-issue.md ├── workflows/ Scripts that orchestrate subagents └── agent-memory/ Subagent persistent memory └── <agent-name>/ └── MEMORY.md Maintained automatically
Code Sample
// buena mono — ligatures render inline, syntax by GitHub (light/dark)
const pipe = <T,>(x: T) => (...fns: Array<(v: T) => T>) =>
fns.reduce((acc, fn) => fn(acc), x);
function classify(n: number): string {
if (n !== 0 && n >= 0) return n <= 9 ? "digit" : "number";
return n < 0 ? "negative" : "zero";
}
const mode = config?.settings?.mode ?? "default";
const node = <>{items.map((i) => <li key={i.id}>{i.label}</li>)}</>; Braille Graphics
Braille patterns (U+2800–28FF) pack a 2×4 dot grid into a single cell, so terminals draw high-resolution graphics with them — btop, gnuplot’s dumb terminal, drawille, TUI sparklines. buena mono ships all 256, cell-aligned, so they render sharp instead of falling back to a mismatched face. It’s rare: of ~18 monospace fonts we tested, only buena and Cascadia carry the full block.
Statusline
Block-drawing glyphs on a fixed grid make buena mono a natural fit for colored terminal statuslines, prompts, and TUIs.
Full display
Minimal display
Spinner
Claude Code cycles a verb while it thinks — here are all 200, swapped in via spinnerVerbs. The spinner and text stay locked to one grid in buena mono.
{
"spinnerVerbs": {
"mode": "replace",
"verbs": [
"Krahing",
"Hill-climbing",
"Naming the wind",
"Kwisatz-haderaching",
"Caffeinating",
"Reticulating splines",
"Grokking",
"Yak-shaving",
"Frobnicating",
"Bikeshedding",
"Nerd-sniping",
"Summoning daemons",
// …and 188 more
]
}
} {
"spinnerVerbs": {
"mode": "replace",
"verbs": [
"Krahing",
"Hill-climbing",
"Naming the wind",
"Kwisatz-haderaching",
"Caffeinating",
"Reticulating splines",
"Grokking",
"Yak-shaving",
"Frobnicating",
"Bikeshedding",
"Nerd-sniping",
"Summoning daemons",
"Rubber-ducking",
"Percolating",
"Confabulating",
"Tesseracting",
"Accomplishing",
"Actioning",
"Actualizing",
"Architecting",
"Baking",
"Beaming",
"Beboppin'",
"Befuddling",
"Billowing",
"Blanching",
"Bloviating",
"Boogieing",
"Boondoggling",
"Booping",
"Bootstrapping",
"Brewing",
"Burrowing",
"Calculating",
"Canoodling",
"Caramelizing",
"Cascading",
"Catapulting",
"Cerebrating",
"Channeling",
"Channelling",
"Choreographing",
"Churning",
"Clauding",
"Coalescing",
"Cogitating",
"Combobulating",
"Composing",
"Computing",
"Concocting",
"Considering",
"Contemplating",
"Cooking",
"Crafting",
"Creating",
"Crunching",
"Crystallizing",
"Cultivating",
"Deciphering",
"Deliberating",
"Determining",
"Dilly-dallying",
"Discombobulating",
"Doing",
"Doodling",
"Drizzling",
"Ebbing",
"Effecting",
"Elucidating",
"Embellishing",
"Enchanting",
"Envisioning",
"Evaporating",
"Fermenting",
"Fiddle-faddling",
"Finagling",
"Flambeing",
"Flibbertigibbeting",
"Flowing",
"Flummoxing",
"Fluttering",
"Forging",
"Forming",
"Frolicking",
"Frosting",
"Gallivanting",
"Galloping",
"Garnishing",
"Generating",
"Germinating",
"Gitifying",
"Grooving",
"Gusting",
"Harmonizing",
"Hashing",
"Hatching",
"Herding",
"Honking",
"Hullaballooing",
"Hyperspacing",
"Ideating",
"Imagining",
"Improvising",
"Incubating",
"Inferring",
"Infusing",
"Ionizing",
"Jitterbugging",
"Julienning",
"Kneading",
"Leavening",
"Levitating",
"Lollygagging",
"Manifesting",
"Marinating",
"Meandering",
"Metamorphosing",
"Misting",
"Moonwalking",
"Moseying",
"Mulling",
"Mustering",
"Musing",
"Nebulizing",
"Nesting",
"Newspapering",
"Noodling",
"Nucleating",
"Orbiting",
"Orchestrating",
"Osmosing",
"Perambulating",
"Perusing",
"Philosophising",
"Photosynthesizing",
"Pollinating",
"Pondering",
"Pontificating",
"Pouncing",
"Precipitating",
"Prestidigitating",
"Processing",
"Proofing",
"Propagating",
"Puttering",
"Puzzling",
"Quantumizing",
"Razzle-dazzling",
"Razzmatazzing",
"Recombobulating",
"Reticulating",
"Roosting",
"Ruminating",
"Sauteing",
"Scampering",
"Schlepping",
"Scurrying",
"Seasoning",
"Shenaniganing",
"Shimmying",
"Simmering",
"Skedaddling",
"Sketching",
"Slithering",
"Smooshing",
"Sock-hopping",
"Spelunking",
"Spinning",
"Sprouting",
"Stewing",
"Sublimating",
"Swirling",
"Swooping",
"Symbioting",
"Synthesizing",
"Tempering",
"Thinking",
"Thundering",
"Tinkering",
"Tomfoolering",
"Topsy-turvying",
"Transfiguring",
"Transmuting",
"Twisting",
"Undulating",
"Unfurling",
"Unravelling",
"Vibing",
"Waddling",
"Wandering",
"Warping",
"Whatchamacalliting",
"Whirlpooling",
"Whirring",
"Whisking",
"Wibbling",
"Working",
"Wrangling",
"Zesting",
"Zigzagging"
]
}
} Language Support
971 languages shape correctly (marks, joining, small caps), and 613 have full character-set coverage — 509 Latin, 96 Cyrillic, plus Greek, Coptic, and transliteration sets. Verified by hyperglot and shaperglot.
Latin
Cyrillic
Greek
Metrics & Coverage
Figures verified by our technical reports — fontspector (Google Fonts QA), shaperglot, hyperglot, and interpolatable.
Metrics
| Metric | Value |
|---|---|
| Units per Em | 1000 |
| Advance Width | 618 |
| Cap Height | 699 |
| x-Height | 524 |
| Ascender — line (hhea/typo) | 950 |
| Descender — line (hhea/typo) | -250 |
| Ascender — em-box (design) | 729 |
| Descender — em-box (design) | -218 |
Variable Axes
| Axis | Tag | Range | Default |
|---|---|---|---|
| Weight | wght | 100–800 | 400 |
| Slant | slnt | 0 to −10 | 0 |
OpenType Features
| Feature | Tag | Count |
|---|---|---|
| Standard Ligatures | liga | 5 |
| Coding Ligatures | calt | 159 |
| Discretionary Ligatures | dlig | 11 |
| Small Caps | smcp | 457 |
| Caps to Small Caps | c2sc | 390 |
| Slashed Zero | zero | 1 |
| Stylistic Sets | ss01–ss12 | 13 |
| Character Variants | cv01–cv13 | 13 |
| Oldstyle Figures | onum | 10 |
| Tabular Figures | tnum | 10 |
| Subscripts | subs | 10 |
| Superscripts | sups | 10 |
| Scientific Inferiors | sinf | 10 |
| Numerators / Denominators | numr / dnom | 20 |
| Fractions | frac | 9 |
| Ordinal Indicators | ordn | 2 |
| Case-Sensitive Forms | case | 7 |
| Localized Forms | locl | 3 |
| Composition/Decomposition | ccmp | — |
| Mark Positioning | mark | — |
| Mark-to-Mark Positioning | mkmk | — |
| Access All Alternates | aalt | — |
How It Compares
How buena mono stacks up against popular open-source monospace families.
| Metric | JetBrains | iA Writer | Fragment | Fira Code | Noto Sans | IBM Plex | Geist | Cascadia | buena |
|---|---|---|---|---|---|---|---|---|---|
| Cap Height | 730 | 698 | 699 | 687 | 714 | 698 | 710 | 693 | 699 |
| x-Height | 550 | 516 | 524 | 525 | 536 | 516 | 530 | 518 | 524 |
| Advance Width | 600 | 600 | 600 | 600 | 600 | 600 | 600 | 586 | 618 |
| Coding Ligatures | 139 | 0 | 40+ | 125 | 0 | 0 | 0 | Yes | 159 |
| Small Caps | No | No | Yes | No | Yes | No | No | No | Yes (923) |
| Weights | 8 | 4 | 2 | 6 | 9 | 14 | 9 | 5 | 8 + italics |
| OpenType Features | 37 | 16 | 18 | 26 | 17 | 16 | 23 | 24 | 51 |
| Scripts | Lat+Cyr | Lat+Cyr | Latin | Lat+Cyr+Gr | Lat+Cyr+Gr | Lat+Cyr | Lat+Cyr | Lat+Cyr+Ar | Lat+Cyr+Gr |
| Languages | 354 | 391 | 284 | 393 | 619 | 393 | 373 | 507 | 613 |
| Braille patterns | No | No | No | No | No | No | No | Yes (256) | Yes (256) |
Cap height, x-height, advance, feature counts, small caps, scripts, and language counts are measured directly from each family’s current release (fontTools + hyperglot), normalized to a 1000-unit em. Coding-ligature and weight counts are from published specs. buena mono’s figures are cross-checked by our technical reports.
Technical Reports
Automated quality assurance on the variable font. View all →
Frequently
asked questions
[ 01 ] Is buena mono really free?
[ 02 ] Can I use it in a commercial product, app, or website?
[ 03 ] Do I have to credit Buena?
[ 04 ] Can I modify it or build my own font from it?
[ 05 ] Can I use it in a logo?
[ 06 ] How many languages does it support?
[ 07 ] Is it production-ready and tested?
[ 08 ] Does it work as a variable font?
[ 09 ] Which weight should I use in dark mode?
font-variation-settings: "wght" 360 where you’d use 400 on a light background. A dedicated grade (GRAD) axis is on the roadmap.[ 10 ] Can machines (OCR, screen readers, AI) read it reliably?
!= rendering as ≠) can confuse OCR — for verbatim/machine-read contexts enable ss13 (machine-readable mode), which decomposes every ligature back to its plain characters: font-feature-settings: "ss13" 1.[ 11 ] Does it do Braille and terminal graphics?
U+2800–28FF, 256 glyphs) on the 618 cell. That’s rare in coding fonts: of ~18 we tested, only buena mono and Cascadia Code carry the whole block. Because each cell is a 2×4 dot grid, terminal tools (btop, gnuplot, drawille) use Braille for high-resolution plots and sparklines — and with the full set weight-matched to the family, they line up instead of falling back to a mismatched face.Get Buena Mono
Free and open source under the SIL Open Font License 1.1. Download the variable font, or grab a tagged release from GitHub.
Use on the web
@font-face {
font-family: "Buena Mono";
src: url("BuenaMono-VF.woff2") format("woff2");
font-weight: 100 800;
font-style: oblique 0deg 10deg;
}
/* slant lives on the slnt axis (0 to -10): */
.slanted { font-variation-settings: "slnt" -10; } Install
BuenaMono-VF.ttf and click Install Font, or drop it into Font Book.BuenaMono-VF.ttf and choose Install.~/.local/share/fonts/ and run fc-cache -f.More ways to install
Best for build pipelines — ships the full glyph set with font-feature-settings support.
npm i buena-mono
Then self-host the woff2, or import it in your CSS.
Quick setup for the web. Does not yet include the full glyph set or font-feature-settings.
@import url("https://fonts.googleapis.com/css2?family=Buena+Mono"); Note — Buena Mono will be available on Google Fonts soon.
| Feature | NPM | Google Fonts | Download |
|---|---|---|---|
| font-feature-settings | ✓ Yes | ✗ No | ✓ Yes |
| Full glyph set (5385) | ✓ Full | △ Partial | ✓ Full |
| Variable axes (wght + slnt) | ✓ Yes | △ Limited | ✓ Yes |
| Automatic updates | ✓ via npm | ✓ via Google | ✗ Manual |
| Self-hosted | ✓ Yes | ✗ No | ✓ Yes |
Manually download otf, woff2, and variable font files — the full glyph set with font-feature-settings.
Licensed under OFL. Use it on your sites and projects.
Source & docs: github.com/buenagames/buena-mono · Google Fonts listing coming soon.
Games
Letter and word games live or die by the grid. buena mono's fixed 618-unit advance means every glyph fills the same cell — so cryptograms stack, ladders align, tiles tile, and columns stay honest at any length, with no per-glyph fitting. A few mechanics where the monospace is the mechanic:
Board Games
Solitaire
A 52-card deck — four suits, thirteen ranks. Rank and pip share the same cell, so cards stack and the columns of a tableau stay aligned.
Chess
The Ruy Lopez, after 1. e4 e5 2. Nf3 Nc6 3. Bb5. Board, pieces, and coordinates align by construction.
Music
Not a notation engine — a monospace for writing about music: chord charts, lead sheets, tempo and key marks that stay aligned in plain text. The seven Unicode music symbols render on Buena’s fixed cell.
A monospace timeline
A brief history of fixed-width type — from the typewriter (Sholes & Glidden, 1874) and IBM’s Courier, through the Swiss grotesques, to the modern coding canon. Dimmed rows are proportional sans-serifs, not monospaces.
Grounded in reading science
buena mono's design decisions are informed by peer-reviewed research on legibility, monospace reading, and type for machine readers.
Design informed by these findings — buena mono itself was not a subject of these studies. See the technical reports for evidence pages generated from the font itself.