为什么使用 Xming 渲染的 WSL GUI 应用程序字体模糊?

为什么使用 Xming 渲染的 WSL GUI 应用程序字体模糊?

当我尝试使用 Xming 和 WSL 运行 GUI 程序时,我会看到具有灰度抗锯齿的字体,就像 Firefox 一样,如下所示:

截屏

我尝试过的每个发行版(Arch 和 Ubuntu)都会发生这种情况,这让我想戳瞎自己的眼睛,但我无论如何也想不出如何解决这个问题。

笔记:如果您的屏幕 DPI 较高,图像将会模糊 - 您可以按 F12 并运行此 Javascript 代码来缩小尺寸:document.body.style.zoom = 1 / window.devicePixelRatio。)

这个问题的原因是什么?是 Xming 的问题还是发行版的问题?我尝试按照 Xming 网站上的所有建议操作,但无济于事。

答案1

(已更新,同时解决 VSCode 问题)

为了一些程序,解决方案是将其添加到~/.config/fontconfig/fonts.conf

<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>
    <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>   <!-- try hintmedium if it looks bad -->
    <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
    <edit name="rgba" mode="assign"><const>rgb</const></edit>             <!-- set to match your display -->
  </match>
</fontconfig>

对于这些程序,执行此操作后,您应该获得漂亮、流畅的渲染,就像我在这里所做的那样:

屏幕截图

然而,对于其他程序,例如Visual Studio 代码(使用 Electron),你还需要安装freetype2-cleartype。如 Arch 手册所述解释,问题的最初原因是微软专利阻止了子像素渲染,为了解决这个问题,freetype2-cleartype可以从 AUR 手动安装,或者通过以下方式安装(笔记我在这里跳过签名检查以使其适合我):

yaourt --m-arg "--skippgpcheck" -S --needed freetype2-cleartype

如果你没有yaourt,你会想要编译并安装其 AUR 存储库,如果在执行此操作时出现 GPG 错误,并且通常的方法sudo pacman-key --refresh-keys不起作用,您需要sudo pacman-key --populate按照说明运行这里

相关内容