# Recommendation for a font with good Unicode support?

**URL:** <https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885>\
**Category:** Offtopic\
**Tags:** fonts\
**Created:** [May 21, 2020, 3:21pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885 "2020-05-21T15:21:06Z")\
**Posts on this page:** 19\
**Page:** 1

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 21, 2020, 3:21pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/1 "2020-05-21T15:21:06Z")

</div>

What are some good fonts for writing Julia code?

In particular, does anyone know a font with good support for combining characters on greek letters? The default fonts in Ubuntu perform poorly in this regard…

Here’s how DejaVu Sans Mono (default monospace font) renders `\alpha\hat=0`: ![image](https://global.discourse-cdn.com/julialang/original/3X/4/8/488b58777b3cb7b9e2d1451c4ccf374bac1379dd.png)  
Ubuntu Mono is better, but some greek letters are hard to distinguish from latin letters: ![image](https://global.discourse-cdn.com/julialang/original/3X/8/f/8ff86c6de0e21c40bc37e479aff8b056569b6441.png)  
And it fails on tall letters: ![image](https://global.discourse-cdn.com/julialang/original/3X/3/b/3b9941a2816ceaeb3190d749b82b077d2a068229.png)  
There is a Thai font called Tlwg Mono that renders this correctly, but the weight of non-greek characters is too light: ![image](https://global.discourse-cdn.com/julialang/original/3X/e/3/e304ab76fe7ef00209b5a537638972e4858f2002.png)

Any recommendation? (appart from “stay away from these characters, even if you get them working, it won’t work on other people’s computer” 🙂)

---

<div class="post-metadata">

**Author:** ![Karajan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/karajan/32/8545_2.png) [@Karajan](https://discourse.julialang.org/u/Karajan)\
**Post date:** [May 21, 2020, 4:57pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/2 "2020-05-21T16:57:07Z")

</div>

Both Fira Code and JetBrains Mono render those fine for me. With those you get also code ligatures, for example displaying `->` as a continuous arrow (which some people really like, while others really despise it).

---

<div class="post-metadata">

**Author:** ![Ian\_Slagle](https://avatars.discourse-cdn.com/v4/letter/i/b5a626/32.png) [@Ian\_Slagle](https://discourse.julialang.org/u/Ian_Slagle)\
**Post date:** [May 21, 2020, 5:57pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/3 "2020-05-21T17:57:44Z")

</div>

I love writing in Unicode variable names (perhaps a bit more than I should), especially for my physics-based applications. I haven’t really had any trouble with the default font in Jupyter (not exactly sure what that is, should be the default monospace font), though the modifiers aren’t something I use often. I can get visually the right behavior by using `\hat \alpha=0`, but that line can’t be evaluated, I think because Julia doesn’t like the hat operator at the start of variable names? It does also overlap for beta.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 21, 2020, 6:17pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/4 "2020-05-21T18:17:57Z")

</div>

I think Jupyter uses the default monospace font from the browser. On my system it looks like it’s the same font as in the terminal (I agree it works pretty well usually!).

Note that you need to write `\alpha\hat`: the hat is a combining character that goes over the preceding character. And this way you obtain a valid Julia identifier 🙂

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 21, 2020, 6:25pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/5 "2020-05-21T18:25:43Z")

</div>

> Both Fira Code and JetBrains Mono render those fine for me.

These seem to work very well, thanks!

---

<div class="post-metadata">

**Author:** ![dalejordan](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dalejordan/32/2196_2.png) [@dalejordan](https://discourse.julialang.org/u/dalejordan)\
**Post date:** [May 21, 2020, 7:06pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/6 "2020-05-21T19:06:41Z")

</div>

Google’s Noto Mono works pretty well for me.

Edit: Yes, sorry, I meant Noto Sans Mono. The Arch package installs fine.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 22, 2020, 7:20am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/7 "2020-05-22T07:20:59Z")

</div>

Thanks for mentioning this. I had tried it and it had the same issue, but it turns out there’s a new version called Noto Sans Mono and it seems to work very well, at least in Jupyter. Unfortunately I cannot use it as terminal font due to bug in the metadata: [Noto Sans Mono doesn't declare spacing property · Issue #196 · notofonts/latin-greek-cyrillic · GitHub](https://github.com/googlefonts/noto-fonts/issues/1128)

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 22, 2020, 8:54am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/8 "2020-05-22T08:54:54Z")

</div>

I did some tests on Ubuntu 20.04, in the Gnome terminal and in the browser (e.g. Jupyter in Chrome or Firefox) and Juno. It appears that

- some fonts work well in the terminal but not in the browser
- some work well in the browser but cannot be selected in the Gnome terminal

Here’s a summary, testing for support of combining hat character on greek letters, such as "θ̂ " (obtained with `\theta\hat`).

| Font | Version (head/name) | Gnome Terminal | Browser/Juno | Open license |
| --- | --- | --- | --- | --- |
| Bitstream Vera Sans Mono | 2.000/1.10 | ❌ | ❌ | ✔ |
| Cascadia Code | 2005.150 | ❌ | ❌ | ✔ |
| Consolas | 1.000 | ❌ | ❌ | ❌ |
| Cousine | 1.220 | ❌ | ❌ | ✔ |
| DejaVu Sans Mono | 2.370 | ❌ | ❌ | ✔ |
| Fira Code | 4.000 | ✔ | ✔ | ✔ |
| Go Mono | 2.008 | ❌ | ❌ | ✔ |
| Hack | 3.003 | ❌ | ❌ | ✔ |
| Inconsolata | 3.001 | ❌ | ❌ | ✔ |
| Iosevka | 1.000/3.0.1 | ✔ | ✔ | ✔ |
| JetBrains Mono | 1.000/1.0.3 | ✔ | ❌ | ✔ |
| Latin Modern Mono | 2.004 | N/A | ❌ | ✔ |
| Liberation Mono | 2.100/2.1.0 | ❌ | ❌ | ✔ |
| Linux Libertine Mono O | 5.100/5.1.7 | N/A | ❌ | ✔ |
| Menlo | 6.100/6.1d5e14 | ❌ | ❌ | ❌ |
| Monaco | 2.000/5.1d1e1 | ❌ | ❌ | ❌ |
| Nimbus Mono PS | 1.000 | ❌ | ❌ | ✔ |
| Noto Mono | 1.000 | ❌ | ❌ | ✔ |
| Noto Sans Mono | 2.002 | N/A | ✔ | ✔ |
| SF Mono | 0.000/15.0d5e1 | ✔ | ✔ | ❌ |
| TeX Gyre Cursor | 2.004 | N/A | ❌ | ✔ |
| Ubuntu Mono | 0.800 | ❌ | ❌ | ✔ |

So on my system at least, the winners are **Fira Code** and **SF Mono** (edit: and **Iosevka** ). They’re the only fonts that work both in the terminal and in Jupyter and Juno. I find SF Mono a bit nicer but the license seems to be very restrictive (though I couldn’t find any licensing information in the dmg file downloaded from Apple’s website).

Now I can write

![image](https://global.discourse-cdn.com/julialang/original/3X/e/7/e73d6447da54d3e10c5fd153d0a5ab4a2da6ab95.png)

😃

Edit: It looks like some font files have conflicting metadata between the “head” and “name” tables (fontRevision and Version fields respectively). I’ve put both versions when they don’t agree.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [May 22, 2020, 9:14am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/9 "2020-05-22T09:14:52Z")

</div>

My personal favorite is

> **[GitHub - be5invis/Iosevka: Versatile typeface for code, from code.](https://github.com/be5invis/Iosevka/)**
>
> Versatile typeface for code, from code. Contribute to be5invis/Iosevka development by creating an account on GitHub.

It is compact yet readable, well-designed, and the author is pretty responsive about adding missing chars.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 22, 2020, 10:32am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/10 "2020-05-22T10:32:24Z")

</div>

This Iosevka font looks very interesting, and highly customizable. And the combining characters work perfectly. Thanks for mentioning it, I’ve added it to the table.

---

<div class="post-metadata">

**Author:** ![PetrKryslUCSD](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/petrkryslucsd/32/215825_2.png) [@PetrKryslUCSD](https://discourse.julialang.org/u/PetrKryslUCSD)\
**Post date:** [May 23, 2020, 1:47am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/11 "2020-05-23T01:47:06Z")

</div>

Try Envy Code R. Very legible.

---

<div class="post-metadata">

**Author:** ![Eben60](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/eben60/32/13475_2.png) [@Eben60](https://discourse.julialang.org/u/Eben60)\
**Post date:** [May 23, 2020, 11:33am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/12 "2020-05-23T11:33:41Z")

</div>

I have now tried all fonts coming with the Atom fonts plugin [GitHub - braver/fonts: Free and open fonts for the Atom editor](https://github.com/braver/fonts) , and only few of them passed the following test:  
∂ₜu - Δu\*(γ₁-α)\*α̂=0 # это по-русски  
(in case your browser doesn’t display everything properly: the second character is subscript-t).

Those were `Iosevka` family, `Corby Mono S`, `DejaVu` fonts, and `GNU Unifont`. Of these I choose `DejaVu Sans Mono - Bront`, with `Iosevka Extended Medium` being the close second. Tested on Mac and Windows.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [May 25, 2020, 11:44am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/13 "2020-05-25T11:44:05Z")

</div>

Thanks @PetrKryslUCSD and @Eben60, I’ll test these ASAP, once my automated testing script is ready.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [July 7, 2021, 9:40am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/14 "2021-07-07T09:40:52Z")

</div>

Just a note that I put up a web page to show a more proper comparison of fonts: [https://mono-math.netlify.app/](https://mono-math.netlify.app/)

The comparison [above in this thread](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/8) is flawed (or at least very system-dependent) because it looked at text rendered with fallback fonts for glyphs missing from the tested font. For the web page, the text was rendered without fallback font so any missing glyph is shown as missing.

(I didn’t want to revive this thread but my post above is a bit misleading and too old to edit, and it keeps getting attention…)

---

<div class="post-metadata">

**Author:** ![lmiq](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/lmiq/32/18314_2.png) [@lmiq](https://discourse.julialang.org/u/lmiq)\
**Post date:** [July 7, 2021, 12:14pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/15 "2021-07-07T12:14:12Z")

</div>

Nobody mentioned JuliaMono? [https://juliamono.netlify.app/](https://juliamono.netlify.app/)  
 ![image](https://global.discourse-cdn.com/julialang/original/3X/5/8/588598ae200fb00b718e8a1e3468096b156fa4d5.png)

edit: it is the font mentioned on sudete last link, although it was not mentioned in the thread.

---

<div class="post-metadata">

**Author:** ![sijo](https://avatars.discourse-cdn.com/v4/letter/s/da6949/32.png) [@sijo](https://discourse.julialang.org/u/sijo)\
**Post date:** [July 7, 2021, 12:26pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/16 "2021-07-07T12:26:24Z")

</div>

A criminal omission…

It’s the problem with reviving old threads: JuliaMono didn’t exist at the time! To me it’s clearly the best recommendation now (as the web page makes clear), so I’ll mark it as solution 🙂

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [December 5, 2023, 4:52pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/17 "2023-12-05T16:52:36Z")

</div>

Not starting a new topic for this, but

> **[GitHub - belluzj/fantasque-sans: A font family with a great monospaced...](https://github.com/belluzj/fantasque-sans)**
>
> A font family with a great monospaced variant for programmers. - GitHub - belluzj/fantasque-sans: A font family with a great monospaced variant for programmers.

is growing on me. Looks whimsical, but at the same time that makes characters easy to distinguish.

---

<div class="post-metadata">

**Author:** ![Nathan\_Boyer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nathan_boyer/32/14825_2.png) [@Nathan\_Boyer](https://discourse.julialang.org/u/Nathan_Boyer)\
**Post date:** [December 5, 2023, 6:52pm UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/18 "2023-12-05T18:52:34Z")

</div>

I’ve been using the new fonts developed at Github:

> **[Monaspace](https://monaspace.githubnext.com/)**
>
> An innovative superfamily of fonts for code

 ![image](https://global.discourse-cdn.com/julialang/original/3X/c/4/c4ebe883a201325127329e4861413ba70223388e.png)

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [February 11, 2026, 10:26am UTC](https://discourse.julialang.org/t/recommendation-for-a-font-with-good-unicode-support/39885/19 "2026-02-11T10:26:27Z")

</div>

An update, for which I am not opening a new topic: lately I have been enjoying Aporetic (which is a continuation of Iosevka Comfy):

> **[Screen shots of Aporetic fonts (“Iosevka Comfy” successor)](https://protesilaos.com/emacs/aporetic-fonts-pictures)**
>
> Demo of my custom build of the Iosevka font, which I call “Aporetic”. It is the successor to “Iosevka Comfy”.
