buena mono — a free variable monospace typeface for code and prose
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.
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.
Read the essay — Against Mechanical Oblique
Ask a browser for italic monospace and, more often than not, it lies to you. When a fixed-width font ships no slanted design, the renderer fakes one: it takes the upright letters and shears them a few degrees to the right. Nothing is redrawn. The curves that were tuned to sit straight now lean under a shove, the spacing that was balanced for uprights goes slightly wrong, and the result is an oblique — a mechanical slant, italic's understudy reciting from memory.
For decades that was simply the state of things. Courier had no italic at all; comments and emphasis borrowed the roman or a software skew. Even much-loved coding faces leaned on synthesized obliques long after their romans were beautiful. The terminal, the argument went, didn't need a voice for its asides.
The third screen does. A comment is not code — it is a person talking to the next person — and it deserves to look like speech, not like an accident of transformation. So buena mono draws the slant instead of faking it. The lean lives on a real slnt axis with dedicated masters across the family, spacing corrected as it goes, running continuously from upright to ten degrees. Ten is a deliberate number: enough to whisper an aside, not enough to shout over the code around it.
Because it is an axis and not a switch, the slant is yours to place — a hair of lean for a docstring, the full ten for a block of prose — anywhere on the slider, at any weight. That is the whole quiet argument: a comment is a voice, and a voice should be drawn, not sheared.
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.
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
Show all 18 categories comments · pipes · slashes · tildes · assignment · brackets · and more
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.
Block Elements
The Block Elements range (U+2580–259F) is Braille’s blunt cousin — full and part blocks, shades and quadrants that terminals use for bars, meters, gradients and mosaics. Buena ships the whole range on the cell, so a progress bar or a shaded ramp stays flush instead of stepping.
Two things a terminal does with those 32 glyphs: a meter whose last cell fills an eighth at a time, so the bar stops on the value instead of the nearest column, and a histogram two rows tall, stacking vertical eighths into sixteen steps of height.
Mermaid
A Mermaid graph is monospace twice over: you write it as text, and every renderer that draws it — GitHub, Obsidian, a hundred docs sites — sets the node labels in whatever mono you give it. Left is the source; right is the same graph drawn on the cell, no renderer involved.
graph LR
A[spec] --> B{review}
B -->|ship it| C[main]
B -->|changes| A sequenceDiagram editor->>daemon: save buffer daemon->>fontc: compile fontc-->>editor: 5406 glyphs
gantt title Release drawing :done, d1, 2026-01-06, 30d spacing :active, d2, after d1, 21d hinting : d3, after d2, 14d
Two things to notice in the source panels. The gantt bars are block elements measured from the day counts printed beside them — thirty days of drawing, twenty-one of spacing, fourteen of hinting, on one thirty-cell track. And the edges ligate as you type them: --> closes into a single arrow, -->> into a double one, so the source already points the way the graph does.
Graphs
Everything above this point was typed. Everything below is drawn from data — mdx-graphs components that build a chart out of characters, one per cell, with no image and no canvas. It is a harder test of a monospace than any sentence: a bar only reads as a bar when every cell is exactly as wide as the last, and a year of them has to land on the same grid or the picture comes apart.
The numbers are this site’s own git log. Nothing is filled in — the quiet stretch in the middle is four months with no commits, and the one panel not drawn from this repository says so on its label.
5,406
glyphs
3 scripts
159
ligatures
51
features
971
languages
The palette
A chart is the one place a reader expects colour to carry the meaning. Here it doesn’t. The glyph carries the data and the colour only points at it — which is what lets these graphs survive being pasted into a terminal, a diff, or a plain-text file. Three ramps follow, for one series, two, or three; what tells the series apart is the character, not the hue.
Turn the colour off and every graph on this page still reads — that is the whole point of drawing them in characters. What colour there is clears the 4.5:1 contrast floor for body text in both themes; the dashed frame is the only thing below it, because it is a rule rather than a character anyone has to read.
Density
Hundreds of values, one character each. You read the texture before you read a number.
243 commits
LessMore
90%
6w agotoday
█ up▒ slow· down
90 percent uptime over 42 days, 6w ago to today243
since the first commit
197 days
Series
One measure over time, where the shape of the run says more than any single point in it.
29 weeks
Sparkline with 29 points. 29 weeks- Sun
- Mon
- Tue
- Wed
- Thu
- Fri
- Sat
LessMore
- 2026-02
- 2026-06
- 2026-07
- 2026-08
- copy
- style
- machinery
Structure
Relationships rather than amounts — what contains what, what follows what, and what connects to what.
- src/
- components/8
- ui/4
- layouts/1
- lib/19
- pages/13
- scripts/1
- styles/1
- 1955Courier
- 1968OCR-B
- 2008Nitti
- 2014Fira Code
- 2026Buena Mono
- Ligatures✓–✓✓✓
- Small caps––––✓
- Braille set–––✓✓
- Ligature count1390125—159
- OT features3716262451
Twelve graphs, no JavaScript — each renders at build time and ships as characters. All thirty are catalogued on their own page, with the code that drew each one.
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"
]
}
} ASCII animations
Terminals have animated with nothing but characters since before they had pixels — a torus shaded in four greys, rain down the columns, a plasma field, a needle riding the meters, a build that reports itself, a graph lighting its own path, a sequence drawing itself message by message, and a machine watching itself work. All eight run on the same 618 cell, redrawn about twenty times a second as plain text you can still select.
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 | — |
Technical Reports
Automated quality assurance on the variable font. View all →
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.
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.
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.
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.Buena in the wild
Buena where it earns its keep — a chessboard, chord charts, a countdown, a knowledge graph, a camera readout. Every one is just aligned monospace text and block elements.
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 — and five more classic openings below. Board, pieces, and coordinates align by construction.
Go
A 9×9 goban — stones sit on the line crossings, and the box-drawing grid, the star points and the black and white stones all share one cell.
Draughts
An 8×8 board — men and kings on the dark squares, each disc centred in its cell the same way a chess piece is.
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.
Notation marks — clefs, time signatures, rests, and chord-chart navigation marks (SMP Musical Symbols):
Numbers
Tabular figures lock every digit to one width — timers, counters and calculators update with zero reflow, no flicker as the numbers change. Each of these runs on Buena’s digits:
Travel
A boarding pass is a monospace document — flight numbers, gates, seats and times land on a fixed grid so a scanner (and a traveller) read them at a glance. Codes align, columns stay honest, and the barcode packs into even cells. Four ways to leave:
Departures
Connected notes
Buena reads just as well in a knowledge graph. Hover a note to light up its backlinks — labels stay crisp at any node size, the way they would in a notes app.
Camera display
A camera’s top LCD and viewfinder is a monospace grid — shutter, aperture, ISO and exposure aligned to the cell, with block-element gauges. Pick a body to switch the readout:
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.
Read the essay — Borrowed Words, Plain Words
There is a particular unease in reading a sentence you did not write, set in a font you chose. The machine's prose arrives fluent and confident and slightly not-yours, and the eye keeps looking for the seam. Most tools solve this by fencing the borrowed text off — a grey box, a different family, a footnote's worth of visual demotion — which quietly says the machine's words are a lesser kind of writing. On the third screen, where your draft and its suggestions share one document, that hierarchy is a lie you have to read past all day.
buena mono takes the opposite bet. Keep everything in one face, at one size, on one width, and let a lighter signal carry the distinction. Borrowed words take a wash of color; your own stay plain. The type stops refereeing which sentence is more legitimate and goes back to its real job, which is being legible and calm while you decide.
The colour, when you turn on Show Syntax, isn't decoration — it is the same idea pointed at grammar. Nouns, verbs, adjectives, each get a hue, so a paragraph reveals its parts of speech the way a code editor reveals a syntax tree. It is a small, honest way of admitting that all of this — the prose and the program — is structured language, and that a machine reading over your shoulder is parsing it too.
A warm, quiet monospace turns out to be the right neutral ground for that meeting. Not because it flatters the human or the model, but because it refuses to rank them — same face, same measure, one of them merely tinted — and leaves the judgement where it belongs, with the person doing the writing.
For Humans & Machines
buena mono is built for both human-authored prose and machine-generated text.
Writer-first
We used to have two screens — one for prose, one for code. Now there is a third, where both happen at once: the markdown file with AI suggestions in the margin, the commit message that reads like a sentence, the journal kept in a repo.
Most monospaces are still drawn for the terminal. buena mono is drawn for that third screen. A tall 524-unit x-height keeps long prose comfortable; a true 10° italic gives comments a voice instead of a mechanical lean; and 159 restrained ligatures clean up code without hiding what you typed. Every glyph sits on one fixed 618-unit cell, so a letter to a friend and a regular expression occupy the same measure of space — and columns never drift.
Read the essay — The Third Screen
There were two screens once, and they never met. One was for prose: the typewriter, then the word processor, then the blank page that wanted paragraphs. The other was for code: the terminal, green on black, then the IDE with its gutters and folding. You wrote a letter in one and a loop in the other, and the fonts kept the border honest — a warm serif for the human, a cold fixed-width for the machine.
Anyone who has kept a journal in a repo knows the border is gone. The file open right now is markdown with a model whispering completions in the margin; the commit message underneath it is a sentence you'd be happy to read aloud; the doc is half specification, half diary. This is the third screen, and it isn't a place either old font was drawn for. Set that markdown in a terminal face and the prose feels clenched. Set the code in a book face and the columns fall apart.
buena mono is an argument that one face can hold both. The proportions are tuned for reading — a 524-unit x-height, open counters, punctuation weighted to survive at small sizes — while every glyph still answers to a single 618-unit cell, so a paragraph and a stack trace measure the same width and nothing drifts. Emphasis lives on a drawn slant instead of a fake one; operators resolve into clean ligatures without hiding a keystroke.
The claim is small and stubborn: the writing and the code now happen in the same document, so they deserve the same voice — calm enough for the letter, exact enough for the regex, and one width for both.
// Community
writers, too.
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 (5406) | ✓ 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.