5

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

现在 MS Mincho 可以正确显示日语,但对于中文,我必须使用 Sim Sun。我怎样才能区分这两者?

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

4

3 回答 3

5

如果每个文本都有 unicode 字符,则使用支持 unicode 的字体应该能正确覆盖它(例如 Arial Unicode MS)。

于 2009-09-03T02:01:12.323 回答
2

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

于 2009-09-03T02:02:11.387 回答
2

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

我认为你有两个选择:

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

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

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

平假名示例:

bool IsHiragana(char ch)
{
    return (ch >= '\u3040') && (ch <= '\u309f');
}

bool IsHiragana(string s)
{
    return s.Count(IsHiragana) > 0;
}
于 2009-09-03T02:09:00.787 回答