Ubuntu 18.04 中的 GTK 应用程序中的字体字形渲染不正确

Ubuntu 18.04 中的 GTK 应用程序中的字体字形渲染不正确

我注意到 Ubuntu 18.04 上的 GTK2/3 应用程序中某些字形呈现不正确(可能是由于错误提示)。

例如,有一个竖线字符 U+2502,它广泛用于仅使用文本字符创建垂直实线。您可以在控制台应用程序中看到它,例如mcpstree

在此处输入图片描述

虽然它在 16.04 和 18.04 的终端中都能正确呈现,但在 GTK 应用程序中呈现时,它在 18.04 上的字符之间会出现意外的垂直间隙(在 Ubuntu 16.04 中可以正确呈现)。这个问题可以在 GTK 应用程序(例如 gVIM、Geany、GEdit)中看到,但 Qt 应用程序似乎可以正确呈现它。

我构建了一个小型 GTK2 测试应用程序来重现该问题。你可以在这里找到源代码这里

以下是结果:

  • 此应用程序在干净的 Ubuntu 16.04 上运行的屏幕截图。您可以看到该线是实线。

    在此处输入图片描述

  • 此应用程序在干净的 Ubuntu 18.04 上运行的屏幕截图。您可以看到渲染不正确并且存在间隙。

    在此处输入图片描述

有人知道为什么会发生这种情况吗?我应该将其报告为 GTK 或 Ubuntu 中的错误吗?有什么可能的解决方法吗?

答案1

这些只是可能有助于解决或收集有关问题的信息的提示

  1. 可以使用 fontconfig 调试标志运行相同的应用程序

    FC_DEBUG=1 ... > fontconfig.log
    

    比较两个环境中的日志,看是否使用相同的字体和相同的属性。

  2. 创建自定义字体配置来测试不同的字体属性/设置,参见下面的示例

    ~/.config/fontconfig/conf.d/00-custom.conf

    <?xml version="1.0"?>
    <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
    <fontconfig>
    
     <match>
      <test name="prgname"><string>gedit</string></test>
    
      <edit name="hinting" mode="assign"><bool>true</bool></edit>
      <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
      <edit name="rgba" mode="assign"><const>rgb</const></edit>
      <edit name="autohint" mode="assign"><bool>false</bool></edit>
      <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
     </match>
    
    </fontconfig>
    

相关内容