
JetBrains Mono: A free and open-source typeface for developers - nizmow
https://www.jetbrains.com/lp/mono/
======
nkrisc
I was disappointed that despite presenting the cookie banner as if it were a
terminal, the options did not accept keyboard input

    
    
        [Y]es, I agree    [N]o, thanks
    

Ok on topic: I'm never sure what to think of these "developer" fonts that make
use of ligatures for combinations like ==, >=, ->, =>, etc. On one hand they
do look really nice, but I always can't help but feel it would actually make
things just a little bit harder to scan and parse quickly.

I do find it a very pleasing font to read, however.

~~~
ebg13
Same. Any font that claims to be for programming but includes ligatures gets a
"no thanks" from me accompanied by a bit of sadness because they often mar
otherwise nicely designed typefaces.

~~~
IAmEveryone
You really don’t have to use the ligatures, do you?

~~~
ScottFree
I don't know about other programs, but iTerm has a checkbox option to
enable/disable ligatures.

~~~
ShowMeWhatUGot
So does JetBrains IDE's and VS Code. I don't know of any program that forces
you to use ligatures just because the typeface supports it.

~~~
vblinden
Visual Studio (the full blown IDE)

~~~
evansj
Add to settings.json:

    
    
        "editor.fontLigatures": false
    

(Edit: sorry, just realised you were talking about the full blown Visual
Studio, not VSCode)

------
crazygringo
I always applaud efforts at new typefaces, but unfortunately I feel this is a
badly designed typeface that is _worse_ for legibility, not better. Addressing
their three main points in turn:

> _1\. Increased height for a better reading experience_

A high x-height is good for coding fonts, but this x-height is now _too_ high.
To my eye, this is now at the point where lowercase letters are getting
_harder to distinguish_ from uppercase letters at a glance, so instead of
increasing legibility it's actually decreasing it now. There's a good reason
most other coding fonts haven't gone _this_ high.

> _2\. The shape of ovals approaches that of rectangular symbols._

Again, this is a problem because it makes letterforms _harder_ to distinguish.
It's important that the right side of a "b" look very different from an "h"...
but if you make the right side of the "b" very straight, they look more
similar. The whole point of letterforms is to be easy to _differentiate_ from
each other, not to make them more similar.

> _3\. JetBrains Mono’s typeface forms are simple and free from unnecessary
> details... The easier the forms, the faster the eye perceives them and the
> less effort the brain needs to process them._

Again, this is just factually false, or else all books would be printed in
sans-serif body text instead of serif. The main reason serif fonts are used is
that all their extra "details" make reading _easier_ , not harder -- because
the eye has more clues to differentiate letters. Now because of resolutions of
screens, sans-serif is still sometimes a better choice on computer screens,
but this makes distinctiveness of letterforms even _more_ important, not less.

For example, they choose a single-story instead of double-story lowercase "g",
which is just harder for the eye to distinguish from a "q". Getting rid of the
stem on a "u" also makes it less distinguishable, and harder to read. And so
on.

I'm genuinely confused as to how the philosophy for this typeface was
developed, when it seems to go directly against basic established principles
of legibility.

~~~
1kGarand
Over the last 10-15 years or so, I’ve tried so many of these new fonts but
always just end up back to DejaVu Sans Mono Bold. Now that my eyes are getting
older, it works even better.

On a Mac, Menlo looks nearly identical.

~~~
GordonS
I'm the same, except I stick with Consolas, rather than DejaVu.

But it almost feels like trying out new fonts is busywork...

~~~
leokennis
Consolas is (for me) one of those rare fonts that I find better in every
aspect than any of its competitors.

------
Ayesh
We should take a lesson from the FAQ about license. It is the simplest yet
most useful one I have seen!

\--

May I install JetBrains Mono on my system and use it in any code editor? ->
YES.

May I make and print a poster with JetBrains Mono? -> YES.

May I use JetBrains Mono in my logotype? -> YES.

May I use JetBrains Mono on my website? -> YES.

May I use JetBrains Mono in my applications? -> YES.

May I design my own font based on JetBrains Mono? -> YES. In this case, you
need to indicate that it is based on JetBrains Mono.

\---

