cascadia-code

Activity, over time

Daily observations from the public event archive.

Attention

Daily stars & forks

Loading attention chart

Star accumulation

Cumulative stars

Loading star accumulation chart

Pull requests

Daily opens & merges

Loading pull requests chart

Conversations

Daily issues & comments

Loading conversations chart

Community

Daily accounts & reviews

Loading community chart

Releases

Daily releases

Loading releases chart

Mentions

1post · 30d
Nov 30 posts
  1. DEV · · @alanwest

    Best Coding Font in 2026: Iosevka Fits 20% More Code Than JetBrains Mono JetBrains Mono, Fira Code and Cascadia Code are all about 0.6 em wide per character. Iosevka is 0.5 em. For me that one number settles most of the "best coding font in 2026" argument: at the same font size, Iosevka gives you 20% more columns. At 14px in a 1000px pane that's about 142 columns instead of 119, which is the difference between a side-by-side diff that fits and one that wraps. Iosevka made the HN front page again this week (723 points), and the thread went the usual way: half the people calling it the best font they've used, the other half calling it unreadable. I pulled the real numbers from each font's source files, so below you get the specs side by side, copy-paste VS Code and terminal settings, and a custom Iosevka build that fixes the parts people complain about. Iosevka vs JetBrains Mono vs Fira Code vs Cascadia Code: the specs I went to each font's source files instead of trusting review sites, because the review sites disagree with each other. The advance width is the glyph width divided by units per em: - Iosevka: [widths.Normal] shape = 500 in build-plans.toml, measured in 1/1000 em - JetBrains Mono: unitsPerEm = 1000 and width = 600 on almost every glyph in JetBrainsMono.glyphs - Fira Code: unitsPerEm = 2000, width = 1200 in FiraCode.glyphs - Cascadia Code: unitsPerEm 2048, zero advance 1200 in the Regular UFO | | Iosevka | JetBrains Mono | Fira Code | Cascadia Code | |---|---|---|---|---| | Advance width | 0.50 em | 0.60 em | 0.60 em | ~0.586 em | | Columns in a 1000px pane at 14px | ~142 | ~119 | ~119 | ~121 | | Latest release | v34.9.0 (2026-09-26) | v2.304 (2023-01-14) | 6.2 (2021-12-06) | v2407.24 (2024-11-27) | | Ligature-free build | Iosevka Fixed | JetBrains Mono NL | none, turn off calt | Cascadia Mono | | Glyph customization | 146 configurable characters, 19 stylistic sets | ligatures and OpenType features can be toggled | cv01, cv02…, ss01, ss02…, zero | a few stylistic sets, ss01 = cursive italic | | License | OFL-1.1 | OFL-1.1 (build source Apache 2.0) | OFL-1.1 | SIL OFL | I got the column counts by dividing 1000px by width × 14px, so they're plain arithmetic. Terminals snap cells to whole pixels, so your exact count will move by a few columns, but the ratio stays the same. The release column is worth a second look. Fira Code's last release is from 2021, and JetBrains Mono hasn't shipped since early 2023. Both are essentially finished, which is fine if you like them as they are, because they aren't going to change. Iosevka shipped v34.9.0 on September 26. Width: why Iosevka fits 20% more code per line 0.6 / 0.5 = 1.2. Same point size, 20% more characters per line. Put it the other way: to fit as many columns with JetBrains Mono, you'd have to drop it to about 83% of the size. Iosevka's glyphs are narrower, but they aren't smaller. x-height is 520 and cap height 735 out of 1000 (parameters.toml), so letters stay as tall as anyone else's while the cell gets thinner. The narrowness is also the main complaint. In the HN thread one commenter said it was "just way too narrow for my taste". Another said "it was so painful throughout the first day", then admitted they stopped noticing. Someone else replied: "Give it a week". I agree. On day one it looks like someone squeezed your editor horizontally, and the commenter who stuck with it says that wore off after the first day. If you try it and still hate the width, Iosevka ships an Extended width with shape = 600. That's exactly JetBrains Mono's 0.6 em, so you can keep Iosevka's glyph options and still get the width you're used to. Telling 0 from O and 1 from l and I JetBrains' own page says its 1, l and I are "easily distinguishable" and that the zero has a dot inside. That's a solid default. Turn on the zero feature and you get a slashed one instead, and that's where the choice ends. Iosevka treats every one of those characters as a setting. From the custom build docs: - zero has 54 variants under cv10: slashed, dotted, reverse-slashed, oval-dotted, broken-vertical-bar and so on - one has 9 (cv01), l has serifed, tailed, zshaped and more (cv47), capital-i has serifless, serifed and short-serifed (cv19) And if you just want a look you already know, the stylistic sets copy other fonts: ss03 is Consolas style, ss05 is Fira Mono style, ss08 is Pragmata Pro style, ss14 is JetBrains Mono style. So you can have JetBrains Mono's letterforms at 0.5 em. The "too narrow" crowd usually misses this: Iosevka is generated from code, and the build plan you write decides what every ambiguous glyph looks like. Ligatures: every font here lets you turn them off All four have ligatures. Iosevka puts its default set on calt, has discretionary ones on dlig, and has language-specific sets you turn on by switching calt off and enabling the matching feature (README). Its Fixed spacing removes ligatures entirely. If you hate ligatures, and one HN commenter summed up that camp well with "The job of a font is to show me the text as it actually is", every font here has an escape hatch: Iosevka Fixed, JetBrains Mono NL, Cascadia Mono, or calt off. So don't pick between these four based on ligatures. Iosevka settings for VS Code, Ghostty and kitty Install the stock build first. Don't compile anything yet: brew install --cask font-iosevka # macOS # Arch: ttc-iosevka packages, Fedora: peterwu/iosevka COPR, FreeBSD: pkg install iosevka The prebuilt fonts include the ss## and cv## features, so you can try a style in VS Code's settings.json before committing: { "editor.fontFamily": "'Iosevka', monospace", "editor.fontSize": 14, "editor.fontLigatures": "'calt', 'ss14', 'cv10' 6", "terminal.integrated.fontFamily": "'Iosevka Term'" } That's JetBrains Mono style with a dotted zero. Use Iosevka Term in terminals: the term spacing makes symbol widths suitable for terminal emulators. Ghostty and kitty both take one line: # ghostty config font-family = "Iosevka Term" # kitty.conf font_family Iosevka Term One caveat from the README: some software caps how many OpenType features it applies, so if a cv setting does nothing, that's the reason, and a custom build gets around it. Build your own Iosevka variant Easiest route: the web customizer generates the TOML for you. To build it yourself you need Node.js ≥ 18.0.0 and ttfautohint on your PATH: git clone --depth 1 https://github.com/be5invis/Iosevka.git cd Iosevka npm install # create private-build-plans.toml next to build-plans.toml, then: npm run build -- ttf::IosevkaCustom --jCmd=4 A plan that gives you JetBrains Mono shapes, a slashed zero and terminal spacing: [buildPlans.IosevkaCustom] family = "Iosevka Custom" spacing = "term" serifs = "sans" [buildPlans.IosevkaCustom.variants] inherits = "ss14" [buildPlans.IosevkaCustom.variants.design] zero = 'slashed' capital-i = 'serifed' [buildPlans.IosevkaCustom.widths.Normal] shape = 500 menu = 5 css = "normal" Two warnings from the docs. Each build job can use more than 1 GB of RAM at peak, which is why --jCmd is there. And if you list weights or widths, only what you list gets built. If you use kitty and want ligatures, add exportGlyphNames = true. If you want a little more room per glyph, shape is just a number in 1/1000 em, so try something like 540 instead of 500. None of the other three fonts give you that middle ground. So which is the best coding font in 2026? If you code full screen on a single big monitor, JetBrains Mono is still a great default and I won't try to talk you out of it. Fira Code is fine, but it's frozen. Cascadia Code ships with Windows Terminal, which is how most people end up using it. Once you split your editor, run tmux, or keep a terminal docked next to your code, Iosevka wins on the numbers: 20% more columns, 54 zeros to choose from, OFL-licensed, and still under active development. Give it a week before you judge it. What font are you coding in right now, and what would it take to make you switch? If you tried Iosevka and went back, tell me what broke for you. Sources - Iosevka site: typeof.net - Iosevka repo, README, build docs: be5invis/Iosevka - HN discussion: news.ycombinator.com - JetBrains Mono: jetbrains.com and JetBrains/JetBrainsMono - Fira Code: tonsky/FiraCode - Cascadia Code: microsoft/cascadia-code

Latest stargazers

The last 10 distinct accounts we observed this year.

Most active participants

PR, issue, comment & review events in the past year.

Packages

No packages found.

README badges

Embed a badge in your README or website.

  • microsoft/cascadia-code reached #1 in daily stars on gitwal · Sep 22, 2019
  • microsoft/cascadia-code reached #2 in weekly stars on gitwal · Week of Sep 16, 2019
Live mentions · last 30 days
microsoft/cascadia-code mentions in the last 30 days