【发布时间】:2014-02-07 01:20:09
【问题描述】:
我正在开发一个基于 QTextEdit/QGraphicsTextItem 的文本编辑器应用程序,并注意到 QTextEdit 在 Windows 上的结果与在 Mac 上的结果不同。
具体来说,在 Qt 4.8.5 的“文本编辑”示例中使用多行文本 sn-p 进行测试时:
- 使用大字体 (48pt) 时,文本布局几乎相同
- 使用小字体 (8pt) 时,文本 sn-p 在 Windows 上的高度明显更大
我找到了几个相关的 StackOverflow 问题,但没有找到合适的答案。因此,我试图深入挖掘并弄清楚以下内容:
- 字体大小 48pt:Mac 和 Windows 上的行高非常接近(均约为 60%)
- 字体大小 8pt:Mac 上的行高约为 50%。在 Windows 上约为 75%
当提到“行高”时,我将上升高度(即“T”的高度)与它们之间的高度(两个文本行之间)进行了比较。
这是显示问题的屏幕截图。红线是Mac文本行的基线。:
似乎是行高导致 Mac 和 Windows 上的文本布局不同。 Qt 中是否有任何方法可以在 Mac 和 Windows 上强制执行相同的文本布局(Microsoft Word 设法这样做)?或者有人对此有其他建议吗?
【问题讨论】:
-
这也是本机应用程序之间的区别吗?例如,记事本与 Mac 等价物,如果字体相同,它们会有相同的区别吗?也许只是操作系统有不同的字体渲染约定,而 Qt 试图在 Mac 中看起来是原生的。
-
一种选择是检查 QPlainTextEdit 的行为是否不同,如果它不符合您的需求并且可以满足您的需求,它可能是替代解决方案
-
@sashoalm:我认为将 Microsoft Wordpad 与 Apple 的 TextEdit 进行比较是没有意义的。它们有不同的代码库,并且可能使用不同的字体度量/渲染代码。我比较了 Win7 和 MacOS 上的 Microsoft Word,它们非常接近(不是 100% 相同,但足够接近)。
-
@IlyaKobelevskiy:QPlainText 不支持富文本格式,对吧(粗体、斜体、编号列表……)?在那种情况下,很遗憾它不能替代我的应用程序。
-
不幸的是,我没有找到解决此问题的方法,因此无法在此处将答案标记为解决方案。实际上,看起来只是在 Qt 中不能保证跨平台的文本布局是相同的。
标签: macos qt layout fonts qtextedit