[HN Gopher] GitHub Monaspace Case Study
___________________________________________________________________
GitHub Monaspace Case Study
Author : homebrewer
Score : 104 points
Date : 2026-03-31 15:01 UTC (7 hours ago)
(HTM) web link (lettermatic.com)
(TXT) w3m dump (lettermatic.com)
| rezmason wrote:
| Were fonts always able to do "texture healing"? Has no one tried
| this before?
| fontain wrote:
| "Texture healing works by finding each pair of adjacent
| characters where one wants more space, and one has too much.
| Narrow characters are swapped for ones that cede some of their
| whitespace, and wider characters are swapped for ones that
| extend to the very edge of their box. This swapping is powered
| by an OpenType feature called "contextual alternates," which is
| widely supported by both operating systems and browser engines.
|
| Contextual alternates are normally used for certain scripts,
| like Arabic, where the shape of each glyph depends on the
| surrounding glyphs. And they are also used for cursive
| handwriting fonts where the stroke of the "pen" might have
| different connection points across letters. Texture healing is
| a novel application of this technology to code."
| dhosek wrote:
| Always able to do it? Yes. Even before OpenType alternates, the
| extended ligature support in TeX 3.x would have also allowed
| for this sort of thing.
|
| Why has no one tried it before? Because (a) nobody thought of
| it and (2) OpenType alternates, while they've been around for a
| while, have not always been supported in the sorts of programs
| that use monospace fonts (code editors and terminals)
| micampe wrote:
| There have been other attempts; Commit Mono uses a slightly
| different approach: https://commitmono.com/ (don't know which
| came first)
| makizar wrote:
| Over time I must have spent several dozen hours looking into
| fonts, but I somehow always end up sticking to Menlo which
| looks just right to me. But this one looks really good ! I
| will give it a spin, thanks for sharing.
| layer8 wrote:
| It really only makes sense on high-DPI displays (or large font
| sizes), which didn't used to be that wide-spread.
|
| Conversely, nobody seems to be doing pixel-based hinting
| anymore, which is why all newer fonts tend to look terrible at
| small font sizes on lower-DPI displays.
| keeganpoppen wrote:
| i do think that the type designers did incredible work with
| monaspace... i used to be an Operator-exclusive kind of guy (rip
| hoefler x frere-jones), but i genuinely think they did enough to
| completely displace it from my font lexicon, which is no mean
| feat.
| keeganpoppen wrote:
| i do prefer neon and argon to the rest, though i see the place
| for all of them to exist
| satvikpendem wrote:
| I usually stick with Apple's SF Pro Mono but I'll have to try
| out this font.
| evanjrowley wrote:
| I like the way the problem of "m" is solved by Ubuntu Mono:
| https://fonts.google.com/specimen/Ubuntu+Mono
|
| It's what I landed on after completing the Coding Font game
| submitted to HN yesterday:
| https://news.ycombinator.com/item?id=47575403
| endunless wrote:
| I do like these fonts, but DJR had this idea with the (excellent)
| Input family of fonts years ago:
|
| https://input.djr.com/
|
| A bit weird to not mention that.
|
| Unfortunately until editors start supporting this (and I'm not
| sure what would motivate them to), these remain great ideas only.
| sheiyei wrote:
| Input's method seems to be fundamentally very different to
| this. Monaspace keeps the grid intact and only changes the
| characters visually (situationally overlaps wide letters to
| neighbouring narrow characters' spaces). Input just pretends to
| be monospace in its aesthetics, I don't really understand
| what's supposed to be special with that.
| endunless wrote:
| Fair points on the technical implementation.
|
| I more meant the idea of using different fonts in the same
| buffer to represent different kinds of text.
| actionfromafar wrote:
| Which editors?
| endunless wrote:
| Given GitHub is owned by Microsoft, I think VS Code
| supporting mixing fonts in a buffer would be a good start!
| alwillis wrote:
| Yes, I configured VS Code to use Monaspace a while ago.
| asibahi wrote:
| Input is a proportional font.
|
| Monaspace is a monospace font that uses contextual
| alternatives: it changes how letters look depending on
| surrounding letters.
|
| They are nothing alike in their approach to this problem.
|
| (Also this is a marketing piece. Contextual alternatives is not
| a new tech.)
| naikrovek wrote:
| > Input is a proportional font.
|
| it is also a monospaced font
| asibahi wrote:
| Yes there is a version of Input that is a monospaced font
| and doesn't solve the problem tackled by Monaspace and the
| proportional version of Input and is therefore as relevant
| to this discussion as .. I dunno .. Courier New.
| pfortuny wrote:
| Honest question: does emacs (GUI) not support this?
| ramblurr wrote:
| Emacs totally supports this!
|
| Mixing monosoace and proportional fonts can be a little
| strange, but there are some 3rd party packages or guides
| (prot has one iirc) to workaround it.
| exceptione wrote:
| Very useful to mix and match various fonts based on semantics. I
| have a problem with Radon's l though, to me it reads like chumiZy
| and xenoZith. I don't understand how this could have slipped
| through, I can't be the only one being constantly confused.
| sheiyei wrote:
| I feel like that font is a real bad apple. The other ones are
| decent and I like the "texture healing" (but not its name)
| kyle-rb wrote:
| Yeah, I think the italics compounds the problem in their
| comment example: // Notify aZZ Zisteners
| ZeroGravitas wrote:
| A few people thought this, there's a GitHub ticket for it which
| they closed after they added a variant in v1.2 for a standard i
| and a loopy l that you can opt in to use.
|
| Can't quickly find a screenshot though you can use web dev
| tools to add font-feature-settings: "cv10" 1;
|
| To the interactive demo on https://monaspace.githubnext.com
| ben_pfaff wrote:
| I decided to try using proportional fonts for coding starting a
| year or two back. It worked out well and I stuck with it, because
| proportional text is easier for me to read on the whole, and
| because it allowed more characters to fit comfortably on each
| line on average. I did find after a while that occasionally the
| lack of alignment between characters on two subsequent lines was
| a problem, but then I configured my editor so that it showed
| comments and text strings in a monospace font and that fixed the
| problem for me.
| CharlesW wrote:
| This seems a great solution, and I'll definitely be trying it.
| I feel like monospace fonts are the Roman roads - horse ruts -
| rail gauge of our industry.
| asibahi wrote:
| I am curious, which editors allow different typefaces for
| different code elements? (XCode, I think, but what else?)
| alwillis wrote:
| I've been using Monaspace with Neovim for at least a year.
| alwillis wrote:
| Also terminal apps like Ghostty, Wezterm.
| ben_pfaff wrote:
| I use Emacs.
| bgrainger wrote:
| I first encountered this in Bjarne Stroustrup's 2000 book, _The
| C++ Programming Language_. As he notes in the introductory
| material:
|
| > In code examples, a proportional-width font is used for
| identifiers. ... At first glance, this presentation style will
| seem "unnatural" to programmers accustomed to seeing code in
| constant-width fonts. However, proportional-width fonts are
| generally regarded as better than constant-width fonts for
| presentation of text. Using a proportional-width font also
| allows me to present code with fewer illogical line breaks.
|
| I switched years ago and would never go back to monospace.
| efortis wrote:
| I edited a proportional for coding, I've been using it for 10
| years and it's great except for tabular alignment.
|
| So it would be nice if IDEs rich-rendered regions column
| aligned.
|
| eg, object literals in JS, in which space separator are as a
| wide as needed to align the values.
|
| JetBrains MPS has a decision table rendering for DSLs, which is
| similar to what I described.
| sombragris wrote:
| When I saw the Monaspace family linked in a HN frontpage some
| time ago, I installed the whole family, and now my terminal font
| is Monaspace Neon. I also type my LaTeX code in Monaspace Argon.
| They won me over Iosevka.
| ferd wrote:
| I really like Monaspace Argon, but even the narrower option looks
| too wide on my terminal (kitty on macos)
| ZeroGravitas wrote:
| Kitty has options to shrink the fonts:
| modify_font cell_width 95%
|
| But yes it seems weird that their variable font doesn't go
| narrower.
___________________________________________________________________
(page generated 2026-03-31 23:00 UTC)