据我了解,所有字体(如 SVG)都是矢量表示,因此它们可以无限缩放。但这里有两个相同大小的放大“S”字符,来自 LibreOffice Writer。
这是 12 点,显示缩放为 175%,使其可见尺寸为 21 点:
而在显示缩放比例为 100% 时,此值为 21 点:
两者均在相同的高 dpi 显示屏 (2560x1600) 上渲染,但 175% 缩放版本明显更加模糊。
看起来正在发生的情况是,175%(顶部)版本只是对较低分辨率图像进行光栅插值,有效地将我的显示器视为比实际分辨率较低的设备。
IE:为什么不是 Wayland向量缩放矢量图像格式,我该怎么办?当然,正确的情况是渲染应该在显示器的全部功能下进行,而与缩放因子无关?请注意,两个“S”在屏幕上显然占据了完全相同的空间,因为我已经通过字体大小抵消了缩放系数。
我在 Windows 11 上做了同样的事情,它似乎没有这个不幸的缺点。
我应该注意到,我连接了另一台显示器,它的 DPI 较低并且缩放为 100%。我不知道这是否会影响事情。
请注意,使用带有默认 Gnome 桌面的 Ubuntu 22.04。
答案1
IE:为什么 Wayland 矢量缩放不是矢量图像格式,我该怎么办?当然,正确的情况是渲染应该在显示器的全部功能下进行,而与缩放因子无关?
Wayland 根本不处理字体或任何类型的渲染。它接收的唯一内容是准备在屏幕上显示的平面像素缓冲区。 (实际上,近年来的 X11 也一样——过去十年或两年内编写的应用程序或工具包都没有使用任何 X11 非常有限的文本绘制工具,总是在客户端进行,并为 Xorg 提供完成的像素图。)
UI 的其余部分也由应用程序预先渲染,并以位图而不是任何形式的矢量形式提供给显示服务器。
所以唯一可行的方法是 Wayland 服务器通知应用程序他们自己将渲染输出缩放 2 倍左右(例如 GTK3/GTK4 就可以做到,不仅绘制矢量字体,还绘制 2 倍大小的其他所有内容)。
但是,如果应用程序不响应请求,则显示服务器只有一个拉伸最终图像缓冲区的选项,因为这是它唯一获得的选项。据我所知,Wayland 中的分数缩放使用与旧的整数缩放不同的“协议”,因此 LibreOffice 的“VCL”UI 工具包很可能尚不支持它 - 或者它实际上仍然通过 Xwayland 在 X11 模式下运行。
LibreOffice 的 VCL 实际上是一个前端各种各样的工具包(它可以通过 GTK3、Qt5、Windows 本机小部件绘制 UI...)它似乎如果你告诉它使用更现代的 Qt6 后端,你会得到更好的结果:
$ export SAL_USE_VCLPLUGIN=qt6
$ libreoffice --writer
…假设 Ubuntu 中的版本支持该功能,并且假设您安装了 Qt6。 (GNOME 的标准工具包是 GTK,它已经获得了一些黑客形式我相信 GTK 4.8 最近支持了分数缩放,但 LibreOffice 仍然使用 GTK 3.x。)
我在 Windows 11 上做了同样的事情,它似乎没有这个不幸的缺点。
它做。许多 Windows 程序(尤其是较旧的程序)仍然不支持缩放其 UI; Windows 尝试在 UI 工具包级别为使用基本 GDI 小部件的程序处理它(类似于 GTK 或 Qt 进行自己的缩放),但通常情况并不顺利,甚至 Windows 也必须恢复为位图缩放。 (例如,我们仍在使用旧的会计程序,其中 UI 工具包缩放会导致按钮和其他元素重叠的混乱,因此我们必须转到“兼容性选项”并选择位图缩放。)