Font licensing is not what we developers are used to, but they have done a
fine job pointing this out in simple terms.

~~~
RobertRoberts
IANAL - I am pretty certain you can do most of those things with all fonts
regardless of license. Copyrights on fonts is almost non-existent. The only
thing copyrightable is the actual "code" used in the font. (maybe delivering
their files on a website is an issue?)

This is based on research I did years ago when dealing with a copyright legal
case where I worked. The summation is that you can't copyright the alphabet,
so fonts aren't copyrightable.

The only one I completely disagree with is the last one though. Requiring
attribution for something not copyrightable is kinda silly.

~~~
marcus_holmes
That's interesting. Because most fonts are protected by a copyright-based
license, that they don't seem to have any trouble enforcing.

How extensive was your research?

~~~
NoGravitas
The actual code of a font (ttf, otf, whatever) _is_ copyrightable. The _shape_
of a font isn't, and AFAIK it isn't protectable by any form of IP. This means
that while you can't redistribute or embed the TTF you got from a type foundry
except as specified by the license, you _are_ free to use it to create a near-
perfect knock-off that doesn't share any code. This is where the fonts on all
of those "Free Fonts" websites come from.

~~~
marcus_holmes
Thanks, that's useful information

------
dtertman
Thanks, I hate it. My most recent update of IntelliJ turned this font on by
default and I had to spend an hour trying to figure out what the font used to
be.

Mono looked squished to me - the intentional favoring of length over width
made the whole editor look like I had an aspect ratio problem on my monitor. I
appreciate trying to push the envelope and improve ergonomics, but I wish this
would have been opt-in for upgraders.

~~~
dlanouette
Interesting. It didn't do that for me. But, I had already specifically set my
font. So, maybe it changed the previous default to this new font.

~~~
dtertman
Easy to believe this is true - I hadn't set a preference before, the old
default was fine.

------
athenot
This is a great-looking font, very well put together and a lot of thought put
in to make it great for code.

That being said, fonts are very personal.

I compared it to PT Mono (Public Type, another open-source font) and have
these observations:

\- Ligatures in JB are beautiful. I'm still undecided whether I like them in
my code but the aesthetic value is pleasing.

\- Weight of JB Regular is heavier than PT.

\- Italics are well designed.

\- Character spacing is too wide. Words (eg. for identifiers) loose some of
their shape and look more like a stream of disjoint characters. Subtle but
going back and forth between the 2 fonts, this is the first thing that jumped
out. That being said, this would probably benefit code that's rich in symbol
characters.

All in all, I'm glad this font exists, it is beautiful. But for my own use, I
will stick with my trusty PT Mono.

~~~
LoSboccacc
> Words (eg. for identifiers) loose some of their shape

yeah this is what I noticed as well from samples and testing out on my code,
same reason I'm not keen on Fira but prefer Consolas, letters are less regular
and words have a different rhythm at a glance.

