Windows操作系統作為優秀的操作系統,由開發操作系統的微軟公司控制接口和設計,公開標準,因此,有大量商業公司在該操作系統上開發商業軟件。 希望在 Windows 上修改字體,跟我討論了好一會兒 Windows 的字體渲染問題,他向我吐槽「也沒個講得清楚的教程」。確實,Windows?的字體渲染問題一直是一個老大難,每隔一段時間就會有人吐槽?Windows?的字體有多難看、macOS?的字體又有多美觀。 實際上,微軟在這方面并非毫無作為,而是進行過多次優化。但由于軟硬件上的種種限制,讓廣大群眾至今沒能真正享受到高質量的字體渲染效果。 今天就讓我來帶大家仔細講講?Windows?的字體渲染為什么這么差,以及如何用穩定的方法解決字體渲染問題。 Windows 的字體渲染問題出在哪里?長期使用 macOS 的用戶可能無法理解 Windows 用戶到底在發什么牢騷。 為了有一個直觀的感受,我在 Windows 和 macOS 中各截取了一些文字。對比一下下面這兩段文字,就會發現它們的實際觀感區別很大。 將 macOS 下的文字放大后觀察,字體美觀、邊緣厚實,一筆一劃很是清晰。 Windows 的字體只能算是能夠看清,但邊緣總有些發虛,對比之后則略遜一籌。放大后觀察,邊緣有一些紅綠小色塊,「安」字中間的一橫顯得顏色很深,整體多少有些不協調。 而出現這種情況的原因有很多,我總結了以下 3 點—— 屏幕顯示分辨率低屏幕的顯示分辨率是首當其沖的問題。 為了描述這個問題是怎么出現的,除了屏幕本身的分辨率和尺寸之外,我們還需要了解顯示器的一個重要參數:PPI(Pixels Per Inch),指的是「每英寸的像素數量」。 我們可以用一個公式來計算出屏幕的 PPI: 比如一塊 1920 x 1080 的 15.6 寸顯示器,它的 PPI 就是 √(19202 + 10802) / 15.6 = 141.21。從這個公式中可以看出「同等分辨率的屏幕越大,PPI 就越低」。 如果我們想在屏幕上顯示文字,就需要在像素點陣中填充內容。比如你想在 12 x 12 的點陣下塞進一個中文漢字,只用黑白兩色填充就只能得到圖中的點陣文字。只有換成一個更大的點陣,筆畫之間才會有空間填充更多的筆畫細節,從而使筆畫之間變得更為順滑。 近些年出產的 Mac 都配備上了 Retina 屏幕,分辨率從 2560 x 1600 到最高的 5120 x 2880 不等,PPI 可以達到 227。實際使用時,macOS 通常會采用縮放,讓一塊高分辨率的屏幕顯示更多的內容,文字自然會變得更加清晰。 而 Windows 方面,仍然有大量的電腦在使用 1920 x 1080 的分辨率和更低分辨率的顯示器,大多數萬元以下的筆記本配備的也是 1080P 甚至是 1366 x 768 的顯示器。一塊 15.6 寸的 1080P 屏幕,PPI 只能達到 141 上下。相比高 PPI 的 Mac,Windows 的文字顯示自然比不過它。 所以,屏幕分辨率屬于 Mac 天然的硬件優勢。 字體問題第二個問題在于字體。?字體的字形不同,也會影響字體的顯示效果。 比如在 Word 中使用四號宋體,邊緣會顯得模糊,而小四、五號等字號時,邊緣則十分銳利。即使直接在 Word 中使用蘋方字體,邊緣也會出現一定的模糊。 這種進行模糊處理的方式,其實是?Windows 對于低分辨率屏幕下字體顯示進行的特殊處理:Hint。每個字體本身會帶有一個 GASP 表,Windows 的渲染引擎會根據這些 GASP 表來判斷是否需要做處理。 當屏幕分辨率過低或是字太小,不足以顯示所有文字細節時,Windows 就會啟動 Hint 讓文字變得更清晰,這本來是一件好事。 然而如果字體的 GASP 表不完善,就會讓 Hint 誤操作,本來就是可以正常顯示字體的高分屏,但經過 Hint 處理過后,原本清晰的字體反而變得模糊、筆畫高低不平了,這就是字體本身的問題。 這個問題曾出現在 Windows 的默認字體微軟雅黑上。如今最新版的 Windows 10 中內置的微軟雅黑已經進行過優化,比以前要好很多了。 渲染方式問題如果排除上面兩個因素,最后的問題就是系統的文字渲染方式了。 粗略地講,Windows 目前采用三種不同的渲染方式,它們之間是相互補充的關系,同時存在于系統中。
其中的傳統字體渲染引擎 GDI 很老,采用 GDI 的 Win32 軟件在高分辨率屏幕下使用 100% 之外的縮放就會出現模糊。但由于采用 GDI 的軟件實在太多,牽一發而動全身,微軟無法輕易換掉 GDI。 于是 ClearType 便應運而生。ClearType 的原理是讓顯示器的 R , G , B 次像素放光,在 x 和 y 軸上增加一些顏色進行微調,使得文字更清晰。 不過這尚未真正解決問題,在 Windows 10 默認啟用 ClearType 的情況下,文字表現依然不佳。最前面的對比圖中,Windows 的文字邊緣就有這種紅綠小色塊的身影。在低分屏下,這種小色塊會讓文字邊緣顯得「有些糊」,中文的筆畫也會有深有淺。 于是微軟又推出了新的 DirectWrite 引擎,它就是為了取代 GDI 和 GDI+ 而誕生的。它的渲染方式已經和 iOS、Android 上采用的 FreeType 引擎效果接近,只是我們日常用的許多老軟件未做適配。所以這也是為什么 UWP 應用的字體渲染會比 Win32 軟件看起來要好一些的原因。 如果做一個形象的比喻,那么 GDI 就是年邁的老人,ClearType 就是一副眼鏡,DirectWrite 則是更能干的接班人。 可以發現,字體渲染方式的問題其實是多方面的,根源就在于 GDI 的老舊、ClearType 的不完善、軟件不跟進 DirectWrite 這些問題上。這幾個渲染方式會影響到優化時的一些操作,我們后面還會提到。 如何搞定渲染了解字體渲染效果差的原因之后,我們可以發現 Windows 的字體渲染問題還不少,這些問題可以有很多種解決方法,括號中是解法的簡單概括——
![]() 明確了問題和產生問題的原因,那我們就根據這幾個問題來分別做出對應的優化。 下面我從簡單到復雜,介紹多種優化字體渲染的方法。由于沒有人會愿意因為美觀而舍棄系統的穩定性,所以在下列方法中,不會出現改動注冊表、手動修改系統文件的方法,穩定性?永遠是第一要素。 解決顯示器分辨率過低、老軟件適配差問題其中顯示器分辨率屬于硬件問題,想一勞永逸地解決問題,可以選擇購置 2K 分辨率以上的顯示器,Windows 在高分屏上的字體渲染表現不俗。然而,考慮到 2K 顯示器「同樣不俗」的價格,大部分人還是會選擇在現有的硬件資源上進行軟件優化。 如果想在現有的硬件上做優化,最簡單最安全的方法自然是 Windows 內置的方案了。 直接修改縮放在 Windows 中提供了一個簡單的「縮放功能」來放大系統的界面。它的效果是讓一個文字獲得更多的像素點。從而獲得更好的視覺體驗。 在「設置 - 系統 - 顯示 - 縮放與布局」中調整「更改文本、應用等項目的大小」,從 100% 到 200% 不等。這些選項中 Windows 會給出一個推薦選項,可以選擇適當提升一檔。 如果你覺得 200% 的縮放仍然不夠,「高級縮放設置」中允許你調整到 100% - 500% 之間的任意數字。不過一般不建議改動這一項。 修改單個應用的縮放不過調整縮放之后,會讓一些對 DPI 縮放支持較差的老應用出現嚴重模糊,像是老版本的迅雷、QQ 等軟件。這時候可以單獨調整應用的縮放。 在軟件的快捷方式上右鍵,打開屬性菜單。如果是在任務欄上的軟件,「右鍵圖標 - 右鍵菜單中的名稱 - 屬性」就可以進入屬性設置界面。 然后在「兼容性」選項卡中,選擇「更改高 DPI 設置」,選中「替代高 DPI 的縮放行為」。其中的?應用程序?指的是讓軟件保持 100% ,系統?指的是根據系統設置的縮放比例來調整(可能會變得模糊),系統(增強)?會對那些基于 GDI 渲染方式的軟件進行更多的優化。 所以如果遇到了上面的問題,你可以選擇使用?應用程序?或是?系統(增強)?來做一些特殊調整。 修改字體大小如果你目前正在使用的就是高分辨率的屏幕,反而覺得有些字太小、看不清。又不想調整所有界面的縮放,那就可以根據需要單獨調整文字的大小。 在「設置 - 輕松使用 - 顯示 - 放大文本」中調整滑塊,然后選擇「應用」。 之后電腦會進入半分鐘左右的等待時間,結束后,Windows 中的所有文字都會被放大一些,文字的觀感也會有所提升。 這三種方法都是 Windows 內置的方法,經過簡單且安全的操作,就可以讓我們在分辨率稍低的顯示器上獲得較好的文字觀感。同時解決了一部分老軟件的適配問題。 解決字體本身產生的問題如果調整了屏幕縮放,文字依然模糊。那就需要解決字體問題了。替換字體有兩種思路:
全局更換字體的簡單方法更換系統字體有許多方法,小軟件、小工具也不少。這里推薦一個來自日本開發者的「全局字體更換」開源小工具:noMeiryoUI,noMeiryoUI 的特點是針對亞洲字符集字體做了優化。軟件可以在?Github 鏈接?下載。 noMeiryoUI 的操作和使用都非常簡單。你只需要事先找到并安裝一個適合日常使用的字體,要避免選擇缺胳膊少腿的字體,以免改完后出現許多? 然后就像在編輯器里修改字體一樣,點擊? 然后選擇? 經過 noMeiryoUI 替換字體后,大部分 Win32 軟件(包括系統軟件在內)改變默認的字體和字號。noMeiryoUI 無需開在后臺,一次替換就能長期使用。 為了展現替換效果,我選擇了和系統字體差別明顯的幼圓字體。軟件中采用 DirectWrite 渲染的部分文字是無法替換的,菜單則被完整替換了。 修復字體 Hint 模糊的方法字體模糊的情況通常在采用 125% - 200% 縮放比例的情況下發生。所以修復微軟雅黑、宋體等系統默認字體本身產生的模糊,也是一個可行的方案。 上面講到由于錯誤的 GASP 信息產生了不正確的 Hint,那么禁用 Hint 就能讓文字變得更銳利一些。在這篇 @HydricAcid 的?《修正 Gasp 表來去除字體 Hint 的教程》?中進行了詳細的解釋,采用的是極限社區的 @RadarNyan 提供的「去除所有 DPI 下的 Hint」方案。 大致的思路是:使用批處理腳本處理系統默認字體的 GASP 信息、進入命令行模式(解除字體占用)、將處理后的字體覆蓋原字體。 這個操作與換一個字體作為系統字體不同,它會修改并替換系統字體文件本身,在未做備份的情況下替換字體可能會產生一些不可預料的后果(字體顯示問題、藍屏等)。所以安全性和兼容性比較一般,不是很推薦。不過它可以解決 DirectWrite 模式下的 Hint 模糊問題,需要的讀者可以進入該鏈接按步驟操作。 解決渲染時產生的模糊如果調整縮放、修改字體都沒有緩解字體模糊,就需要采取一些其他手段來解決字體渲染引擎產生的模糊。 更換系統字體渲染引擎:MacType更改字體渲染引擎是一個龐大的工程,只要是有文字的地方就會用到字體渲染,牽一發而動全身,不得不慎重。 Windows 上表現出色的字體渲染軟件是?MacType,它可以幫助改善 Windows 中基于 GDI 的字體渲染,并支持熱替換系統的默認宋體。你可以在它的?Github 鏈接?下載到 Beta 版本。 MacType 的加載方式下載并安裝后,MacType 會進入一個用戶向導界面,你可以自主選擇 MacType 的加載方式。 這幾種加載方式的優缺點已經在軟件界面中詳細說明,如果要概括一下:
如果想要全局使用,我個人比較推薦服務加載,軟件不會影響到注冊表,停用時比較方便。 如果只是想針對個別軟件進行字體優化,則推薦?MacTray 托盤獨立加載。 這些加載方式各有優缺點,大家可以衡量一下自己對于美觀度和穩定性的要求,來選擇最適合自己的方法。 MacType 的配置文件如果你不想做過多的配置,直接使用第二步中預設的默認配置文件,點擊完成就配置完畢了。如果對這個配置的渲染效果不滿意,可以多試幾個,也可以自行配置文件。在網絡上也有不少 MacType 相關的字體和配置文件。 不過 MacType 的功效仍然是有限的,它不支持采用 DirectWrite 字體引擎的軟件(主要是 UWP 應用)。你需要做更多的配置才能實現。在這篇 @Weiyi_Kong 的?《用 MacType 拯救你的 Windows 字體 | 一日一技》?中,對于如何用 MacType 來修改 UWP 字體有詳細的介紹。 由于需要手動修改? MacType 的其他注意事項盡管 MacType 的效果已是十分喜人,但它作為第三方軟件,仍然不可避免地出現一些問題。 它的兼容性一般,它在大部分情況下都能正常運作,但在部分軟件、游戲、驅動程序中會出現錯誤的文字渲染,比如一整行文字擠在一起。如果追求工作環境的穩定,則不建議使用 MacType。如果你在安裝 MacType 之后,一些原先可以打開的軟件忽然打不開了,一定要記得在 MacType 中排除這個軟件。 順帶一提,目前 Chrome 會默認開啟 DirectWrite 且不可關閉,這種情況下使用 MacType 偶爾會產生沖突。網上有許多人求禁用 Chrome 中 DriectWrite 的方法,其實沒有這個必要。只需要在 MacType 中關閉針對 Chrome 的渲染,并在 Chrome 中修改瀏覽器顯示字體就可以了。 小結Windows 的字體渲染問題并非是微軟完全不作為,因為在 Windows 10 的 1703 和 1809 中,字體方面都得到了小幅度的改進,微軟雅黑這個字體本身也經歷了多次迭代,還有傳聞稱今年四月份微軟將會用蘭亭黑體替換掉微軟雅黑。但在目前,Windows 渲染效果差仍然是個不爭的事實。 文章對產生這個問題的原因進行了分析,顯示器分辨率,系統默認字體,老的引擎難以淘汰、新的引擎未能覆蓋……但只要對癥下藥,這些問題都是可以解決的。分別從分辨率、字體、渲染引擎幾個角度下手,就能搞定 Windows 的字體渲染問題。 Windows操作系統對硬件支持良好。 |
溫馨提示:喜歡本站的話,請收藏一下本站!