【问题标题】:Different QTextEdit line height on Mac and WindowsMac和Windows上不同的QTextEdit行高
【发布时间】: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


【解决方案1】:

如果我没记错的话,Mac 中的 Qt 4.8 使用系统渲染引擎 & Windows 和其他平台使用 Harfbuzz。 Qt 5.X 对所有平台都使用 Qt Harfbuzz。两个不同的渲染引擎不可能有相同的渲染输出。如果可以,请尝试使用 Qt 5.2。

【讨论】:

  • 很好,我不知道。我确实将应用程序移植到 Qt 5.2。文本布局在某些情况下与 Qt 4.8 不同,但与 Windows 版本仍有很大不同。尽管如此,还是值得一试。顺便说一句:似乎也可以在 4.8 中为 Mac 启用 HarfBuzz:bugreports.qt-project.org/browse/QTBUG-17728
猜你喜欢
  • 1970-01-01
  • 2013-10-02
  • 1970-01-01
  • 2013-04-14
  • 1970-01-01
  • 2015-05-29
  • 2019-04-21
  • 2011-08-09
  • 2017-08-15
相关资源
最近更新 更多