7 ms·
Texture Healing for Monospace Fonts
- BaculumMeumEst 3y agothis looks really nice except 0's often look super weirdly fat and out of place
- notpushkin 3y agoI'm not sure if the name “Texture Healing” is descriptive enough (perhaps I'm not that much of a typography nerd I think I am!), but I love the idea. Basically it resolves pairs or triplets of monospace letters to make some of them wider when adjacent letter can be made narrower instead. Another variation on that theme are “duospace fonts”, like iA Writer Duo [1]. Those use two character widths instead of one (i.e. wide characters are always 1.5x wider than narrow). I think this could work for code, too. [1]: https://ia.net/topics/in-search-of-the-perfect-writing-font https://ia.net/topics/in-search-of-the-perfect-writing-font
- matj1 3y agoDuospace fonts are limitedly proportional, but still with no upsides of monospace fonts. Rather than that, I recommend something more proportional like iA Writer Quattro, Input Sans and Recursive Sans. https://input.djr.com/ https://input.djr.com/ https://www.recursive.design/ https://www.recursive.design/
- kevin_thibedeau 3y agoI'd call it dynamic monospace.
- agalunar 3y agoI've never heard "texture" used this way, although that's not saying much. My personal opinion would be that it's not the right word. I have heard the term “color” used in typography to describe the balance of positive and negative space on the page in phrases like “even (or uneven) color”. But although that feels closer, it also doesn't feel quite right in this case. It reminds me of the subtle changes in tracking and glyph width that some justification engines perform: “Most of the type set in the past five hundred years is justified type, and most of it has been justified line by line, by the simple expedient of altering the space between the words. There are, however, better ways. Scribes justify text as they write by introducing abbreviations and subtly altering the widths of letters. Gutenberg replicated the feat by cutting and casting a host of abbreviations and ligatures along with multiple versions of certain letters differing modestly in width. In the early 1990s, Peter Karow and Hermann Zapf devised a means of doing much the same in the digital medium[.] [...] Another thing computer software can do – because Karow taught it how – is justify text by making subtle alterations in the spaces within letters as well as those between letters and words.” The Elements of Typographic Style, fourth edition, by Robert Bringhurst, pp 191–192.
- dwringer 3y agoI think "texture" makes sense, if only by analogy to the calligraphic hand Textura, or the etymological derivation of "text" itself.
- xeonmc 3y agoIsn't this just kerning but with extra steps?
- gzalo 3y agoWith the difference that it keeps the font monospaced (in average), and usually kerning doesnt change shapes
- karaterobot 3y agoIt looks like it's also switching between variants of the same letter which are different widths, not just varying the space between characters.
- Dwedit 3y agoMonospaced Kerning would be a better name than "Texture Healing".
- porridgeraisin 3y agoSome MBA had a field day with this one.
- ska 3y agoIt's more partial or constrained kerning (you can't leave your "box"), and then on top of that glyphs are being scaled at the same time to take up space "left over". In a proportional font it would just be kerned and the overall "footprint" changes.
- starkparker 3y agoIt bothers way me more that the same glyph can differ within the same word than it satisfies me that the glyphs are very slightly more proportional. The third "m" in the "minimum" example being narrower than the "m"s adjacent to the two "i"s makes my brain itch. Same for the "i"s in "miniature". Makes me feel like I'm looking through a fish-eye lens, or that my glasses prescription is off.
- vinberdon 3y agoYeah... I hate this. Solves a "problem" for someone with a different type of OCD than mine.
- jay_kyburz 3y agoThis is a solution looking for a problem.
- cosmotic 3y agoThis is going to make a lot of brains itch.
- andix 3y agoMy brain seems to scan for differences to familiar patterns. For code that just doesn't look right. When I see stuff like this, it feels like finding a bug/typo. So a lot of false alarms. Maybe my brain would adjust after a while. And maybe I'm also different to other people. I think my reading skills are a bit skewed towards recognizing words/patterns instead of reading characters (probably some form of compensation for my dyslexia).
- mortenjorck 3y agoI think this all makes a lot more sense when seen in a practical context rather than the blown-up examples in the feature documentation. Take a look at the code editor examples on the main site for Github Monaspace: https://monaspace.githubnext.com https://monaspace.githubnext.com Scroll down to the "Five Fonts" section and try unchecking the texture healing toggle. The fisheye effect you get when looking at the font in 200pt goes away at 16pt, and in the context of a busy code block, has the effect of smoothing out the visual rhythm of the characters with only a minor disruption of the monospace grid. Perhaps it's not for everyone (it is a trade-off), but I think it's a smart compromise.
- graypegg 3y agoThe thing I'm curious to see is this font feature being used while typing. I feel like the characters kind of "jiggling" behind your cursor as you type is going to be kind of weird, no?
- mistercow 3y agoFrom testing out the monaspace fonts, it’s really not very noticeable. It only affects one character back, and they only do it for the really egregious cases, so during normal typing, you barely see it happening. That’s similar to normal ligatures e.g. ffi, where you typically don’t notice the swap.
- topspin 3y agoWe're at a point where the places that monospace prevails (code editors, obviously) have been festooned with so many other visual intrusions while typing that that additional jank the jiggling adds will be lost in the noise.
- ReleaseCandidat 3y agoYou see a bit of movement when writing "mimimimimi..." I don't know if I would have noticed that during "normal" editing. But I don't like the font, so no real tests ;)
- deleted 3y ago[deleted]
- kstrauser 3y agoI feel like this would drive me nuts when dealing with code, CSVs, or other kinds of data I'd commonly be viewing with a mono font. Two adjacent rows nearly identical rows might look more different than they really are, say because an "im" changed to an "wm" and the "m" is moving around. That's not to say it's bad at all, just that I think it wouldn't be right for how I'd mostly likely be using such a font.
- mewse-hn 3y agoI don't like how this article has no examples with a terminal window or a code window where monospace gives a nice grid layout to the text
- ReleaseCandidat 3y agoThe actual website has an (interactive) editor window: https://monaspace.githubnext.com/ https://monaspace.githubnext.com/
- ChrisArchitect 3y agoRelated: Might as well be in this thread on the Monaspace fonts https://news.ycombinator.com/item?id=38210574 https://news.ycombinator.com/item?id=38210574
- taosx 3y agoTried it but honestly I like Iosevka too much. I love to split my code into-multiple side-by-side windows and Iosevka is perfect.
- devit 3y agoIt seems to me the problem with that font is that the strokes are way too thick, making the "m" look like it's almost all ink, and it also seems that the lowercase characters are far too tall for their width. If you use a normal stroke width (one that makes the empty space in the "m" as wide as the stroke) and width/height ratio for all characters, the problem naturally disappears, and in fact this is not a problem for instance in Linux terminals with the default fonts (normally DejaVu Sans Mono), where the characters look perfectly natural and fine.
- andix 3y agoTried it here: https://monaspace.githubnext.com/ https://monaspace.githubnext.com/ It might be nice for reading code, but for editing code it feels weird that glyphs change their size while you type. Also readability wise I'm not convinced. In the example there is a combination like "_m_", in this case the lette m is much nicer to read. But then i typed "mml", which makes the two m's very different looking. Also the line number 10 on top of 11 looks weird.
- eichin 3y agoHuh, on a linux desktop the "own voice" example just seems to change height and weight and nothing else. (Still horrible, but it just looks like it's "breathing".) On mobile (android chrome), it looked like it was changing in more dimensions, I'd almost call it "writhing". I hope "reduced animation" turns this kind of thing off (but I couldn't find the setting in chrome at a quick look...)
- matj1 3y agoThat seems like Chromium is trying to do some hinting, which would ideally make the glyphs fit better to pixels, but it corrupts smooth transitions.
- sublinear 3y ago> It might be nice for reading code, but for editing code it feels weird that glyphs change their size while you type. Applying display typography techniques to code is an objectively bad idea for both reading and writing. They even enable ligatures by default on the demo which is far worse. For those of us who actually have to get work done and not just fetishize code and fawn over aesthetics, it's a fundamental requirement that every single character be as unambiguous and consistent as possible.
- andix 3y agoI get my work done with ligatures. That's fine for me.
- 3y ago
- Hansenq 3y agoI tried out Monaspace but felt that the fonts were a bit thin for my QHD monitor I use as my primary display. It might be better on a retina/4k monitor though. Perhaps fonts are something you get used to after some time using it, but I ended up switching back to my favorite font, Input Mono (which, as a coding font, isn't actually monospace, so it brings a bunch of cool features and doesn't need to do texture healing). https://input.djr.com/info/ https://input.djr.com/info/
- Kuinox 3y agoMonospace can be parameterized, you can just make the font weight larger.
- toxik 3y agoGood tip! I might try this variable width idea. Seems a bit out there.
- anderskaseorg 3y agoInput Mono is actually monospace. Input Sans and Input Serif are the ones that aren’t (merely monospace-inspired).
- hawski 3y agoIt is impressive and interesting, but I would suggest just using proportional fonts and stop caring about alignment.
- dkarras 3y ago>and stop caring about alignment. absolutely impossible for me, so perhaps it has a use for likeminded folks.
- beeforpork 3y agoHmm -- I do not understand what is the use case for this. For best design, clearly, I'd use a proportional font. So whenever I want a monospace font, there are reasons that exclude proportional fonts. An obvious reason would be a grid that the letters need to be arranged in (for whatever reason). But then, I can only imagine that any smart rearrangement of letters out of their grid box will be unwanted, because it interfere with that grid. Instead, stupidly simple letter placement will be what I want. I have an idea for an advanced technique that yields much better visual appearance (but that is also not want you'd want, for the same reasons): instead of just focussing on pairs of letters (so primitive!), consider whole words and optimise their letters' shape, width, and horizontal position, but keep the size of box of the word. I call that 'equilibrium texture healing'.
- heisenzombie 3y agoIn this technique the letters do not leave their grid box. A wide letter next to a narrow letter will at most push hard up against the edge of its box (usually there has to be white space there so that, e.g. mm doesn’t become one glyph)
- finnh 3y agoThe text states that, but then in the Healing Examples section [0], the "m" in "filming" clearly spills over its left border line. Is that just a poorly drawn/incorrect example graphic? [0] https://github.com/githubnext/monaspace/blob/main/docs/Texture%20Healing.md#healing-examples https://github.com/githubnext/monaspace/blob/main/docs/Textu...
- ec109685 3y agoIt still makes lines with N characters take up the same amount of space, honoring the fundamental characteristic of monotype.
- ska 3y agoIt seems to be a weird mix of half-assed kerning and scaling mixed together. Perceptually, based only on playing with it a minute, it seems to improve legibility a bit (but not as much as a proportional font would be) but also visually breaks the alignment a little sometimes. Not sure it's a worthwhile overall, but interesting.
- TheCleric 3y agoShould have used the name “Textual Healing”.
- naet 3y agoSeeing the exact same character in a single word having two different sizes is way more infuriating to me than a classic monospaced font having "wide" i and "narrow" m. Maybe I'd get used to it over time but right now my eyes get hung up on the differences.
- timeon 3y agoThis is how I feel about English language where every 'e' in Mercedes is different.
- virtualritz 3y agoThis is great as it improves glyph/bg contrast when possible (i.e. readability of individual glyphs) and it makes the text's texture look more uniform (hence the name). Things people here seem to misunderstand: 1. The grid is not affected. The resp. letters stay within their grid-aligned bounding boxes. 2. Letters may change while you type but this is not noticeable in practice. I have a 3.2x2k 15" screen on my laptop. At my editor's effective font size of around 20px (capital letters, from baseline to top) the change in shape is about a pixel for something like the letter 'm'. Caveat: I'm an ex-typographer. As such I not only do care way more about these things than the average engineer. I'm also more aware that these things do have an effect on eye/brain/visual system strain that is possibly very hard to quantify. But legibility of a text is a thing. And the font with its properties is one very important factor (font width/kerning/line height are equally important in that regard -- nevertheless). Edit: typos
- deleted 3y ago[deleted]
- galaxyLogic 3y agoI think monospace is good for code. It allows me to write two lines of code perhaps one commented out, and easily see which characters are different in which position. So it's not only readability, but also "comparability".
- joveian 3y agoI've been really enjoying Intel One Mono which seems to solve this by adding more space around most characters (two extra pixels per side at the size I like, about 17px capital letter top to bottom if I counted right) except the m and w (I think, I didn't check everything; they still get one pixel on each side). It also has a low x-height and tall line height and doesn't even try to work at small font sizes but it looks really nice if you make it big enough. Comparing with my previous favorite DejaVu Sans Mono (aka Bitstream Vera Sans Mono) it seems like all the extra space visually evens out the letters and it works well without this kind of adjustment.
- deaddodo 3y ago> 1. The grid is not affected. The resp. letters stay within their grid-aligned bounding boxes. Their own examples literally show that this isn't the case. Just look at the "filming" example, with the "m". In addition, their five fonts showcase shows that letters that "need space" can overbound. I think it's accurate to say that a word respects it's bounding box, but interior glyphs don't necessarily. Unless their own examples are somehow misrepresentative.
- replete 3y agoThe value here is to improve legibility of body copy, e.g. code, not headlines, where optical spacing rules change, so the example choice is odd. This definitely makes sense for programming, I would like to see this in Jet Brains Mono.
- a1o 3y agoI prefer being able to quickly recognize the specific characters and this would drive me nuts in a diff where same character can change. I am not a fan of this for coding.
- stuaxo 3y agoI wonder if this could help the VGA like font in dosemu2. It uses SDF and looks good, just not quite angular enough at bigger zooms for me.
- seanhunter 3y agoWow I didn't think I would but I really hate this. Not having the glyph of a specific letter always align with itself vertically in a monospace font is just horrendous. It's so unpleasant for me to look at it makes the whole horizontal spacing thing moot.
- LispSporks22 3y agoPlease make all the digit glyphs the same width. It’s so retarded to see a (eg.) percent complete message jump around horizontally because it went from 11 to 12. I swear it’s a recent phenomena too… bar humbug.
- mrjin 3y agoDoesn't it defeat the purpose? If someone really wants this behavior, then why use monospace fonts in the first place?
- sublinear 3y agoMakes sense that an entity as powerful as Github would like to make programming even more error prone than it already is. Gotta get that money!