【问题标题】:Font Rendering difference in windows and Linux, Qt Cppwindows和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 设置...

标签: c++ qt qfontmetrics qfont


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-04-29
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 2015-02-17
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多