在C#中显示unicode文本

我的应用程序在TextBox和LinkLabel上显示英文,日文和中文字符。 目前,我检查是否有unicode字符并将字体更改为MS Mincho,否则将其保留在Tahoma中。

现在MS Mincho正确显示日语,但对于中文我必须使用Sim Sun. 我如何区分这两者?

无论字体/语言如何,如何确保正确显示unicode文本?

如果每个文本都有unicode字符,则使用支持unicode的字体应该适合您(例如Arial Unicode MS)。

无论字体和语言如何,都无法确保正确显示unicode文本,因为没有单一字体可以呈现所有可能的unicode字符 。 您必须选择一种可以显示您需要呈现的unicode字符的字体。

C#中的所有字符串都是Unicode。 英语(拉丁语),日语和中文代码点位于不同的代码点范围内。

我想你有两个选择:

  • 查找包含所有三种语言中所有代码点的字符的Unicode字体。

  • 尝试猜测语言并选择包含该语言中代码点字符的字体。

对于选项2,您可以查看Unicode图表以找出不同代码点的位置,并扩展算法以猜测语言。

平假名的例子:

bool IsHiragana(char ch) { return (ch >= '\u3040') && (ch <= '\u309f'); } bool IsHiragana(string s) { return s.Count(IsHiragana) > 0; }