My App 在 TextBox 和 LinkLabel 上显示英文、日文和中文字符。目前,我检查是否有 unicode 字符并将字体更改为 MS Mincho,否则将其留在 Tahoma。
现在 MS Mincho 可以正确显示日语,但对于中文,我必须使用 Sim Sun。我怎样才能区分这两者?
无论字体/语言如何,如何确保正确显示 unicode 文本?
My App 在 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;
}