QTextEdit t; t.setHtml(" ");
显示带有尖锐重音的小“a”而不是不间断空格。这只发生在 Windows 上,而不是 Linux 或 FreeBSD。这可能是什么原因造成的?Windows/Qt 中的错误?我怎样才能解决这个问题?
(Windows Vista x64 pro 上的 Qt 4.5。我的语言环境是默认的“C”。)
更新:我有一种感觉,这是 Qt/Windows 中的错误(已经提交了错误报告)。我已经创建了一个解决方法,但它很丑陋,并且涉及更改我的格式算法并使用<pre> </pre>
CSS 来生成所需的输出。
有没有更简单的解决方法?
更新:&8194; 和 &8195; 两者都按照'wcm'的建议工作。假设这也适用于其他用户是否安全?
不工作可能仍然是一个错误,但是 &8194; 似乎是一种可以接受的解决方法(?)。
更新:结果我错过了一些重要的事情:
在 Qt/Windows 中,仅使用我正在使用的名为“终端”的特定单字字体呈现错误。当我切换到“Lucida Console”(或任何其他字体)时,
渲染正确!伙计,我希望我早点注意到这一点!该死。所以显然某处有一个错误(很可能在 Qt 中)。但是没关系,至少对我来说使用不同的字体已经解决了这个问题。
更新:这不是我之前认为的 Qt 中的错误。要了解
错误呈现的原因,请参阅 Tewha 的回答。
[解决了]
我发现您已经基本弄清楚了这一点,但我想我应该添加其中的“原因”。终端字体基于代码页 437,又名 DOS-US。\xc3\xa1 位于位置 160。
\n\n代码页 437 的字体并不多。事实上,我认为 Terminal 是唯一的 TrueType 字体!无论如何,如果您没有明确尝试显示旧式 DOS 图形,则不应使用终端。
\n\n代码页 437 到底是什么意思?它是“高 ASCII”,大约 1981 年。除了通常的 32-127 个字符之外,它还包括一些重音字母、用于在事物周围绘制边框的方框图形字符、一些数学符号,甚至是四组纸牌的符号!但世界以不同的方式变化,因此除了 32-127 之外,即使是其他字体中通常可用的字形也不是您所期望的。如果您在窗口中运行旧的文本模式 MSDOS 程序,它将使用代码页 437 字体。
\n\n有关详细信息,请参阅“代码页 437 ”(维基百科)。
\n