首页 > 解决方案 > 什么负责在Linux上进行字体渲染?

问题描述

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

标签: linuxfontswindow-managers

解决方案


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

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

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

Windows 稍微好一点,但它也很旧并且有一些竞争的 GUI 库。它更好的原因可能是三方面的:有一个人控制着所有的界面(微软),他们从一开始就意识到了糟糕的 X11 设计(避免了初学者的错误),而且微软有更多的资源可以使用。

但是,Linux 和 Windows 都必须发展以支持 Unicode 及其带来的更大字体、24 位颜色、高 DPI 屏幕、具有亚像素分辨率的 LCD 屏幕、加速 GPU 等。而且两者都很难抛弃旧的接口。


推荐阅读