QML字体渲染不正确 - 缺少精细细节

时间:2018-01-19 17:37:20

标签: qt fonts qml

正如标题所说,我使用macOS在QML项目中存在字体渲染问题。

图片示例

enter image description here

字体在assets / fonts(本地文件夹)中,并且它通过FontLoader添加到main.qml中,就像其他3种字体一样。除了这一个之外的所有字体都正确呈现,正如您在上面的屏幕截图中看到的,我的系统正确读取字体。我加载的所有字体都是.otf,我不知道这是否与我的问题相关。

预期结果:

enter image description here

我的示例QML代码是:

Text { 
    id: welcomeMessageTop 
    color: "blue" 
    text: "ASDFGHJKLT" 
    font.family : 
    fontLoaded.name 
    font.pixelSize: 110 
    font.letterSpacing: -0.4 
} 

由于

1 个答案:

答案 0 :(得分:4)

我怀疑这可能与默认方法有关,以便在QML中有效地渲染动态可调整大小的文本,这是通过距离字段。这是一个很好的方法,可以平滑地调整光栅图形的大小,并获得几乎像结果的矢量图形,但它确实消除了相对于字符大小不够突出的小细节。

您应该尝试为renderType: Text.NativeRendering元素设置Text,看看是否有帮助。

此外,如果您的文本是动态的,IIRC本机文本渲染看起来非常糟糕 - 如果它是动画,旋转或其大小动态变化。它主要用于静态内容,但我认为文本可以以更大的大小呈现给不可见的项目,并且该项目可以用作着色器源,然后您可以应用动态行为并获得不是可怕。

如果您要调整大小或旋转文本,请注意还有一些环境变量可以修改以调整距离场生成并获得更好的结果:

  qputenv("QT_DISTANCEFIELD_DEFAULT_BASEFONTSIZE", "64");
  qputenv("QT_DISTANCEFIELD_DEFAULT_SCALE", "16");
  qputenv("QT_DISTANCEFIELD_DEFAULT_RADIUS", "80");

问题在于它似乎不可能在每个字体的基础上进行调整,所以如果你增加距离场分辨率,即使对于那些没有&#39的字体,它也会吃掉更多的内存。不需要它。