linux 上的字体渲染由什么负责?
What is responsible for font rendering on linux?
如果我的问题有点含糊,我很抱歉。我试图了解在哪里寻找我的问题。我有一个捕获和比较屏幕的回归测试套件。似乎每当我们进行某种库升级时,回归测试都会失败。我们的字体设置是一样的。不同之处在于显卡升级(驱动程序),window 管理器升级,或者只是第三方库升级(例如 Qt 库)。从人类视觉测试来看,字体看起来几乎相同,但如果我进行像素与像素的比较,就会发现快照是不同的。有谁知道字体是如何呈现的?
Linux 上的图形渲染一团糟。虽然 Linux 和 Windows 一样古老,但 Linux 首先尝试复制旧的 X11 window 系统。这是世界上最古老的 GUI 系统之一,它表明 - API 太可怕了。因此,在 X11 之上堆叠了大量的库以使其具有不同程度的兼容性。
更糟糕的是,X11 不仅仅是一个单一的实现,还有多个相互竞争的 X11 实现。 Linux 主要使用 XFree86,后来成为 Xorg。由于这还不够令人困惑,最近的开发增加了许多 X11 的替代品,它们支持 X11 的向后兼容接口。 X11 之上的一些 GUI 库知道这些新库,现在可以使用新界面。
所以,你基本上有一个非常脆弱的系统,任何具有良好编程模型的库都有不稳定的基础。难怪更改任何部分都可能突然导致重新渲染,甚至可能选择全新的渲染路径。
Windows 好一点,但它也很旧并且有一些相互竞争的 GUI 库。它更好的原因可能有三个:只有一个方控制所有接口(Microsoft),他们从一开始就意识到 X11 设计的糟糕(避免了初学者的错误)并且 Microsoft 有更多的资源可以花费。
但是,Linux 和 Windows 都必须发展以支持 Unicode 及其带来的更大的字体、24 位颜色、高 DPI 屏幕、具有亚像素分辨率的 LCD 屏幕、加速GPU 等。两者都很难转储旧接口。
如果我的问题有点含糊,我很抱歉。我试图了解在哪里寻找我的问题。我有一个捕获和比较屏幕的回归测试套件。似乎每当我们进行某种库升级时,回归测试都会失败。我们的字体设置是一样的。不同之处在于显卡升级(驱动程序),window 管理器升级,或者只是第三方库升级(例如 Qt 库)。从人类视觉测试来看,字体看起来几乎相同,但如果我进行像素与像素的比较,就会发现快照是不同的。有谁知道字体是如何呈现的?
Linux 上的图形渲染一团糟。虽然 Linux 和 Windows 一样古老,但 Linux 首先尝试复制旧的 X11 window 系统。这是世界上最古老的 GUI 系统之一,它表明 - API 太可怕了。因此,在 X11 之上堆叠了大量的库以使其具有不同程度的兼容性。
更糟糕的是,X11 不仅仅是一个单一的实现,还有多个相互竞争的 X11 实现。 Linux 主要使用 XFree86,后来成为 Xorg。由于这还不够令人困惑,最近的开发增加了许多 X11 的替代品,它们支持 X11 的向后兼容接口。 X11 之上的一些 GUI 库知道这些新库,现在可以使用新界面。
所以,你基本上有一个非常脆弱的系统,任何具有良好编程模型的库都有不稳定的基础。难怪更改任何部分都可能突然导致重新渲染,甚至可能选择全新的渲染路径。
Windows 好一点,但它也很旧并且有一些相互竞争的 GUI 库。它更好的原因可能有三个:只有一个方控制所有接口(Microsoft),他们从一开始就意识到 X11 设计的糟糕(避免了初学者的错误)并且 Microsoft 有更多的资源可以花费。
但是,Linux 和 Windows 都必须发展以支持 Unicode 及其带来的更大的字体、24 位颜色、高 DPI 屏幕、具有亚像素分辨率的 LCD 屏幕、加速GPU 等。两者都很难转储旧接口。