views:

371

answers:

5

Hi all,

I'm internationalizing an application into many different languages, and the following languages must be supported:

  1. English
  2. Spanish
  3. German
  4. French
  5. Russian
  6. Mandarin Chinese
  7. Thai

We're also probably going to add support for:

  1. Hindi
  2. Portuguese
  3. Any other language people at work speak and can translate easily

Should I install different fonts for each language, or should I go with one massive font installation of Arial Unicode MS? And if I do the latter, are there any legal implications of adding the font into the installer?

This problem is in .NET 3.5, but I think the general problem is (programming) language independent.

+1  A: 

Arial Unicode MS is not redistributable and is installed with Microsoft Office: Lucida Sans Unicode ships with Windows though, and has characters for most of the languages on your list (not Chinese, though, I believe).

http://alanwood.net/unicode/fonts.html is a good resource for seeing which fonts contain which characters.

Stuart Dunkeld
+2  A: 

This is very unlikely to be a real problem when you restrict yourself to the fonts that ship with Windows and Internet Explorer. The user will have a version of those fonts installed that is capable of rendering glyphs in her local language.

Hans Passant
yes, but I don't have those fonts on my machine, so it makes testing and display debugging very difficult.
mmr
You should test your app on the local language version of Windows. An MSDN subscription to get those versions is highly recommended.
Hans Passant
+1 nobugz for the comment about MSDN sub and testing on local lang version of Windows
MarkJ
+2  A: 

GNU Unifont is the only one that covers all (or almost all, 63,000+) characters. Unfortunately it is bitmap and thus the rendering is pretty ugly.

WenQuanYi Zen Hei or Arial Unicode MS are best if you need a TrueType font.
They have roughly the same coverage (~35,000 chars), but WenQuanYi Zen Hei is open source (GPL) and Arial Unicode MS is proprietary.

Robert Claypool
A: 

We've decided to go the following route:

For latin-based character sets, we're going to use the Gentium-based fonts. These fonts are covered under the Open Font License, which means that we have to include a copyright notice with the software and an acknowledgment in the UI.

When we go to the Asian languages, we'll probably either email the creator of WenQuanYi Zen Hei (on his site, he states that he's open to commercial use, but for a fee), or the creator of Code2000. Incidentally, for Hindi fonts, Code2000 looks really good, but not so much for the Latin-1 fonts (a bit too wide, very typographic rather than screen-based).

mmr
A: 

Many of the Windows APIs will do font linking for the well-known fonts. For example, if you pick Tahoma and try to draw using any of the higher-level functions, I believe it'll do font linking automagically. I would suspect that nearly all of the .NET interfaces count ast higher-level functions.

Raymond Chen shows how to roll your own font linking.

Michael Kaplan also did a series on font linking.

Adrian McCarthy