如何以正确的字体呈现unicode字符? (C#/ WinForms)

时间:2020-03-06 14:26:51  来源:igfitidea点击:

我的应用程序可以正确处理不同类型的字符集,但仅在内部时,要在标准WinForms标签和文本框中显示文本时,似乎就出现了汉字问题。

问题似乎是所使用的字体(Tahoma),因为当我复制并粘贴文本或者在调试器中查看文本时,它会正确显示。另外,当我将MS Mincho设置为要使用的字体时,屏幕上的字符看起来还可以。

当然,我不想在整个应用程序中使用MS Mincho。我是否必须根据显示的字符切换字体,还是错过了更好的方法?

解决方案

所有字体都没有可以用unicode表示的所有字形的数据。我们必须找到具有所需子集的合适字体。

编辑:只是为了澄清,有一些字体可以覆盖整个unicode范围,但是我们现在使用的字体不是其中之一。

Windows 2000中引入的UniScribe应该透明地进行处理,这意味着它将为我们选择的字体中不存在的字符自动使用其他字体(例如Mincho)。这就是为什么即使在调试器中使用的字体不包含中文字符,在调试器中看起来也正确的原因。也许我们正在做一些禁用UniScribe的事情,或者在其他方面有问题。也许如果我们可以粘贴一些代码,则可以更轻松地确定问题所在。