高DPI清晰显示:Mac易、Windows“老大难”
早在几年前高分屏W i n d o w s10设备(如S u r f a c e P r o、联想YO G A、戴尔X P S、雷蛇B l a d e)已成为流行趋势,但高D PI缩放导致程序字体和界面在视觉上严重的模糊感。这种情况以传统Win32程序最为明显,毕竟W i n d o w s的生态现状注定了其无法像苹果m a c O S(A P P S t o r e)那样对开发者有强大约束力。具体而言,为什么会造成这样的情况呢?
首先,我们知道在屏幕尺寸相同的情况下,分辨率越高、像素密度越大,也就是说像素更多。那么,系统中的文字、图标如果单纯跟随屏幕分辨率而提升分辨率的话,就会出现一个现象:它们变小了。举个例子:在136 6 ×76 8、1920 ×10 8 0以及3 8 40 × 216 0(4 K)三款不同分辨率的显示器上,打开W i n d o w s内置的应用,由于应用的图标分辨率是固定的,所以分辨率越高,它的可视面积就越小。那么,Win d ows系统是如何解决这种问题的呢?早在W i n d o w s 8时代,系统可以支持最大200%的D P I缩放,另外一些应用还支持自定义D P I缩放(如浏览器),能够在一定程度上解决高分辨率屏幕显示元素过小、看起来费劲的问题。但W i n d o w s显示缩放容易遇到三个常见问题,文本和UI组件变得模糊、应用程序的尺寸变得不正确(过大或过小)、应用程序大小正确也不模糊但有其它布局上的问题(比如文本或其它UI组件显示不全)。上述问题经常在用户改变了显示比例、或者从一台显示器切换到另一台时发生。模糊的区域不少都出现在N C A(非客户端区域)部分,这部分显示对象被缩放后的锯齿等问题对观感影响巨大。
M a c O S X是如何解决高分辨率屏幕的问题呢?与i O S设备相似,苹果采用了像素合并的优化形式,如使用四个像素点来显示一个像素点,另外图标素材的分辨率(有玩家在m a c O S中提取出过8 0 0 × 8 0 0像素的图标文件)也更高,所以看起来更加清晰。另外,不管是系统还是硬件,苹果基本上都是自产自销,所以可以针对特定产品进行更好的优化。但是,W i n d o w s是一个更加开放式的系统,需要与各大电脑厂商合作推出硬件,不仅P C厂商、品牌众多,每个厂商又拥有众多定位不同的产品,主流的屏幕分辨率包括1366×768、1 6 0 0 × 9 0 0、1 9 2 0 × 1 0 8 0、2 5 6 0 ×14 4 0、3 2 0 0 ×10 8 0等等,微软显然不可能像苹果那样,专门为每种分辨率设置专门的优化或是图标分辨率。另外一个问题,便是生态系统导致的软件问题。与第一个原因类似,软件厂商没办法针对各种Win d ows笔记本的分辨率配备专门的图标等素材,所以在高分辨率屏幕上,仅仅通过DPI缩放的低分辨率软件,会出现锯齿、模糊等现象。其实,这种情况与移动平台的A n d r o i d很相似,毕竟硬件的分辨率等级太多,软件厂商需要考虑开发成本。与iOS平台相似,苹果也为M a c配备了M a c A p p Sto re,软件应用需要经过严格的审核,苹果也在积极鼓励软件厂商开发retina适配应用,因此虽然物理分辨并不是最高的,但Retina屏幕看上去格外那么清晰。
高分辨率下Windows 10系统中未启用缩放功能,打开不少如美图秀秀这样的常用软件后显示效果如图,元素小、看起来十分费力,但缩放后又会面临模糊、不美观的问题。新版Windows 10中缩放到300%的Win32程序在手动开启Override high DPI scaling behavior Scaling performend前后对比,效果立竿见影。从开发者到用户:消灭模糊
Windows 10在2 0 16年发布的周年更新中,微软为我们带来了D P I缩放功能的大幅改进。Ask the Core Team开发者平台高级项目经理Peter Felts在一篇博客文章中详细介绍了显示缩放的技术、优化和改进,包括如何处理旧软件的缩放和兼顾U W A性能、以及一些设计样式的调整。在Widnows 10周年更新之前,如果应用程序开发者试图更新他们的桌面应用以迎合显示缩放因素的变动,他将很快发现变更后的N C A无法调整大小,这意味着他们的应用程序会出现显示过小或标题栏过大的问题。在Windows 1 0周年更新之后,通过全新的“EnableNonClientDpiScaling”API,系统已支持N C A自动缩放。下一步,微软还将使用“混合模式DPI缩放”来打破既有的约束,以便开发者为窗口准备不同的缩放模式。换言之,开发者将能够专注于开发关键部分的U I,而W i n d o w s会帮助处理其它状况。其它方面的改进还包括让O f fice和W i n d o w s展示框架(W P F)支持“E n a b l e N o n C l i e n t D p S c a l i n g”和“M i x e - M o d e D P I”。对于开发者而言,N C A—例如标题栏、滚动条、控件等,这些内容依靠系统本身进行调节,一周年更新已经对这些内容进行了优化,开发者无需操心。混合模式D P I缩放—开发者可以告诉系统自己的应用可以动态缩放,或者直接依靠系统进行缩放,只不过没有混合选项。在一周年更新版中,软件可以在混合脚本中工作,应用本身可以控制某些重要窗口缩放,而其他内容可以交给系统处理。O f fice程序在一周年更新版中在缩放上优化更好,可以适应任何屏幕尺寸和分辨率。W i n d o w s显示基础( W P F)—这是一种重要框架,已经被大量桌面应用所采用,在一周年更新中W P F已经成为系统的一部分来支持上述改进。微软在新版W i n10中的改进值得肯定,但高D PI缩放问题由来已久,而且情况复杂,不是一劳永逸的问题。所以微软和开发者还得继续努力,争取早日完全解决,让用户能够顺心、舒心地使用软件。
对于一些开发进度十分缓慢乃至停滞的软件,采用高分屏的用户只能忍受N C A显示模糊、锯齿了吗?非也。2017年1月份早早就推出的B uild 15002是首个支持高D P I的版本,系统字体更加清晰,同时用户还可以为某个应用程序制定是否启用高D P I选项。具体方法是在应用程序.exe文件上右键打开“属性”选项,在“兼容性”选项卡当中打开“系统(增强)D P I缩放”,然后点击确定。同时,B u i l d 15002当中调整窗口大小时,动画效果会更加的平滑。对于经常在高分辨率和低分辨率显示器之间切换的用户来说,B uild 15002对于D PI的优化能够使桌面图标的缩放和呈现效果变的更加智能,包括图标的排列方式、布局以及清晰度都有更加舒服的体验。可以说新版Win10对高D PI提供了更好的支持,升级后的性能检测器(P e r f m o n)能够为高D P I设备提供更加清晰的显示画质。此外你会发现,在每一个桌面应用的兼容性标签下,也多出了一项“O v e r r i d e h i g h D P I s c a l i n g b e h a v i o r S c a l i n g p e r f o r m n d b y:”选项,点击菜单后,用户可以在“S y s t e m(E n h a n c e d)”、“A p p l i c a t i o n”、“System”三项中来回切换。
依然采用常见软件美图秀秀进行尝试,4K分辨率下手动开启开启Override high DPI scaling behavior Scaling performnd后显示观感恢复正常。4K屏上老程序实测效果
笔者将自己的笔记本电脑系统升级至了比15002更新的W i n d o w s 10 B u i l d 15025,并连接至4K显示器。在初始状态下,由于系统采取的是100%显示缩放,因此在3840×2160分辨率下笔者常用的不少程序—比如C PU Z的界面、文字部分都显得十分小,难以看清。于是我像往常一样在显示设置中将文本、界面等项目的缩放调节至了300%,这时C P U Z软件的界面显示变为正常可视大小了,但文字部分有严重的锯齿感。于是笔者关闭了G PU Z,点击右键在其兼容性标签下找到“Override high DPI scaling behavior Scaling per formnd by:”选项切换到“Application”并保存。经过这番操作之后,C PU Z这款没有经过特别适配的W i n32程序在高达300%的缩放等级下也能显示出清晰、锐利的效果了,观感上与日常的1080p显示器上的正常状态相比甚至更胜一筹,大家可以根据本文配图感受一下这份变化。
小结
W i n d o w s R e d S t o n e 2预计将于今年4月发布,有消息表示在1月底微软已经锁定功能,不再添加新功能转而将精力集中到B U G修复和后台性能调整方面。这表明我们前文分析和实测过的高D P I下的各种优化在接下来的正式版W i n d o w s10中应该会得以保留,W i n d o w s 10终于有望摆脱在4K屏等高D P I场景下观感不如苹果M AC R e t i n a屏的窘境。在“P C寒冬”呼声不断的今天,高端W i n d o w s设备若能一个个地解决类似高D P I下显示效果“糊”这种问题,对于捍卫自己“桌面霸主”的地位、促进消费者选购相关产品想必是有帮助的。