何改善 Windows 的字體渲染是一個亙古不變的話題,長期以來大家都有這樣的一個印象:Windows 上面的字體渲染相比 macOS 沒有那么細膩清晰。實際上,也確實是這個樣子,由于 Windows 世界中參差不齊的硬件和向前兼容的「歷史包袱」,Windows 新 UI 和新的渲染模式需要去兼容老舊的程序,往往也正是因為這些程序,給 Windows 用戶「字體渲染模糊不清」的體驗。
但是隨著近幾年 Windows 系統本身的更新,以及 Windows 市場中高分辨率屏幕的愈加普及,在 2019 年的今天,Windows 字體渲染已經有了很大的改善。很多時候,我們并不需要諸如 MacType 等等這類類似于外掛的字體渲染程序來改善 Windows 本身的字體渲染引擎,就可以達到比較理想的字體渲染效果。
下面這幾個小技巧值得試一試。
不得不承認的是,目前在中文環境下 Windows 系統默認的微軟雅黑字體本身的 hinting 并不理想,正因為這一限制,讓 Windows 在 1920*1080 分辨率以下的屏幕上渲染字體有著很大的模糊感。但是在高分辨率的屏幕下,Windows 的字體渲染還是耐看許多的。在這里「高分辨率屏幕」是指:在日常使用的時候,你的系統顯示縮放與布局中的縮放比例在 100% 以上,系統 UI 的字體才不會顯得太小的屏幕。
我的電腦是 2560*1440 分辨率 OLED 屏幕,日常使用 150% 縮放比例
因此,在選購電腦前,盡量購買帶有 1920*1080 分辨率以上屏幕的筆記本,或選購 2K 分辨率以上的顯示器。
雖然聽起來令人詫異,但是 2019 年的今天依舊有相當一部分人在系統上選擇 Windows 7,甚至是更古老的 Windows 版本。在 Windows 10 的第一個版本已經發布了三年有余的今天,真的,別用除了 Windows 10 以外的 Windows 系統版本了。
處于生命周期支持尾部的 Windows 7 和 Windows 8.1
隨著技術的更新迭代,新系統帶來的不僅是穩定性的提升,還有諸多新特性的加入(我們當 1809 無事發生過)。去年 DirectWrite 字體渲染引擎隨著 Windows 10 Creators Update 的發布也更新了新特性,這也意味著高分屏可以更好的顯示 DirectWrite 渲染的字體了。
總之,Windows 10 在改善字體渲染上做了很大的努力,我們要好好利用。
軟件使用
開頭我提到了,Windows 平臺由于要兼容老舊的客戶端,而做出了很多犧牲。與此同時,很多時候我們所說的 Windows 字體渲染糟糕,實際上是由于這些客戶端的默認字體是「中易宋體」所導致的。我們為了更好的字體渲染,可以嘗試下面兩種辦法來解決這個問題。
多多使用 UWP 版本的程序
首先,UWP 應用由于直接采用了 DirectWrite 渲染引擎,會比古老客戶端在字體渲染效果上有很大的提升(不是所有在 Windows Store 上面上架的應用程序都是 UWP 版本的)。并且,UWP 默認的 UI 字體是非襯線體,因此理論上,UWP 版本的程序都有著不錯的字體顯示效果。
Windows 10 的郵件、日歷和 UWP 版本的網易云音樂
通常情況,網頁端應用程序渲染字體都很好,同時我們也更加方便修改相應程序所使用的字體(畢竟修改相應的 CSS 就可以)。利用上面鏈接文章中的介紹的第一種方式,我們可以方便的利用 Chrome App 制作一個網頁版本的桌面應用,不僅有著不輸原生客戶端的功能,還有更好的字體選擇。
值得注意,我們需要將 Chrome 中默認的三類字體(Standard、Serif 和 Sans-serif)全部替換為有著更好渲染效果的字體。我這里推薦這個字體:Sarasa Gothic / 更紗黑體 / 更紗黑體 / 更紗ゴシック。更紗黑體是一個在 100% 縮放比例下同樣有著優秀的顯示效果的字體。在 這里 可以下載到最新的 ttf 字體,安裝之后會得到幾個字體,其中我們需要的就是「更紗黑體 UI SC」,即「Sarasa UI SC」。(SC 代表 Simplified Chinese,簡體中文。)
安裝之后的更紗黑體家族
之后,在 Chrome 的設置界面,將默認字體中的三個選項全部更換為「Sarasa UI SC」,就可以了。
在 Chrome 設置里將字體全部換成更紗黑體
舉個我在上面鏈接文章中同樣提到的例子:Slack。
Slack Chrome App 和 Slack Desktop 的對比
跟來自微軟商店的 Slack 版本進行對比:左側利用 Chrome App 制作的客戶端的 UI 不僅是正常的非襯線字體,顯示效果也要比右側的好上不少。令人愉悅!
當然,上面的措施都有可能沒辦法徹底解決 100% 縮放比例下,依舊兼容 Windows XP 的老舊客戶端字體的渲染,這時候選擇一個合適的字體來全局范圍內替換微軟雅黑就比較重要了。全局替換 Windows 字體是一件麻煩且風險巨大的事情,選擇不合適的字體和字符集都有可能導致某些不兼容的程序出現亂碼,因此接下來你要清楚,你即將做的事情有著極大的風險。
noMeiryoUI 是一個由日本友人開發的開源 Windows 字體替換工具,在 這里 可以下載到最新的版本。下載之后,解壓縮,你會得到這樣的一個文件目錄:
noMeiryoUI 下載解壓后的目錄文件
其中我們要運行的就是那個 exe 文件。點擊運行程序,然后我們將默認的微軟雅黑替換為剛剛安裝好的更紗黑體「Sarasa UI SC」:選擇「Select...」菜單,在「Font Selection」中選擇「Sarasa UI SC」,然后選擇「OK」;之后在主頁面選擇「Set all」,稍等片刻,主頁面中全部選項就設置為更紗黑體了,然后我們點擊「Set」,這樣就完成了我們字體的替換。
noMeiryoUI 字體替換界面
經過這樣的操作,我們可以看到包括 Windows 資源管理器、右鍵菜單等等一系列地方的字體都被替換成了更紗黑體。
微軟雅黑和更紗黑體的對比(文件資源管理器界面)
上圖是一個對比,不過因為我電腦是 2K 分辨率的屏幕,其對比并沒有很明顯,更多是字型上的差別,但是如果我將電腦外接 1080p 分辨率的顯示器的時候,兩種字體的顯示效果差別就很是明顯了。總之,更紗黑體相比微軟雅黑在 100% 縮放比例下的顯示效果確實要好上一些。
但是需要注意的是,采用 DirectWrite 渲染引擎的 UWP 應用程序并不受我們這個方法字體替換的影響。當然,UWP 由于 DirectWrite 的存在,已經有很大的字體渲染進步,因此我們也就不強求咯。
優化 Windows 字體的步驟大概到這里就結束了。如果你還記得某個 Windows 版本里面引入了「新微軟雅黑」,那個新字體就是 Windows 平臺中文(或者更廣義的:CJK 文字內容)字體的終極解決方案了,讓我們共同期待新字體的上線。
最后,希望這篇文章可以幫助你更好地在享受 Windows 平臺生產力的同時,也有著精致的用戶界面體驗。
為了與眾不同,不少人喜歡在自己的電腦中安裝使用個性化字體。不過字體是系統底層組件,操作過程中如果出現誤刪或者損壞字體,就有可能引發系統或一些應用程序使用異常。那么Windows 10系統如果遭遇字體故障,我們該怎么解決呢?
一鍵恢復解除字體顯示故障
當我們遇到系統字體故障,比如使用第三方主題導致字體顯示錯誤時,可以重置字體組件,快速恢復到系統原來的默認字體。在Windows 10中,依次打開“控制面板→外觀和個性化→字體”,點擊“更改字體設置”,接著在打開的窗口中點擊“還原默認字體設置”,即可將系統字體恢復到初始狀態(圖1)。
圖1 恢復默認設置
Windows 10默認字體實際上是由注冊表中的相關鍵值確定的,如果執行上述操作后故障依舊,那么原因可能是第三方程序更改了注冊表。這時以管理員身份啟動注冊表編輯器,依次展開[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts],找到右側的“Microsoft YaHei & Microsoft YaHei UI (TrueType)”,打開后將“數值數據”值更改為默認的“Msyh.ttc”。接下來再將“Microsoft YaHei Bold & Microsoft YaHei UI Bold(TrueType)”更改為默認的“Msyhbd.ttc”,以及將“Microsoft YaHei Light & Microsoft YaHei UI Light (TrueType)”更改為默認的“Msyhl.ttc”重啟后即可恢復默認設置了(圖2)。
圖2 恢復注冊表設置
微軟雅黑從Windows Vista開始就作為Windows中的默認字體(Windows XP默認字體是宋體),它包括Msyh.ttc(雅黑常規字體,主要用在資源管理器的菜單、開始菜單等系統UI上)、Msyhbd.ttc(雅黑粗體)和Msyhl.ttc(雅黑細體字體)。Msyhl.ttc常用在開發中,比如很多APP中的菜單文字使用的是它。了解這些系統字體的設定后,我們只要在注冊表中修改對應的鍵值,就可以恢復系統默認字體了。
命令行快速恢復注冊字體
默認情況下,我們下載字體文件后,右鍵點擊選擇“安裝”就可以完成特定字體的安裝。不過在安裝一些帶有BUG的應用程序時,可能會遇到字體無法注冊的故障。
當遇到上述情況,我們可以借助FontReg.exe命令行進行修復。首先到https://www.rizonesoft.com/download/6033/下載該命令行軟件,將其解壓到D盤根目錄(d:\)。接著根據自己的系統類型(32還是64位)選擇相應命令,這里我們以64位系統為例。以管理員身份啟動命令提示符運輸入執行“D:\FontReg_x64.exe”,該命令就會將系統中沒有注冊的字體全部自動注冊了,非常快捷(圖3)。
圖3 命令行注冊字體