Take the 2-minute tour ×

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?

share|improve this question
Related: stackoverflow.com/questions/586503/… –  Farray Mar 10 '12 at 22:55
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. –  thomasrutter Sep 27 '12 at 2:17
@thomasrutter: I need coverage of mathematical and logical symbols. –  HighCommander4 Sep 27 '12 at 2:46

3 Answers 3

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.

share|improve this answer
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? –  HighCommander4 Jan 30 '12 at 7:38
@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. –  Lèse majesté Jan 30 '12 at 8:36
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 Jan 30 '12 at 15:46
@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. –  Lèse majesté Jan 30 '12 at 16:46
@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 Jan 31 '12 at 7:18

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.

share|improve this answer
Interesting... I didn't know browsers did that. Is this a universal behavior across all browsers? –  Lèse majesté Jan 30 '12 at 16:48
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. –  Ilmari Karonen Jan 30 '12 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. –  HighCommander4 Jan 30 '12 at 18:29

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.

share|improve this answer

Your Answer


