高DPI清晰顯示:Mac易、Windows“老大難”
早在幾年前高分屏Windows10設備(如SurfacePro、聯想YOGA、戴爾XPS、雷蛇Blade)已成為流行趨勢,但高DPI縮放導緻程序字體和界面在視覺上嚴重的模糊感。這種情況以傳統Win32程序最為明顯,畢竟Windows的生态現狀注定了其無法像蘋果macOS(APPStore)那樣對開發者有強大約束力。具體而言,為什麼會造成這樣的情況呢?
首先,我們知道在屏幕尺寸相同的情況下,分辨率越高、像素密度越大,也就是說像素更多。那麼,系統中的文字、圖标如果單純跟随屏幕分辨率而提升分辨率的話,就會出現一個現象:它們變小了。舉個例子:在1366×768、1920×1080以及3840×2160(4K)三款不同分辨率的顯示器上,打開Windows内置的應用,由于應用的圖标分辨率是固定的,所以分辨率越高,它的可視面積就越小。那麼,Windows系統是如何解決這種問題的呢?早在Windows8時代,系統可以支持最大200%的DPI縮放,另外一些應用還支持自定義DPI縮放(如浏覽器),能夠在一定程度上解決高分辨率屏幕顯示元素過小、看起來費勁的問題。但Windows顯示縮放容易遇到三個常見問題,文本和UI組件變得模糊、應用程序的尺寸變得不正确(過大或過小)、應用程序大小正确也不模糊但有其它布局上的問題(比如文本或其它UI組件顯示不全)。上述問題經常在用戶改變了顯示比例、或者從一台顯示器切換到另一台時發生。模糊的區域不少都出現在NCA(非客戶端區域)部分,這部分顯示對象被縮放後的鋸齒等問題對觀感影響巨大。
MacOSX是如何解決高分辨率屏幕的問題呢?與iOS設備相似,蘋果采用了像素合并的優化形式,如使用四個像素點來顯示一個像素點,另外圖标素材的分辨率(有玩家在macOS中提取出過800×800像素的圖标文件)也更高,所以看起來更加清晰。另外,不管是系統還是硬件,蘋果基本上都是自産自銷,所以可以針對特定産品進行更好的優化。但是,Windows是一個更加開放式的系統,需要與各大電腦廠商合作推出硬件,不僅PC廠商、品牌衆多,每個廠商又擁有衆多定位不同的産品,主流的屏幕分辨率包括1366×768、1600×900、1920×1080、2560×1440、3200×1080等等,微軟顯然不可能像蘋果那樣,專門為每種分辨率設置專門的優化或是圖标分辨率。另外一個問題,便是生态系統導緻的軟件問題。與第一個原因類似,軟件廠商沒辦法針對各種Windows筆記本的分辨率配備專門的圖标等素材,所以在高分辨率屏幕上,僅僅通過DPI縮放的低分辨率軟件,會出現鋸齒、模糊等現象。其實,這種情況與移動平台的Android很相似,畢竟硬件的分辨率等級太多,軟件廠商需要考慮開發成本。與iOS平台相似,蘋果也為Mac配備了MacAppStore,軟件應用需要經過嚴格的審核,蘋果也在積極鼓勵軟件廠商開發retina适配應用,因此雖然物理分辨并不是最高的,但Retina屏幕看上去格外那麼清晰。
高分辨率下Windows10系統中未啟用縮放功能,打開不少如美圖秀秀這樣的常用軟件後顯示效果如圖,元素小、看起來十分費力,但縮放後又會面臨模糊、不美觀的問題。新版Windows10中縮放到300%的Win32程序在手動開啟OverridehighDPIscalingbehaviorScalingperformend前後對比,效果立竿見影。從開發者到用戶:消滅模糊
Windows10在2016年發布的周年更新中,微軟為我們帶來了DPI縮放功能的大幅改進。AsktheCoreTeam開發者平台高級項目經理PeterFelts在一篇博客文章中詳細介紹了顯示縮放的技術、優化和改進,包括如何處理舊軟件的縮放和兼顧UWA性能、以及一些設計樣式的調整。在Widnows10周年更新之前,如果應用程序開發者試圖更新他們的桌面應用以迎合顯示縮放因素的變動,他将很快發現變更後的NCA無法調整大小,這意味着他們的應用程序會出現顯示過小或标題欄過大的問題。在Windows10周年更新之後,通過全新的“EnableNonClientDpiScaling”API,系統已支持NCA自動縮放。下一步,微軟還将使用“混合模式DPI縮放”來打破既有的約束,以便開發者為窗口準備不同的縮放模式。換言之,開發者将能夠專注于開發關鍵部分的UI,而Windows會幫助處理其它狀況。其它方面的改進還包括讓Office和Windows展示框架(WPF)支持“EnableNonClientDpScaling”和“Mixe-ModeDPI”。對于開發者而言,NCA—例如标題欄、滾動條、控件等,這些内容依靠系統本身進行調節,一周年更新已經對這些内容進行了優化,開發者無需操心。混合模式DPI縮放—開發者可以告訴系統自己的應用可以動态縮放,或者直接依靠系統進行縮放,隻不過沒有混合選項。在一周年更新版中,軟件可以在混合腳本中工作,應用本身可以控制某些重要窗口縮放,而其他内容可以交給系統處理。Office程序在一周年更新版中在縮放上優化更好,可以适應任何屏幕尺寸和分辨率。Windows顯示基礎(WPF)—這是一種重要框架,已經被大量桌面應用所采用,在一周年更新中WPF已經成為系統的一部分來支持上述改進。微軟在新版Win10中的改進值得肯定,但高DPI縮放問題由來已久,而且情況複雜,不是一勞永逸的問題。所以微軟和開發者還得繼續努力,争取早日完全解決,讓用戶能夠順心、舒心地使用軟件。
對于一些開發進度十分緩慢乃至停滞的軟件,采用高分屏的用戶隻能忍受NCA顯示模糊、鋸齒了嗎?非也。2017年1月份早早就推出的Build15002是首個支持高DPI的版本,系統字體更加清晰,同時用戶還可以為某個應用程序制定是否啟用高DPI選項。具體方法是在應用程序.exe文件上右鍵打開“屬性”選項,在“兼容性”選項卡當中打開“系統(增強)DPI縮放”,然後點擊确定。同時,Build15002當中調整窗口大小時,動畫效果會更加的平滑。對于經常在高分辨率和低分辨率顯示器之間切換的用戶來說,Build15002對于DPI的優化能夠使桌面圖标的縮放和呈現效果變的更加智能,包括圖标的排列方式、布局以及清晰度都有更加舒服的體驗。可以說新版Win10對高DPI提供了更好的支持,升級後的性能檢測器(Perfmon)能夠為高DPI設備提供更加清晰的顯示畫質。此外你會發現,在每一個桌面應用的兼容性标簽下,也多出了一項“OverridehighDPIscalingbehaviorScalingperformndby:”選項,點擊菜單後,用戶可以在“System(Enhanced)”、“Application”、“System”三項中來回切換。
依然采用常見軟件美圖秀秀進行嘗試,4K分辨率下手動開啟開啟OverridehighDPIscalingbehaviorScalingperformnd後顯示觀感恢複正常。4K屏上老程序實測效果
筆者将自己的筆記本電腦系統升級至了比15002更新的Windows10Build15025,并連接至4K顯示器。在初始狀态下,由于系統采取的是100%顯示縮放,因此在3840×2160分辨率下筆者常用的不少程序—比如CPUZ的界面、文字部分都顯得十分小,難以看清。于是我像往常一樣在顯示設置中将文本、界面等項目的縮放調節至了300%,這時CPUZ軟件的界面顯示變為正常可視大小了,但文字部分有嚴重的鋸齒感。于是筆者關閉了GPUZ,點擊右鍵在其兼容性标簽下找到“OverridehighDPIscalingbehaviorScalingperformndby:”選項切換到“Application”并保存。經過這番操作之後,CPUZ這款沒有經過特别适配的Win32程序在高達300%的縮放等級下也能顯示出清晰、銳利的效果了,觀感上與日常的1080p顯示器上的正常狀态相比甚至更勝一籌,大家可以根據本文配圖感受一下這份變化。
小結
WindowsRedStone2預計将于今年4月發布,有消息表示在1月底微軟已經鎖定功能,不再添加新功能轉而将精力集中到BUG修複和後台性能調整方面。這表明我們前文分析和實測過的高DPI下的各種優化在接下來的正式版Windows10中應該會得以保留,Windows10終于有望擺脫在4K屏等高DPI場景下觀感不如蘋果MACRetina屏的窘境。在“PC寒冬”呼聲不斷的今天,高端Windows設備若能一個個地解決類似高DPI下顯示效果“糊”這種問題,對于捍衛自己“桌面霸主”的地位、促進消費者選購相關産品想必是有幫助的。