Live data from Hacker News

Monaspace

monaspace.githubnext.com

161–170 of 206 posts

Re: Monaspace

#161
post #4

The "Texture Healing" feature is a really smart use of OpenType features to make problematic monospace combinations look much better without breaking the grid at all. One naive way to do this would be to create ligature pairs for difficult pairs (mi, lm, etc). But instead, they seem to be selecting character alternates that fill the fixed width differently based on their surroundings.

Commit Mono font does something similar and calls it “Smart kerning”. Visit https://commitmono.com/ and click on the “04 Intelligent” tab for details. In practice this is unusable. Because the width of the letters now depends on the succeeding character, the text jumps as you write it. Super annoying. Cool for reading. Awful for writing.

Could the “jump” problem be improved with a subtle transition (200ms, 1s, etc) from one state to the other?

If the editor “repaints” commit mono on the letter-pair boundary, I could see that being a very jumpy UX — ie: the letter I just typed is moving by a few pixels. But if that repaint happens on the word boundary it might be less noticeable?

In either case, a transition could be helpful for commit mono and/or Monaspace. (But agreed with above comments that Monaspace is more subtle because it spreads the spacing over the entire word, so maybe the transition is not actually percievable or worth it). :)

Re: Monaspace

#162
post #113

Earlier quoted context omitted.

So many people here are now praising texture healing, but to me its just half-way measure. Why are we as a community so resistant for adopting variable-width fonts? This texture healing already breaks perfect character cell grid, so in some ways it feels like worst of both worlds. I feel at least partially the same about fancy ligatures; we could just use the actual characters in source code, Unicode is widely suppor…

To build on to sibling chrismorgan's excellent post, fixed-width fonts/ASCII art/Unicode drawing are a really elegant way to get 80% of what you'd ever want. Getting to 100% involves a full-on rendering system and markup which is 10x the work and complexity. To date, most people don't want that in their editor.

Yet the most popular editor is vscode which is browser based and has all the rendering tech just sitting there, largely unused.

Re: Monaspace

#163
post #113

Earlier quoted context omitted.

So many people here are now praising texture healing, but to me its just half-way measure. Why are we as a community so resistant for adopting variable-width fonts? This texture healing already breaks perfect character cell grid, so in some ways it feels like worst of both worlds. I feel at least partially the same about fancy ligatures; we could just use the actual characters in source code, Unicode is widely suppor…

I hate ligatures in code. It sometimes breaks out of the grid, but there still is a grid. Things are sometimes not micro-aligned but still macro-aligned, and that matters (to me).

If two character combination breaking the grid is acceptable then is three character combos ok too? What about four characters, or twenty? Where do you draw the line?

Re: Monaspace

#164
post #111

Earlier quoted context omitted.

That's all I need to know about this font. There is no point in cranking out yet another code font that doesn't have hinting. PragmataPro and Berkeley Mono are such well loved fonts not because of their aesthetic quality (code fonts are (proudly) ugly), but because of how well their hinting has been done. If I want an unhinted, but well performing, font... there is Iosevka. Which I use.

If you're interested in a free, but carefully hinted coding font, my Luculent font [0][1] may be worth a look. The hinting is its defining feature, since I hate fuzzy font rendering. I wrote every line of TTF hinting code in it myself (no autohinting), and it is legible down to 5x11 pixel sized characters even if you disable antialiasing, so long as your font engine interprets the hints. [0] http://eastfarthing.com/l…

I've been using it for years, just want to say thank you, given the occasion.

Re: Monaspace

#165
post #11

Earlier quoted context omitted.

Hi! I worked on this at Next. Unfortunately, it's on the editor to support mixing fonts. There's never been multiple compatible monospaced fonts before so no editors really support this yet. Lots of editors also don't support variable typefaces properly yet (ahem, VS Code) but this is going to change. Ultimately what you're describing is the future! But we have to release the typefaces to bootstrap that future. We ma…

> so no editors really support this yet Emacs and Vim have both supported this since at least last century.

To expand on this, Emacs uses a system called "faces" to draw different textual elements, for example font-lock-comment-face to draw comments. Faces can have different attributes, like font family, foreground colour, background colour, having a box around it,...

So if I want to use a variable pitch font (like say... DejaVu Sans) to draw comments, I can set the font-lock-comment-face to use the "DejaVu Sans" family.

Re: Monaspace

#166

I'm bothered by the Rd symbol of Radon on the page, it's should be Rn. It makes me double-check if there's actually an element that's not Radium (Ra), not Radon (Rn), but also starts with an R and has a d in its name.

Rhodium, but that's Rh.

Re: Monaspace

#167

Seems like in modern times, on modern systems, we can move beyond monospaced fonts for code. I have recommended this many times here, but I use a proportional coding font: Input Sans https://input.djr.com

I would love to use a proportional font for coding but I am not aware of any Vim frontends that cleanly support it. I would be fine to stick with using monospace when using Vim over SSH but even though Neovim has opened the floodgates to frontends it seems that very few support proportional fonts (and the ones that do tend to be painfully slow to use).

Re: Monaspace

#169

Earlier quoted context omitted.

Commit Mono font does something similar and calls it “Smart kerning”. Visit https://commitmono.com/ and click on the “04 Intelligent” tab for details. In practice this is unusable. Because the width of the letters now depends on the succeeding character, the text jumps as you write it. Super annoying. Cool for reading. Awful for writing.

It doesn't in this font? Possibly because of what they talk about where it optimistically gives as much space as possible to succeeding glyphs. You can try it on the page; the code sample boxes are editable. I see no jumping when I type "calming", their example word. [append] Oh, I do see some jumping when I type "optimized". Honestly, it doesn't seem very jarring to me; the jumping is always right where the edit poi…

[deleted]

Re: Monaspace

#170
post #163

Earlier quoted context omitted.

I hate ligatures in code. It sometimes breaks out of the grid, but there still is a grid. Things are sometimes not micro-aligned but still macro-aligned, and that matters (to me).

If two character combination breaking the grid is acceptable then is three character combos ok too? What about four characters, or twenty? Where do you draw the line?

I draw the line at spaces, usually, because functionally there are usually spaces around where I care to have alignment.

But also, since I'm writing a character stream, I care about being able to see it as a monotonic stream of distinct characters (which is why I hate hate hate ligatures for e.g. "!=") and moving characters a tiny bit doesn't break that.

Post reply on HN