~~~
squaresmile
I have the same experience with Fira Mono and Consolas. Interestingly, I quite
enjoy Fira Sans, setting it as my phone's main font and Chrome's sans-serif
font (had to change HN's CSS to change its comment font).

The "sleekness" of Fira Sans feels pleasant but for monospace font, I prefer
the "fullness" of Consolas. Maybe it's because I read code slower than I read
Internet text.

------
AlanYx
It looks like this has the largest x-height of any typeface meant for
developers (larger than even Fira Code).

While there is research suggesting a large x-height increases readability, I'm
wondering whether this doesn't push the x-height just a little too far.
CamelCase words no longer stand out visually very easily -- I'm not sure how I
feel about that.

~~~
raihansaputra
Interesting point. Currently trying it out, and the x-height thing matters,
similar to another feedback in this thread that says words become disjointed
glyphs instead of a "shape". I'll keep this for the moment. Looks much cleaner
than Fira Code, but will have to see on the readability side.

Another point: not only they have increased the x-height, they also reduced
the descender-height (for j,q,p,y) by a lot. I have trouble with function
definitions such as post/put/patch or even keywords as response/reject.

~~~
raihansaputra
If any of you are keeping score or reading through this now, I currently use
Input as my main font [0]. Non-monospace is certainly unorthodox, but they do
have monospace fonts anyway (and I have to use it with the vscode internal
terminal). Input plays much better with lower dpi (90-112) screens with small
font sizes (12px font size with -1 zoom on vscode). It looks good too on my
Retina screen.

[0]: [https://input.fontbureau.com/info/](https://input.fontbureau.com/info/)

------
rbanffy
Airbus developed a font to be used in their avionics displays called B612. I
don't find the results particularly pleasing, but the intended use (cockpit
instrumentation) is not part of my day-to-day life.

[https://b612-font.com/](https://b612-font.com/)

------
eric_cc
I spent more time than I'd like to admit reviewing fonts for legibility and
aesthetics. So if you're looking for a new favorite font, hope this helps:

1\. IBM Plex Mono

2\. Office Code Pro

3\. Fira Code

4\. Inconsolata

5\. PT Mono

6\. SF Mono

7\. Input Mono

8\. Hack

9\. DejaVu Sans Mono - Bront

10\. Anonymous Pro

~~~
Ayesh
It certainly does. Thank you.

------
ar-nelson
I like it, this might finally be the font that gets me to drop Fira Code. It's
missing Powerline symbols, though, which is a strange omission for a developer
font in 2020.

~~~
prashnts
You could grab a patched copy here:
[https://www.nerdfonts.com/](https://www.nerdfonts.com/)

Aside, I wish some ligature magic for box drawing characters existed. Or at
least don’t skip those glyphs, which is unfortunately the case with many
monospace fonts.

~~~
ar-nelson
NerdFonts doesn't have it yet, but I managed to patch it myself using their
tool[1]. Seems to have worked without any issues.

[1]: [https://github.com/ryanoasis/nerd-fonts#option-8-patch-
your-...](https://github.com/ryanoasis/nerd-fonts#option-8-patch-your-own-
font)

------
prashnts
Great to see that they’ve attributed Nikita Prokopov, the creator of FiraCode.
While not the first, he expanded the ligatures in Hack, and Hasklig fonts and
Jetbrains eventually bundled Firacode in their products.

Quite a nice course of open source development over the years (I have been
following the updates since ~2016).

~~~
iLemming
You know that @tonsky works for them now, right?

~~~
prashnts
Nope, didn’t. Ah well, good for him regardless.

------
jfengel
Is there a reason why the stroke narrows where a curve joins a line (the loops
of the p and g, the top of the n and the bottom of the a, etc)? The Consolas
font uses a consistent stroke weight; the Fira and Source Code Pro thin the
line a bit but much less. It's so narrow I feel like it might render strangely
at sufficiently low resolutions; it risks breaking the connection.

Presumably there's a readability reason, but I have no idea. I don't have an
opinion one way or the other; I'm just curious.

~~~
Philipp_n
It makes the oval more pronounced at small sizes like 12px.

~~~
jfengel
Makes sense. Thanks.

------
bitwize
Nice try, JetBrains, but it will take more than that to tear me away from the
Atari ST 8x16 system font.

------
rbanffy
I love the spacing-related ligatures. Having said that, I have mostly the same
complains @crazygringo has. I'll continue to use my old 3270 font. It's clean
and easy to read and, best of all, reminds me of a more civilized age.

------
memco
Nice font. I think it’s a bit sad that the only difference between zero and
the letter O is the center dot: usually other fonts make the O slightly more
round. This one is squarish.

The site design is nice but I found it a bit odd that they didn’t include many
of the similar character like O, 0, 1, l, I. That is one of the first things I
look for and one of the primary reasons I would choose a new font.

~~~
xixixao
They do include both sets (0, o and 1, l, I). That said I absolutely agree
that this is far from the best approach to 0 and o.

~~~
memco
Sorry I worded my comment poorly. I meant that the code examples at the top
don’t seem to prioritize showing those distinctions. If you scroll down they
have a separate section but I think it would be nice to showcase all the
features on the first samples so that you can see right away how it looks.

------
vishwajeetv
Not sure if this is good. They have increased the character height for
readability, although I think this will cause more confusion and decrease
readability. Adobe's Source code pro has worked for me very well.

------
beefhash
Can I have _only_ the ligatures that balance whitespace and skip the symbol
merging?

~~~
Philipp_n
Sorry, right now it's not implemented. You can create a feature request in
[https://youtrack.jetbrains.com](https://youtrack.jetbrains.com) or on
[https://github.com/JetBrains/JetBrainsMono](https://github.com/JetBrains/JetBrainsMono)

------
graycrow
It is an odd decision not to include Ukrainian in the list of supported
languages, despite the fact that the font has all the necessary letters.

~~~
topka
Ukrainian and a couple of other languages were missed on the list. It's a
known issue we're updating on the site right now. Thanks!

------
nojvek
Set as default code on VSCode for an hour and try to code in JetBrains Mono. I
kind of found it to hard to read. Reverted back to "Monaco". Really hard to
beat Monaco (I'm probably biased, my eyes and brains are very used to it).

------
holtalanm
I'll stick with DejaVu Sans Mono, thanks.

~~~
bmn__
"143 languages", says the homepage. That's an attempt to take us for a ride.
JB Mono does not actually cover very much, see table below. We should stick
with DejaVu Sans Mono so that multilingual text does not look like glyph
salad.

\----

fontforge → Element → Font properties… → Unicode Ranges

Non-Unicode Glyphs 159/0

Unassigned Code Points U+0000-U+11FFFF 2/0

Basic Multilingual Plane U+0000-U+FFFF 481/61780

C0 Control Characters U+0000-U+001F 2/0

Basic Latin U+0020-U+007E 95/95

Latin-1 Supplement U+00A0-U+00FF 94/96

Latin Extended-A U+0100-U+017F 128/128

Latin Extended-B U+0180-U+024F 6/208

Spacing Modifier Letters U+02B0-U+02FF 9/80

Greek and Coptic U+0370-U+03FF 2/135

Cyrillic U+0400-U+04FF 94/256

Latin Extended Additional U+1E00-U+1EFF 6/256

General Punctuation U+2000-U+206F 16/111

Superscripts and Subscripts U+2070-U+209F 7/42

Currency Symbols U+20A0-U+20CF 1/32

Letterlike Symbols U+2100-U+214F 5/80

Mathematical Operators U+2200-U+22FF 14/256

Geometric Shapes U+25A0-U+25FF 1/96

Alphabetic Presentation Forms U+FB00-U+FB4F 2/58

Latin Ligatures U+FB00-U+FB06 2/7

------
myfonj
I'm quite surprised no serious "programming font" to this days didn't come
with something improving camelCase readability: making ligature for each
lowerUPPER combination with slightly wider center gap and narrower first
character (so that sum was still in monospace grid) would FMPoW tremendously
boost readability and would be remedy for camelCase haters.

I've searched for it lately and the only what resembled this was interesting
POC of "mixed" (semi-proportional monospaced) font [1], but with simple
kerning pairs, not ligatures, but with extra trickery for "uppercase prefixes"
(`_UUUl... `→`_UU·Ul...`). I wonder if in-word camelcase boundaries would be
doable as well, so that `decodeURIComponent` would be rendered as
`decode·URI·Component`.

[1]
[https://twitter.com/Tricertops/status/951551714078941185](https://twitter.com/Tricertops/status/951551714078941185)

~~~
runxel
> I wonder if in-word camelcase boundaries would be doable as well

Theoretically yes. But in practice most possibly no. OpenType tables just
feature fixed length strings matching. It can't match to more powerful regular
expressions. You would need an infinite number of OT rules. [0] If you'd have
a well defined set, maybe it could work, but it would still be overwhelming
fast.

[0]
[http://pfaedit.sourceforge.net/gposgsub.html](http://pfaedit.sourceforge.net/gposgsub.html)

------
tomerbd
A few weeks ago I was looking for some good font for my terminal and figured
out my intellij looks good so why dont i use the font I use in java intellij
in terminal so - installed intellij mono on terminal and found it to be great,
interesting to see they now opensource it and the coincidence ! :) I really
like it both for coding and for terminal.

------
w3bshark
Ok I tried out the font. It’s actually more difficult to read than Fira Code.
YMMV.

To me, everything is too thick and crammed together compared to Fira. It just
feels like the font wasn't designed with enough letter spacing. I think you
can manually control this in IntelliJ products, but the default spacing seems
too crammed.

------
Syzygies
To install in VS Code, one edits Settings - Commonly Used - Editor: Font
Family.

It would appear that one needs the Font Family name, which one can guess. To
be sure in all cases, I made a MacOS alias:

    
    
      alias fonts="system_profiler SPFontsDataType | grep 'Family:' | perl -pe 's|^.*Family: ||' | sort -u"
    

However, how does one select weights, such as defaulting to

    
    
      JetBrains Mono Medium
    

It turns out that one can enter a raw font file name in place of the family,
such as

    
    
      JetBrainsMono-Medium
    

However, any formatting that selects a different style, such as italics, will
default to the family. So for example, italic comments are rendered for me in
regular not medium weight. I'm fine with this, but it's a quirk that can only
be fixed by spelunking into the individual syntax highlighting files.

------
aluenakyla
This opinion seems to buck the trend here but I really like this a lot. I've
just now dropped it in as a replacement font to what I was using before for
sharing code snippets on my personal blog (was just using monospace before)
and for me it's a huge improvement in both readability and just overall looks.
The only thing I've noticed is that parentheses look a little weird with this
font. They are a little too squared off, particularly noticeable in cases
where they are used immediately together like this ().

------
bluedino
Uppercase 'G' looks very odd to me. Lowercase 'u' looks liek a 'v' at a quick
glance. The height of the crossbar in the uppercase 'A' is too high. The
numeric characters look big and out of place.

Disclaimer: my _current_ font of choice is Camingo Code -
[https://www.janfromm.de/typefaces/camingomono/camingocode/](https://www.janfromm.de/typefaces/camingomono/camingocode/)

------
MikeTheGreat
Serious question: Is it possible to turn ligatures on, but deactivate them for
only some of the combinations?

Specifically, I want to see =, ==, and === 'as written', meaning 1, 2, or 3
separate characters. Pretty much the rest of them (like <=, or even !=) seem
like they're either nice immediately or else I could get used to them.

I'd love to know if this is possible at all, possible for some editors / fonts
/ OS's, etc, or just a non-starter of an idea.

~~~
Ayesh
I don't think it's possible from IDE configuration: there is only a single
toggle for ligatures. The font is open source - may be you can build you own
without the ligatures you don't need?

------
alexeiz
Regarding fonts, there is no single monospace font that fits the bill
everywhere. A font may render beautifully or look completely unacceptable
depending on a variety of factors. I personally prefer the following fonts:

* Linux, normal dpi: Hasklig in editors (Emacs, Atom), Iosevka in terminal

* Linux, hidpi: Input in editors and terminal

* Windows, hidpi: Input in console, Fira Code in Atom

I tried the JetBrains Mono font and it doesn't look like it's an improvement
in any of my environments.

------
alexk7
I prefer to use size 10 on my coding font. Just tried it in Visual Studio and
it looks really bad with uneven lines, mostly on upper case letters.

------
d1egoaz
nice font and oss, however I still prefer Iosevka SS04

~~~
vz8
Agreed. After Iosevka, other fonts have felt ... unwieldy.

Link for reference:
[https://github.com/be5invis/Iosevka](https://github.com/be5invis/Iosevka)

Re: "SS04" d1egoaz is referencing Stylistic Set 04, illustrated here:
[https://raw.githubusercontent.com/be5invis/Iosevka/master/im...](https://raw.githubusercontent.com/be5invis/Iosevka/master/images/stylesets.png)

In addition to the original version of the font above, there is a patched
version with powerline icons (and much more) built in:
[https://github.com/ryanoasis/nerd-
fonts/tree/master/patched-...](https://github.com/ryanoasis/nerd-
fonts/tree/master/patched-fonts/Iosevka) which is very handy for emacs/vim
modelines.

~~~
indemnity
For me, it's the fact that I can create a custom build of Iosevka with
preferred weights that look good in the different font rendering systems:
Native macOS, Electron (VS Code), Java (IntelliJ).

All need different weights to end up looking about the same on the same
system.

And then being able to turn on/off ligatures, tweak some glyphs.

It's hard to give that up.

------
tracker1
Need to check it out, I think my only concern that may be missing or il-formed
would be box and line drawing characters... So many fixed-width fonts get this
wrong... Inconsolata, for example has taken a number of revisions to support
these characters properly.

I will say, I do like a few of the changes, but not sure if I'll be switching
from Inconsolata/Consolas any time soon.

~~~
raphlinus
Thanks! I recently rewrote the box drawing character generation (in Rust) to
support variable fonts, so outputs a very wide range of widths and weights.

------
thiht
The slide comparison with Consolas might not be a good idea, Consolas looks
_much_ easier on the eye, and it happens to be my all-time favorite monospace
font.

Some ligatures are also really weird and look like a case of "we could do it
so we did it". ===, ~@, #_(, etc. are highly unreadable and unnecesary.
Spacing ligatures are great though.

------
bradenb
I've installed it and will try it out for a while. My immediate reaction is
that it looks nice. Very nice in VS Code, but oddly it has some funky issues
in Visual Studio 2019 (particularly with lowercase 'a') at 100% zoom and font
size 11 on my monitor. Not sure if it's an aliasing or TrueType issue.

~~~
Philipp_n
Sounds interesting. Can you send me the screenshot?

------
pdeva1
on the comparison with Consolas section, it says consolas is wider than
JBMono, and JBMono is taller. However, the lines of code in the example run
longer in the JBMono version than Consolas. Why is that? is the comparison
flawed?

------
otterpro
For some reason, it isn't registered as a mono-spaced font on Windows 10 when
I installed it. Thus some editors as well as CMD and powershell can't even
open the font. However, I can use this font from MS Word.

------
chimen
Courier 10 Pitch - that's the best font for me. I activated this one and it
seems like letters are not "aligned" correctly. I'm sure it's just a feeling
but I can;t move away from Courier it seems

------
ryoppippi
I applied a patch for powerline! If you want this, use it!
[https://github.com/ryoppippi/JetBrainsMono](https://github.com/ryoppippi/JetBrainsMono)

------
mtm7
This looks really nice. I usually use SF Mono with Fira Code’s ligatures, but
I’m going to try this today and see how it does.

Great job on the simple license, too. I wish more fonts had a license like
this.

------
pbowyer
Can I control which weight is used in JetBrains IDEs for "bold" text? It looks
to be using the bold font weight, when I'd prefer to use medium.

~~~
nolok
For multi-weight font they shows up as different font in the list. Fire Code
light, Fire Code medium, ...

~~~
pbowyer
They do in Settings > Editor > Font, but AFAICT I can't control more than the
main editor font.

For example: Settings > Editor > Code Style > Style Sheets > CSS <\-- no way
to control the font weight used for bold-rendered property values

------
ubercow13
In their 'comparison' with Consolas, they say Consolas is wider but the image
clearly shows that Consolas is narrower than their font at 13pt...

------
davalapar
Hmmm I got bad eyes that makes me hate consolas, looks like a good contender
to operator mono, will give this one a shot.

------
mangatmodi
I don't know if it is my habit or what, but the font is wider and bolder than
what I had before - Victor Mono.

------
asdfasgasdgasdg
I kinda like it! Definitely gonna try it out for a few days and see how we go.
Thanks for putting this out there.

------
gabrielbauman
As a Fira Code user, I like the look of JetBrains Mono - but I'll wait for a
"light" weight.

------
moogly
Sorry, JetBrains, but I can't stand ligatures in coding fonts.

------
paulie_a
Why do developers get all giddy about a new type face for their editor. Is
there something lacking in the millions that already exist? Does it make you
produce less bugs, better code? I don't get it

------
iliyangermanov
That's cool! Gotta try it. Thanks for sharing :)

------
michaelmcdonald
Looks like their site is having some issues

------
mstdokumaci
supports 143 languages but not turkish, because adding the letter "ı" must be
super hard.

------
moralsupply
I still prefer mplus 2m

------
thrower123
I've never understood the obsession and bikeshedding over fonts. I can
appreciate that there are people who spend a huge amount of time agonizing
over the details and tradeoffs making these things, but... Arial, Times New
Roman and Consolas are more than good enough for my purposes.

~~~
royjacobs
This could be an indication that you are not the target audience.

