linux - 什么负责 linux 上的字体渲染?

标签 linux fonts window-managers

如果我的问题有点含糊,我很抱歉。我试图了解在哪里寻找我的问题。我有一个捕获和比较屏幕的回归测试套件。似乎每当我们进行某种库升级时,回归测试都会失败。我们的字体设置是一样的。不同之处在于显卡升级(驱动程序)、窗口管理器升级或第三方库升级(例如 Qt 库)。从人类视觉测试来看,字体看起来几乎相同,但如果我进行像素与像素的比较,就会发现快照是不同的。有谁知道字体是如何呈现的?

最佳答案

Linux 上的图形渲染一团糟。虽然 Linux 与 Windows 差不多古老,但 Linux 首先尝试复制旧的 X11 窗口系统。这是世界上最古老的 GUI 系统之一,它表明——API 太可怕了。因此,在 X11 之上堆叠了大量的库以使其具有不同程度的兼容性以使其可用。

更糟糕的是,X11 不仅仅是一个单一的实现,还有多个相互竞争的 X11 实现。 Linux 主要使用 XFree86,后来成为 Xorg。由于这还不够令人困惑,最近的开发增加了许多 X11 的替代品,它们支持 X11 的向后兼容接口(interface)。 X11 之上的一些 GUI 库知道这些新库,现在可能会使用新界面。

因此,您基本上拥有一个非常脆弱的系统,而任何具有良好编程模型的库的基础都不稳定。难怪更改任何部分都可能突然导致重新渲染,甚至可能选择全新的渲染路径。

Windows 稍微好一点,但它也很旧并且有一些相互竞争的 GUI 库。它更好的原因可能有三个:只有一个方控制所有接口(interface)(Microsoft),他们从一开始就意识到 X11 设计的糟糕(避免了初学者的错误)并且 Microsoft 有更多的资源可以花费。

但是,Linux 和 Windows 仍然必须发展以支持 Unicode 及其带来的更大的字体、24 位颜色、高 DPI 屏幕、具有亚像素分辨率的 LCD 屏幕、加速 GPU 等。这对两者来说都很难转储旧接口(interface)。

关于linux - 什么负责 linux 上的字体渲染?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52631617/

相关文章:

java - 运行 Jitsi-meet [jicofo 组件] 时出现问题?

linux - 在 Linux 上移动 Git 安装

c - 跨 linux 远程发送对库的调用

java - 在 Swing 中使用印度语输入法输入文本时不显示英文字符

css - 仅在 IOS 中以字体显示的奇怪空间 - 可能触发此问题的是什么?

java - 您可以将 Java 应用程序的窗口标题设置为命令行参数吗?

java - 以可移植的方式以编程方式打开文档

html - 嵌入 OpenType 字体文件

java - 使用 WindowManager 覆盖页脚

linux - 给定框架的 X ID,获取子/客户端窗口的 `xprop`