windows和Linux中字体渲染的区别,Qt Cpp

Posted

技术标签:

【中文标题】windows和Linux中字体渲染的区别,Qt Cpp【英文标题】:Font Rendering difference in windows and Linux, Qt Cpp 【发布时间】:2018-10-03 10:00:01 【问题描述】:

我有,QFontMetrics m_fm(QFont("Arial",14));m_fm.width("来自项目网络的现有 LAN IP 地址");乙> 返回 '297'(在 Windows 上) 谁能告诉我它在 linux 编译器上返回什么? 如果它在 linux 上有所不同,那为什么会这样呢? 以及我们如何在 Windows 和 linux 上进行相同的字体渲染。

更新: 我有一个 QTableView 单元格,我在其中从多个字符串写入数据总的来说,我必须在单行中以 2 行显示数据。 (使用 .append("\n"))。 假设列宽为 140, 所以我需要数据以适合一行 140 像素的单元格 因此,我需要像素宽度小于 140 的数据,以便 正确显示。在这种情况下,取决于字体(Arial) 我正在计算 m_fm.width("Existing LAN IP Address from Project Network"); 但它在 Linux 中有所不同,因为 windows Arial 字体不可用。我是否有机会获得正确的像素宽度,而无需在 Linux 系统中安装 Arial 字体? 提前致谢!

【问题讨论】:

这可能取决于您的 Linux 环境,例如无论您使用的是真正的 Arial 字体还是兼容度量标准的替代品,还是通用的无衬线字体替代品。如果您想自己测试,很容易使用 VM 进行设置。 有什么方法可以让我的 linux 字体和我的 windows 字体一样,因为我遇到了渲染问题?谢谢:) 如果您看到渲染问题,那么您应该编辑您的问题以准确解释它们是什么。任何依赖于跨平台的字符串像素宽度相同的代码听起来有点脆弱——不同的显示设备可以有很大不同的分辨率。 您可能会接近,但您永远无法在 GNU/Linux 和 Windows 上获得 100% 兼容的字体渲染。 Qt for GNU/Linux 是针对 Freetype 构建的,而 Qt for Windows 是针对 Microsoft 的字体引擎构建的。通用汽车建议您准确解释您遇到的问题是正确的。它们可能是可以缓解的。 旁注:即使是相同的 windows 版本也可能有不同的渲染,这取决于 ClearType 设置... 【参考方案1】:

尝试在 main.cpp QFontDatabase 上加载字体。也许你没有得到相同的字体。将字体添加到资源文件。检查屏幕上的 DPI 或在启动应用时启用高抗锯齿。

【讨论】:

以上是关于windows和Linux中字体渲染的区别,Qt Cpp的主要内容,如果未能解决你的问题,请参考以下文章

Qml Qt Quick Control 2:Text和ComboBox的字体大小区别

PDF 中需要 Arial 字体(BIRT pdf 渲染器,Linux)

在 Windows 字体显示斜体,但 linux 它总是显示粗体

拯救你的idea,解决ubuntu下idea字体发虚

Qt在Linux环境下应用程序字体模糊的解决方法(先改成使用默认字体,然后使用qtconfig配置)

Linux那些事——GTK+, Qt, Gnome, KDE, xWindow, xOrg区别