我正在尝试使用(例如)Windows GDI 在我的程序中显示一些文本,并且某些 unicode 字符显示为框?怎么了?
另请参阅:当我的文本显示为问号时,这意味着什么?
我正在尝试使用(例如)Windows GDI 在我的程序中显示一些文本,并且某些 unicode 字符显示为框?怎么了?
另请参阅:当我的文本显示为问号时,这意味着什么?
(T 恤图片来自http://www.cafepress.com/nucleartacos.163046834)
上图表示文本显示系统的常见故障模式,它未能考虑到所有 Unicode 字符。在 Windows 平台上,无法使用任何可用字体表示的字符用一个开放的矩形表示。
通常,这意味着指定的 unicode 字符在该特定字体中不可用。尝试将字体更改为跨国字体之一,它应该会消失。
在 Windows 中,尝试显示 Unicode 字符时会出现 2 个常见的显示问题:
文本有时显示为问号
文本有时显示为框
问题是您尝试显示的文本包含您使用的字体不支持的字符。方框字符是字体中没有字形的 Unicode 文本的默认替换字符。
在 Windows 上,如果您尝试以多种不同语言显示文本,请使用 Arial Unicode MS 等字体 - 这包括大量不同语言的字形。它是一种“最小公分母”字体 - 字形通常会存在,但通常缺少字符,并且某些字形彼此相邻看起来会有些奇怪。
我在 Chrome for Win10 上遇到相同的框/字符/文本问题大约 2 年,并尝试了所有建议的修复,但没有一个对我有用。我的问题是由我没有考虑过的应用程序引起的。我使用 uBlock Origin 来减少弹出广告。默认情况下,uBlock 还“阻止此站点上的远程字体”,实际上是每个站点。当字体被阻止时,Chrome 会插入一些东西来代替它,通常是一个简单的正方形或矩形。如果没有其他工作,请检查您的广告拦截器。该功能可以轻松关闭,然后显示所有正确的文本。