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