我的 Linux 系统有一个显卡,其名称为“[AMD/ATI] Kaveri [Radeon R4 Graphics]”。
如果我使用默认/通用驱动程序(黑名单 radeon 和 fglrx 模块)运行它,X 上的字体看起来很棒 - 字母为纯黑色或纯白色且易于阅读。
如果我使用开源“radeon”或专有“fglrx”驱动程序,文本会变得丑陋 - 例如,字母“T”的顶部栏将由一些黑色像素和一些灰色像素组成。这似乎并不特定于任何一种桌面环境或程序,文本在任何地方都会变得丑陋。图像的显示方式也可能存在细微的差异,但很难确定。
我已经确认屏幕分辨率和 DPI 在所有情况下都是相同的,并且查看 fc-match 的输出,它看起来与提示/抗锯齿/等没有任何差异。正在打开/关闭。
丑陋的文字是确切地无论我使用“radeon”还是“fglrx”,都是相同的(字母“T”中灰点的图案相同),这让我相信这实际上不是驱动程序的问题,而是 X 正在做的事情的问题。例如。 X 表示“我检测到有一个驱动程序能够使用 $feature,我现在将打开 $feature。”无论该功能是什么,都会产生使文本看起来难看的副作用。
我知道有很多关于如何使 Linux 字体看起来更好的指南(到目前为止还没有太多运气),但我真正想知道的是当我有 radeon 或 fglrx 时 X 做了什么不同的事情模块已加载 - 如果我可以让它停止执行任何操作并以与将我的卡视为通用卡时相同的方式显示我的文本,那么文本看起来会很棒。
有什么想法 X 在这些场景中可能会做不同的事情以及如何让它停止吗?
答案1
终于找到问题所在了——曾是DPI 的东西。
如果没有 radeon 或 fglrx 驱动程序,默认 DPI 为 102x102,加载任一驱动程序时,会将 DPI 设置为 96x96。当我尝试使用 xrandr 将 DPI 设置回 102x102 时,它并没有修复字体,因为已经运行的程序中的字体不受更改的影响。
最后在编辑我的 startx 脚本以在“defaultserverflags”中包含“-dpi 102”后尝试手动启动 X,然后 X 确实以 102x102 DPI 启动,并且文本看起来不错。
我仍然不明白为什么 96x96 DPI 和 102x102 DPI 之间的差异会使黑色字母出现灰色斑块,但至少我现在知道如何解决它!
编辑:为以后遇到类似问题的任何人添加更多详细信息:
编辑 startx 是一种故障排除措施,不会造成永久性更改(除非您通常从命令行启动 X)。要永久更改它,我必须编辑 /etc/lightdm/lightdm.conf 并设置 xserver-command=X -dpi 102 。这可能会有所不同,具体取决于您使用的登录管理器(gdm、kdm 等),但它们都应该在某个地方有一个选项,用于在启动 X 时将哪些命令传递给 X,这就是您想要更改 DPI 的地方。你不能如所讨论的,更改 xorg.conf 或 xorg.conf.d 中的 DPI这里和这里。
还有另一个设置 Xft.dpi,它告诉 Xft 对字体使用什么 DPI。如果没有在任何地方设置,它应该默认为 X 正在使用的相同 DPI(我认为)。如果它是设置后,您应该能够使用“xrdb -q”查看它的设置。听起来这个设置可以在 ~/.Xresources、~/.fonts.conf 或系统范围的 fonts.conf (依赖于发行版的位置)中更改。我最终并没有为了让我的工作而不得不搞乱这个,但我想把它包括在内,以防它对以后用谷歌搜索到这个的人有所帮助。
102x102 恰好是我的屏幕的正确 DPI,但这并不一定意味着它也适合您的屏幕。请参阅适用于您的显示器的文档或尝试一些不同的值以了解哪种值适合您。
还值得一提的是字体配置文章Arch Linux Wiki 上的内容非常详细,并且对于各种与字体相关的问题非常有用,无论您实际使用什么发行版。