Recursive, a free variable font for code and UI, now on Google Fonts
fonts.google.com
fonts.google.com
There are four dimensions and a few other flags that the font can be adjusted by in CSS: natural-width to fixed-width, Linear to "Casual", Font weight, Font slant, and cursive variants.
By tweaking any of the variable font parameters it you can get anything in the range of a "serious" monospace font to a more casual font useful for UI mockups. I don't spend a huge amount of time in the font design world but this is one of the first variable fonts I've seen that feels less like a gimmicky demo and more like a seriously versatile tool, really great work!
As a designer, absolutely. The exact weight of a font can make a ton of difference in a finished product, and it's frequent to be frustrated that the font isn't available in the weight that would look right for the needs -- you need something in between semibold and bold, or something in between regular and condensed, or something oblique but not that oblique.
It's the difference between a design being good, and a design being beautifully "just right" with everything perfectly in proportion.
So for that, variable fonts are a godsend.
That being said, I've never seen a slider between proportional and monospace before. That's just weird. :)
If I want to show something that looks like code - like an HTML tag or something - at a heading size on a page or a poster, a proper monospaced coding font is going to look bad. Playing with the MONO slider on https://www.recursive.design/ for a string like '<blink />' does a good job of producing something that looks like code but isn't swamped with too much whitespace...
https://www.myfonts.com/fonts/linotype/neue-helvetica/
Also, Helvetica is popular in large part because of the very precise personality it has with is quite amenable to the image corporations often like to portray. It become widely available on computers, starting with Macs, because it was already such a useful font. Major corporations aren't choosing Helvetica simply because it's a default font on computers. And, of course, it's not like a majority of companies use Helvetica for their branding or anything -- it's a popular font, but where popular means maybe 3% or 5%, not 50%.
Helvetica was put on Macs because it was so popular as a useful font, rather than it becoming popular because it was on Macs.
Take two was Adobe's Multiple Master extension to Type 1. Technically this is still used by Adobe Acrobat to handle fallbacks for missing fonts, but as an end-user technology it was a failure, largely because of difficulties in being able to use the interpolated fonts—few applications allowed direct selection of interpolated designs and users had to generate them in ATM instead.
So now we have the third attempt, with better application support, which has some hope of success. For text type users, the appeal is the ability to finally regain optical scaling for type designs. Traditionally, as a type design was created at a smaller size, it would become relatively darker with less contrast. Perhaps the most dramatic example of this in everyday use is to compare the spindly appearance of "fake" small caps with the more robust appearance of properly designed small caps. So this is one case where, yes, we really do want this ability.
The HN audience loves to discuss the bloat in web design -- If you can reduce 500kb of font-<heavy, bold, italic, light> files into a single file that interpolates between font vectors dynamically, that goes a long way to avoiding excessive resources. And you also get the benefit of being able to tweak the parameters of each font style without changing out static files.
For example, with Recursive the entire static font family come in at 12.8mb, while the dynamic font family in a single file is 1.45mb. Obviously you wouldn't load up every variant and Recursive is a very large font, but I could certainly imagine replacing ~8-10 font files with a single variable font.
Generally with web design, you want to stick to a small number of font weights anyway so if the file size isn't smaller, what's the core motivation?
The key thing also is the number of web requests. This is not a trivial detail. One variable font can be less web requests.
Is the number of web requests a factor if you're using HTTP/2 though?
And yet no way to decrease the x-height. I'm sick of fonts where the lowercase is tall and the uppercase/ascenders are short.
It was a bit frustrating viewing this site on Firefox and not having any indication of why the settings weren't changing anything.
Of course, maybe that's because there hasn't been enough demand for it, and now that there is a font that's widely available which can use this, Firefox might finish enabling it (looks like there is a flag for it, but it's not enabled by default).
https://caniuse.com/#search=font-variation-settings
And I am running an ancient version of macOS, 10.12, which explains my issue, as it's only supported on macOS 10.13+ in Firefox.
I have a new (non-macOS) laptop in transit, but my current daily driver is an old Mac.
Sorry for the alarm!
Seems to work fine for me on Safari
So, the Recursive minisite has a configuration tool (under the “Get Recursive” button) that makes it easy to get Google Fonts embed code for all axes.
On the terminal, my favorite font is "Liberation Mono".
Some of the other good fonts are: Cascadia Code/Mono, Droid Sans Mono, Fira Code, Hack, Menlo, Source Code Pro, and Terminus. I just happen to like JetBrains Mono the most.
Wish the 'Recursive' font had a 'Slab-Serif' slider too, would've been interesting to compare.
Just love how they display in emacs gui on a 4k display.
[0] https://typeof.net/Iosevka/ [1] https://github.com/ryanoasis/nerd-fonts/tree/master/patched-...
Can you elaborate more on the technical side? Once you have your designs and sketches, how do you go about digitizing those and creating the actual font?
I don't think I'd use this for code, but I might for UI.
Edit: it seems that the variations are more code-oriented when you shift the code more "MONO" (based on experimentation on its website)
Il|i! and DO0Q
https://github.com/arrowtype/recursive#opentype-features
Also, there are fonts made specifically for code which have code ligatures & the simple l, f, 6, & 9 frozen in, if you like these features but don’t want to mess with OpenType features (or if your code editor doesn’t support that).
https://github.com/arrowtype/recursive/tree/main/fonts/rec_m...
[edit: Oh I see. It's not on the linked page but on the font's homepage.]
I used to default to "system font stack", but that was always because SF is such a great font. Defaulting to Ubuntu font on Ubuntu is... unfortunate. Luckily, Inter is fantastic, and it can be fantastic on every OS.
Different variable fonts use different variable “axes” – choosing what parameters can/should be variable is just another design decision in making a font.
there are fonts made specifically for code which have code ligatures & the simple l, f, 6, & 9 frozen in, if you like these features but don’t want to mess with OpenType features (or if your code editor doesn’t support that).
https://github.com/arrowtype/recursive/tree/main/fonts/rec_m....
The issue doesn’t occur in web browsers, as far as I know, as they support proportional type (include mostly-mono families with a few proportional glyphs).
Sadly, the version on https://www.recursive.design/ seems to include the symbol.
(spoiler: it's nothing to do with the font - it looks like it's actually a URL encoding glitch with the way the page manages the preview text - it can't round-trip a + symbol correctly)
That is often from the font renderer using an “even-odd rule” in vector rendering.
https://en.wikipedia.org/wiki/Even%E2%80%93odd_rule
What is your OS & browser version?
https://i.ibb.co/8sbMvL3/Screen-Shot-2020-07-23-at-6-49-52-P...
Recursive isn't the only font where this happens, but I did notice it for Recursive. I've also observed this on more than one computer, so it's not just my machine!
https://en.wikipedia.org/wiki/Even%E2%80%93odd_rule
What is your OS & OS version? This has generally gotten better over the past couple of years.
You can also use the static fonts, however, which don’t have vector overlaps, and Will therefore avoid this issue. In fact, it you were working on print design, it would probably still be better to use static fonts at this point.
It’s very impressive that they have managed to duplex the styles across all four dimensions. This is very difficult to do across a wide range of weights while keeping the whole family cohesive.
If you have a big negative slant, and auto cursive enabled, you get much more of a humanist sans-serif, versus a neo-grotesque without those parameters. That's a huge amount of character to build into one single font.
And the absolute max size for the font is 281kb, and a more pared down version is about 100kb. Yes, I know, you'll protest, page bloat! But if I wanted to use a non-variable font, each individual font would be around 20kb, so if I needed a pretty typical stack of 300-400-600 font weights, with matching italics, I'm looking at 120kb, with individual requests for each weight.
Another thing worth considering in a “page bloat” debate is that while a very extensive variable font is maybe 300 kb, that size is fairly average for a JPEG, but you can do far more with a variable font.
Well, even if it were legal to host it yourself, most won't do it, so Google still cashs in on the surveillance side.
The font definitely has the “+” symbol, along with many other math & currency glyphs (and many more).
Please check it out (and try the preview/tester) at:
The font has math symbols that render well. :-)
Please check out the font and try the preview/tester at:
1. If someone wants to contribute the work in a PR, or the funding for work, I would be happy to extend the character set.
2. The font sticks to the most common width for monospaced fonts, so many fonts that do include Cyrillic & Greek glyphs will work elegantly as fallbacks. I recommend IBM Plex Mono, for one free + open-source option that is particularly good. Or, of course, you could just use Plex for everything, and you wouldn’t be wrong.
Not a fan of those inktraps at heavier weights. If it's for UI and code, why does it need inktraps?
Of course, they are there just as much for aesthetics if the type is used at large sizes.