GitHub Monaspace Case Study

87 pointsposted 5 hours ago
by homebrewer

24 Comments

ben_pfaff

4 hours ago

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

2 hours ago

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.

endunless

4 hours ago

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

4 hours ago

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

3 hours ago

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.

asibahi

3 hours ago

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

2 hours ago

> Input is a proportional font.

it is also a monospaced font

pfortuny

2 hours ago

Honest question: does emacs (GUI) not support this?

actionfromafar

4 hours ago

Which editors?

endunless

3 hours ago

Given GitHub is owned by Microsoft, I think VS Code supporting mixing fonts in a buffer would be a good start!

sombragris

4 hours ago

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.

exceptione

4 hours ago

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.

kyle-rb

3 hours ago

Yeah, I think the italics compounds the problem in their comment example: // Notify aZZ Zisteners

sheiyei

4 hours ago

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)

ferd

2 hours ago

I really like Monaspace Argon, but even the narrower option looks too wide on my terminal (kitty on macos)

rezmason

5 hours ago

Were fonts always able to do "texture healing"? Has no one tried this before?

fontain

5 hours ago

“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

4 hours ago

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)

layer8

3 hours ago

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.

micampe

4 hours ago

There have been other attempts; Commit Mono uses a slightly different approach: https://commitmono.com/ (don’t know which came first)

keeganpoppen

5 hours ago

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.

satvikpendem

3 hours ago

I usually stick with Apple's SF Pro Mono but I'll have to try out this font.

keeganpoppen

5 hours ago

i do prefer neon and argon to the rest, though i see the place for all of them to exist