I'm a programmer and I'm really used to the Courier New font. I am quite picky about it - I find other fonts (including other monospace fonts) ugly in comparison.

However, now I have to work on some code that includes Unicode strings, and Courier New does not have full support for Unicode.

Could someone recommend a (monospace) font that is very similar to Courier New, but has Unicode support?

  • Related: stackoverflow.com/questions/586503/…
    – Farray
    Commented Mar 10, 2012 at 22:55
  • 3
    Courier New has much better Unicode coverage than most fonts. It would help if you told us exactly which characters/languages/scripts you needed coverage of. Commented Sep 27, 2012 at 2:17
  • @thomasrutter: I need coverage of mathematical and logical symbols. Commented Sep 27, 2012 at 2:46

4 Answers 4


Few if any fonts have "full support for Unicode". Unicode 6.0 has 109,449 code points. It's quite expensive from a design perspective to manually create each one of those glyphs when most people will only be using a small fraction of them, not to mention from a file size perspective.

Courier New is actually among the fonts with relatively good Unicode support at 3248 glyphs (in comparison Lucida Sans Unicode only has 1776).

The MingLiU/PMingLiU fonts also support a very wide range of code points, but that's because these are CKJ (Chinese, Korean, Japanese) fonts, and most of the supported code points are from the CKJ blocks. So unless you need a CKJ font, they're not much use. And even then, they're broken down into ~6 different fonts covering different code blocks with 30~40k code points each.

For general-purpose language support, Arial Unicode MS is the best that I know of. It has near complete support across 64 different code blocks, which covers 50,377 code points.

Beyond that, there's just the Unicode BMP Fallback SIL font, which is a debugging font. It covers all Unicode 5.1 code points, but each glyph is just a rectangular box containing the hex code for that code point. And most OSes come with this font and will display it when a Unicode font lacks a glyph for a particular character.

I mean, it's possible there might be a crazy typographer or foundry out there who's created a font with glyphs for all Unicode 5.1 or 6.0 code points, but it would probably be really, really expensive.

Most people would rather just have fonts that cover specific language blocks and use multiple fonts to provide full multilingual support. Especially as different families of languages have intrinsically different typographic styles, so the glyphs would end up looking very different anyway.

Edit: As Mr Lister pointed out, no font at present can support the full Unicode character set since each font can only contain 65536 glyphs max. You might be able to exceed this limit with TruTypeCollections but they would still be separate fonts, just in a single file.

  • 1
    Thanks for a detailed answer. I didn't know Unicode was quite so big. The Unicode characters in my code are mathematical and logical symbols - do you know of a decent-looking monospace font with support for those? Commented Jan 30, 2012 at 7:38
  • 4
    @HighCommander4: Then all you really need are the Mathematic Symbols block and the Mathematical Operators blocks. You can see the list of Unicode blocks here. Upon clicking on each one, you can find a list of common fonts that supports each block. Or just click on one of the fonts and then look up its supported blocks list, e.g. this one for Code2000, which shows all the blocks it supports and by what percentage. Commented Jan 30, 2012 at 8:36
  • 2
    I think I read somewhere that 65536 glyphs is the maximum that any single font file can contain, so you'll never find a font with "full" Unicode support.
    – Mr Lister
    Commented Jan 30, 2012 at 15:46
  • 1
    @Mr Lister: that's probably the limitation of some font editors, but Unicode code points go up to E0FFF (or 10FFFF including the private use area). So if a font is to be able to reference these high end code points, they'd have to be able to reference anything below it. Commented Jan 30, 2012 at 16:46
  • 2
    @Lèsemajesté No, that's not actually true. Fonts are not required to contain every character up to the one with the highest Unicode index they have. Otherwise every Windows-1252 compatible font would have to contain over 8400 characters!
    – Mr Lister
    Commented Jan 31, 2012 at 7:18

Try GNU Free Font's Free Mono. It's, in fact, so far the only monospace font which I've found which is both legible and relatively complete in terms of unicode coverage.

Even more ideal for your particular case, it is in fact ultimately based on Courier.


You could always use Courier New as your main font, and fall back to some other font with a broader character palette (such as DejaVu Sans Mono or perhaps Everson Mono) for the missing symbols.

This is what your browser does if you set Courier New as your preferred monospaced font and then ask it to display something like ∀x: ∃y: x ∊ y. (Well, except for the fact that this site already specifies its own list of preferred monospace fonts, with Courier New pretty far down the list, so your probably won't see x and y above in Courier New unless you also disable or override the SE style sheet.)

Of course, this won't always look too good, but in your case, you say that the extra characters you need are mostly mathematical symbols. These look quite distinct from normal Latin letters anyway, so the mismatch between different fonts may not be so apparent as it might otherwise be, especially if you choose the fallback font carefully.

  • Interesting... I didn't know browsers did that. Is this a universal behavior across all browsers? Commented Jan 30, 2012 at 16:48
  • 2
    Pretty much, yes. As far as I know, all the major modern browsers support glyph substitution. IE 6 and older didn't, but you really shouldn't be designing for IE 6 these days anyway -- it's gone the way of the dinosaurs, and good riddance too. Commented Jan 30, 2012 at 16:54
  • That's a nice idea but it requires that the application in which I'm working with the code (my editor, in this case), support this type of "fallback" mechanism, which unfortunately it does not. Commented Jan 30, 2012 at 18:29

I know this is an old question but I figured that as a programmer I might be able to offer up some advice. I use FreeMono on all of my text editors and IDEs. It looks quite similar to Courier New and has better support for Unicode. From the information I can obtain from the font files themselves, Courier New supports 3,248 different characters while FreeMono supports 4,177 characters. I'm not sure exactly how much support FreeMono haS for the math and logic Unicode symbols, but I do know that it is better than Courier New by a considerable margin.

  • 1
    What means "has better support for Unicode"? How? Please compare!
    – Mensch
    Commented Jul 17, 2016 at 19:50
  • @Kurt Sorry for the confusion! Courier new has support for 3,248 Unicode characters while free mono supports 4,177 Unicode characters. I hope that helps.
    – Zack Frost
    Commented Jul 24, 2016 at 11:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.