关于.net:unicode实现:是多种字体还是一种大字体?

unicode implementation: many fonts, or one large font?

我正在将应用程序国际化为多种不同的语言,并且必须支持以下语言:

  • 英语
  • 西班牙文
  • 德语
  • 法文
  • 俄语
  • 普通话
  • 泰国
  • 我们也可能会增加对以下方面的支持:

  • 印地语
  • 葡萄牙语
  • 工作中的任何其他语言都可以说并且可以轻松翻译
  • 我应该为每种语言安装不同的字体,还是应该安装Arial Unicode MS的大量字体安装? 如果我做后者,将字体添加到安装程序中会有法律上的含义吗?

    .NET 3.5中存在此问题,但我认为一般问题是与(编程)语言无关。


    Arial Unicode MS不可重新分发,并与Microsoft Office一起安装:Lucida Sans Unicode随Windows一起提供,并且具有列表中大多数语言的字符(不过,我相信不是中文)。

    http://alanwood.net/unicode/fonts.html是查看哪些字体包含哪些字符的好资源。


    GNU Unifont是唯一涵盖全部(或几乎全部,超过63,000个)字符的字体。不幸的是,它是位图,因此渲染非常难看。

    如果需要TrueType字体,则最好使用WenQuanYi Zen Hei或Arial Unicode MS。
    它们的覆盖范围大致相同(约35,000个字符),但是WenQuanYi Zen Hei是开源(GPL),Arial Unicode MS是专有的。


    当您限制自己使用Windows和Internet Explorer附带的字体时,这不太可能成为真正的问题。用户将安装这些字体的版本,该版本能够以其本地语言呈现字形。


    许多Windows API都会对知名字体进行字体链接。例如,如果您选择Tahoma并尝试使用任何更高级别的函数进行绘制,我相信它将自动进行字体链接。我怀疑几乎所有的.NET接口都具有较高的功能。

    Raymond Chen展示了如何滚动自己的字体链接。

    Michael Kaplan还进行了一系列字体链接。


    我们决定走以下路线:

    对于基于拉丁语的字符集,我们将使用基于Gentium的字体。这些字体受开放字体许可的保护,这意味着我们必须在软件中包含版权声明,并在UI中包含确认信息。

    当我们使用亚洲语言时,我们可能会通过电子邮件发送WenQuanYi Zen He的创建者(在他的网站上,他说他可以商业使用,但要付费)或Code2000的创建者。顺便说一句,对于印地语字体,Code2000看起来确实不错,但对于Latin-1字体却不是那么好(有点宽,非常印刷,而不是基于屏幕)。