我正在开发一个视觉回归系统,该系统采用无头镀铬本地组件截图,并在CI内部构建,并在之后进行比较。
然而,我遇到了一个问题,我的机器(macOS)和CI(RHEL7)上的字体呈现方式不同。
我正在使用google的Roboto字体,我已经下载并创建了一个CustomRoboto
字体,以缓解本地安装的Roboto的问题。
如果仔细观察,字母会比我机器上的字母“更高”。
我希望将“真实”屏幕截图创建保留在本地,而不是CI。但我最好的猜测是在CI上做。
macOS使用与Linux不同的字体呈现代码,并且它们都不是完全理想的。在RHEL上,使用FreeType库,可以对其设置进行各种调整以获得不同的结果(即使是单个字体和字体大小)。从理论上讲,应该可以将其配置为类似于macOS处理字体渲染的方式。
其中一个尝试见The sad state of font rendering on Linux的背景和How to achieve MacOS font rendering in Linux。请注意,字体本身也会影响不同渲染引擎显示它的方式,因此使用一种字体的方法可能无法与另一种字体一起使用。