【问题标题】:Qt kerning issueQt 字距调整问题
【发布时间】:2011-08-10 12:24:07
【问题描述】:

在我的应用程序中,我使用QTextEdit 来显示一些文本,并使用 HTML 进行格式化。可以打印显示的文档。这就是问题所在:虽然在屏幕上字距调整是正确的,但在打印时文档看起来很糟糕(主要是:一些字母后的空间太大)。

为了理解问题,我将 HTML 输出到外部文件中,并在真实浏览器中进行了测试。在 Chrome 中存在完全相同的问题,而在 Firefox 中,字距调整对于打印也是正确的。问题肯定来自 HTML 渲染引擎,但我没有使用 QtWebkit 模块(我什至没有编译它),这可以解释 Chrome 中出现同样的问题。

我该如何解决这个问题?

编辑

它是这样的:

首先是应该呈现的文本(Firefox):

然后用 Qt/Chrome 渲染什么(在 M 和 p 之后特别明显):

【问题讨论】:

  • 你试过在 IExplore 中查看它吗?你在什么操作系统上?
  • 是的,我尝试使用 Internet Explorer 9。结果比 Qt/Chrome 版本好,但不如 Firefox 版本。我的软件是为 Windows 开发的。
  • 为什么你的两个示例文本有不同的磅值?可以预期,字距调整在较小的字体大小时不会那么好。也许如果你让 Chrome 文本和 Firefox 文本一样大,问题就会消失。无论如何,值得一试。
  • 它们确实具有相同的大小,图像是使用浏览器的打印功能创建的 PDF 的屏幕截图。鉴于字距不同,这些行的长度不同,所以我尝试在我的捕获中对齐两个文本。

标签: html qt qtextedit kerning


【解决方案1】:

这是一个简单的解决方法,

使用下面的函数并在 QImage 上绘制完整的 QTextEdit Widget,然后打印该 QImage。

http://doc.qt.io/qt-5/qwidget.html#render

Qt使用不同的渲染器进行打印,我认为这是一个相关的问题。

http://doc.qt.io/qt-5/paintsystem-devices.html

【讨论】:

  • 是的,为单页文档创建图像就可以了。但是对于多页文档,我必须手动管理分页符,以确保分页符不会发生在行的中间,依此类推...
  • 你能试试 QApplication::setGraphicsSystem("raster") (doc.qt.nokia.com/latest/qapplication.html#setGraphicsSystem) 吗?我相信这与多个图形系统有关。
  • 请告诉我结果。
  • 它改变了屏幕上字符的外观(抗锯齿,而不是间距),它不会改变印刷版本的任何东西。
  • 可以同时上传Qt打印和firefox打印的图片吗?这样我就可以知道在 QtGui 代码中寻找什么。
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 2015-06-23
  • 2017-03-14
  • 1970-01-01
相关资源
最近更新 更多