答案1
GNOME 终端仅使用 Pango 进行字体渲染,就像所有 GTK+ 应用程序一样。
它使用的字体是矢量字体,在稍大的尺寸下看起来不错,但在小尺寸下可能会出现这样的问题。字形被设想在分辨率更高的表面上绘制,然后缩小并抗锯齿到所需的大小。
缩小后,两个刻度之间的水平偏移量差值可能会变成非整数,比如说 2.2 个像素(或任何其他值)。由于这个非整数偏移量,抗锯齿会产生不同的实际屏幕像素映射。
让我们举一个类似但假设的例子。假设字符单元宽度为 6 像素,符号"
定义为字体中的两个矩形。想象一下,gnome-terminal
首先在 6 * 1024 = 6144 像素宽的画布上绘制符号,每个像素变为“开”(前景色)或“关”(背景色),中间没有值。第一个刻度恰好从坐标(基于 0)1024 到 2047 落下,而第二个刻度恰好从 3300 到 4323 落下。
现在让我们按 1024 倍缩小。第一个刻度恰好落在像素 1(基于 0,即“第二个”像素)上,无需抗锯齿。给定的像素将完全是前景的颜色,其相邻像素将完全是背景的颜色。
第二个刻度部分(78%)落在像素 3 上,部分(22%)落在像素 4 上。那么,这些像素应该如何点亮?请阅读抗锯齿也子像素渲染了解这里使用的一些技巧,但无论你用软件做什么,它都无法看起来像落在像素上的那么清晰。
xterm 支持(并默认为)位图字体,即没有抗锯齿功能的字体,每个像素都恰好是前景或背景颜色。这些字体均设计为特定尺寸,不用于缩放。
我认为 GNOME 终端从未支持过位图字体。它曾经有一个禁用抗锯齿的选项,但现在也没有了。(它可能是否仍然可以通过使用一些 Pango 或 Fontconfig 魔法来使用,我不知道。)
缓解该问题的一些想法:
选择支持位图字体的终端仿真器。(作为 GNOME 终端开发人员,我个人不推荐此选项 :-D。)
尝试其他字体。
使用对比度更高的配色方案(例如,避免在黑色上使用深蓝色)。
增大字体大小。
如果(或无论何时)可行,请用分辨率更高的显示器替换您的显示器。(例如,我的 15 英寸笔记本电脑分辨率为 1366x768,大约一年前坏了,于是我买了一台 15 英寸 1920x1080 的显示器。这确实带来了不同,我再也不会使用较低的分辨率了。而且这还远不是市场上最先进的。)