用“超分辨率”优化Windows字体显示的尝试

这个想法来源于Windows根据系统缩放比例不同而采取不同渲染字体方式的现状。简单来说就是缩放大到一定程度,Windows渲染的字体就会按字体原本的样子去绘制了。不过要是把缩放改高了(比如200%),在老显示器上就变成了关怀模式。

一种方式就是借鉴一下游戏里头用来模拟全屏抗锯齿的方式之一——超分辨率。简单来说就是按高分辨率渲染,然后重采样到显示器原生分辨率输出。操作也很简单,把显示分辨率改为原生的2倍,然后用200%缩放。这样显示的内容不变,缩放也高了(其他倍数也可以,效果不如2倍)。

Windows不能直接用2倍分辨率,需要借助显卡驱动提供的功能。比如N卡会有如下这个东西,在“更改分辨率”里可以“自定义…”设个2倍分辨率的选项,然后Windows里头就能选了。

N卡的自定义分辨率

这个方式有若干局限性。比如:

  • 需要显示器线支持,VGA和DVI可能不能支持某些比较高的分辨率,要用HDMI或者DP;
  • 需要显卡支持,我在笔记本上尝试这个办法,驱动设置页面告诉我带宽不够不让添加;
  • 高缩放比例可能带来程序显示效果变化(变丑),包括一些并非古董的程序(如WPS的各种设置对话框,我不是跟他有仇,只是因为天天用,让我有点不爽);
  • 感觉程序渲染变慢
  • 感觉字体变虚了?

对于程序渲染变慢这个,我的两台电脑表现不一样,所以姑且打个问号,一台看起来没啥影响(1060显卡),另一台的微信滚动起来总是有点卡卡的,而网页浏览器却还好(2060显卡)。

对于字体变虚这个,说实话是“超分辨率”希望达到的效果,如果程序能够原生渲染出高分辨率的界面,压缩的效果就是柔化,和游戏用“超分辨率”抗锯齿效果一样,界面文字虽然不再是边缘锐利的黑白分明,但看起来更加美观(这个感受因人而异,毕竟还有喜欢点阵宋体的人)。对于微信,还有个原因,微信PC版用的雅黑(也有可能是别的什么字体)在150%以下的缩放比例下,字体显示的七上八下和扭曲,跟微软刚开始用微软雅黑时给人的感觉一样(话说这都10年有余了,微信咋还开倒车了),而在200%缩放下看起来就正常了。对比如下(前者是100%,后者是200%):

一般来讲,对于专门针对高缩放比例适配优化过的程序,这个方法效果挺好,而没有适配过的,就有点呵呵了。比如某个程序200%缩放下渲染一塌糊涂,如下。

对付效果不好的通用解决办法,就是修改兼容性设置,如下。其中“应用程序”就是按程序自己的设置来显示,显示半乱七八糟的程序多半需要改成“系统”或者“系统(增强)”,“系统(增强)”那个可能会让程序出现工作不正常的情况,比如MPV视频只有一部分,WPS老是闪闪闪。需要试一试看哪个能用,哪个效果好。

把上面那个程序的高DPI缩放行为改成“系统”过后,就正常了,如下:

是不是很虚?虚就对了,这个就是“系统”的效果,程序本身没有做适配,靠操作系统硬拉大(缩放)再缩小(高分辨率重采样到原生分辨率),和原生渲染成高分辨率再缩小的效果完全不一样(另外,程序用了宋体也是个原因)。

注:本文的图,除了微信的第一张是原生分辨率下截的,其他的全是在“超分辨率”模式下截的。“超分辨率”模式有个附带的好处,截图的分辨率也高了一倍。

因为只是部分程序变好看了,整体看有优有劣,不算是个很棒的办法,姑且叫做尝试吧。也呼吁WPS给做一下高DPI适配呗。

说点啥呗

您的电子邮箱地址不会被公开。 必填项已用 * 标注