采用分数 HiDPI 缩放后,Kate 和 Konsole 中显示的水平线丑陋

采用分数 HiDPI 缩放后,Kate 和 Konsole 中显示的水平线丑陋

这是问题的图片:

在此输入图像描述

请注意,所有文本行都有类似于下划线的水平线。然而,这是一个纯文本编辑器(Kate),它不支持下划线。此文本没有应用任何格式。

我选择了文本,以便线条在照片中显示得更好。但即使没有选择文本,这些线条仍然存在。有时它们更厚更暗。有时它们很轻。有时他们根本不在那里,只是随机回来。

Konsole 也有同样的问题。由于黑底白字,Konsole 有时会显示多色水平线。有时,Konsole 中的每一行都有这种丑陋且分散注意力的下划线。有时只有一部分线路有它。

有时,线条过于密集和势不可挡,以至于很难阅读文字。其他时候,线条很轻微,如所附照片所示。

大约十个月前,我第一次在台式计算机上看到这个问题。我认为用户刚刚在字体设置中做了一些非常疯狂的事情。但现在我在一台新笔记本电脑上看到了这个问题,默认设置没有发生任何重大变化。

两个系统都运行完全更新的 Arch Linux KDE。在这台笔记本电脑上,我将所有字体设置(在系统设置中)重置为默认值。我还将 Konsole 配置文件外观重置为默认设置(即使设置已为默认值)。

然而,水平线不会消失。

应用程序正常工作(除了有时难以阅读文本)。复制的文本不包括水平线。 Konsole 中的命令不受水平线外观的影响。这似乎是一个显示故障,但它并不特定于任何 GPU(影响 Intel 或 nvidia)或任何显示屏(我在桌面上测试了不同的显示器)或我可以确定的任何其他内容。

在过去的十个月里,我在受影响的桌面上尝试了各种修复,但也没有在那台计算机上解决它。

我还有多台其他 Arch KDE 计算机没有这个问题。

有谁知道可能导致此问题的原因吗?还有其他人看过吗?

编辑:请参阅 Konsole 的 KDE 错误报告:
373232 – 具有分数 HiDPI 缩放的水平线

答案1

升级到 Qt 5.12 没问题,但似乎并不能立即解决问题。在高级选项卡下的 Konsole 配置文件设置中,更改“行距”为 1。这为我解决了水平线的问题。

答案2

据报道,这个问题已经解决QTBUG-66036版本 5.12。截至我撰写本文时,Arch Linux 上的 QT 版本为 5.11.2-1。其他常见发行版也没有发布 Qt 5.12 的软件包。然而,当 Qt 5.12 发布时,开发人员希望这个问题能够得到解决。

要检查您的 Qt 版本,您可以打开终端并输入:

qmake --version

输出将类似于此

QMake version 3.1
Using Qt version 5.11.1 in /usr/lib

当您看到 Qt 版本 5.12 时,您就可以期待解决方案。如果没有,请让开发人员知道QTBUG-66036

同时,有一个解决方法,如下面的错误报告中所述

重现步骤:

  1. 显示 -> 比例 -> 比例因子:1.3(或 1.4 等)
  2. 重新开始
  3. 打开 Konsole 或 Kate,输入内容

解决方法:将“比例因子”设置回 1.0(或整数,例如 2 或 3)。

这里有一个类似的 Konsole 错误报告

373232 – 具有分数 HiDPI 缩放的水平线
https://bugs.kde.org/show_bug.cgi?id=373232

答案3

作为解决方法,您可以更改字体分辨率:

  1. 转到Fonts,选中该框Force Fonts DPI
  2. 设置为适当的值(我144在2560x1440屏幕上使用,你可能想尝试1924K)
    • 更高的 DPI 会转化为屏幕上更大的文本
  3. 将显示比例因子设置回 1
  4. 注销并登录您的用户(或重新启动)

此时水平线应该消失,您应该能够阅读屏幕上的所有内容

答案4

按照 Nico 的说明将系统文本 DPI 更改为更高的值(例如 144、192 等)后,有一种方法可以再次打开显示缩放并让 Kate 看起来不错。但是,结果可能因桌面环境而异。

将显示缩放比例设置为所需的小数值(我碰巧使用 1.5 倍)。

QT_SCREEN_SCALE_FACTORS=1您可以为对 Kate 的单次调用设置环境变量。

QT_SCREEN_SCALE_FACTORS=1 kate

您可以为所有对 Kate 的调用制作一个包装脚本

#!/bin/bash
cd $HOME
# Add home binaries directory & cd into it
mkdir -p bin && cd bin
# Symlink Kate executable as kate0
ln -s $(which kate) kate0
# Create the wrapper script
echo '#!/bin/bash' > kate
# This tells Kate to use a 1x scale factor, and to pass all arguments from wrapper
echo 'QT_SCREEN_SCALE_FACTORS=1 kate0 "$@"' >> kate
# Make the wrapper script executable
chmod +x kate

然后确保它$HOME/bin在你的$PATH.如果没有,那么您可以通过添加它

export PATH="$HOME/bin:$PATH"

添加它以~/.profile使其永久。

请注意,为了使其正常工作,您的主脚本必须位于环境变量/usr/bin中原始 Kate 可执行文件(例如 )的路径之前$PATH

相关内容