Windows 10 一週年更新版本下使用 MacType 渲染

在 Windows 10 系統下使用 4k 螢幕並放大到 200% 時,可以很直觀的發現 ClearType 的字體渲染比 Windows 7 時好看多了,盡管依然比不上 Mac OSX,但還算看得過眼,故一直沒在電腦上安裝 MacType 渲染字體。直到七月底 Windows 10 的免費升級方案截止前,才把所有舊的電腦、筆電升上 Windows 10,印入眼簾的就是難看的可以的系統。
這幾天在升級 Windows 10 一週年更新版本(版本 1607、OS 組建:14393.10)時,順帶把 MacType 找出來安裝,想當然原先的版本自 2013 之後原開發者就沒有繼續維護,更新的時候頻繁當機、出狀況也是很正常的,後來才在 github 找到原來是 EasyHook 版本過舊的原因。
所以,在安裝使用 MacType 前務必先進行 Windows 10 的大更新,已經安裝的話也請在大版本更新前停用、移除再執行升級。(不然就只能按著電源鍵強制關機,恢復先前版本了)
MacType 原開發者 FlyingSnow 已於 2016 年的 8 月 30 日起推出 2016 後繼版本的更新,為避免與原文混淆,我獨立將相關內容更新在頁底第五、第六章節,之前原文內容,不予更改。Windows 10 使用者建議直接改用最新版本。
零、關於 MacType
開始之前,先簡單的介紹一下 MacType,MacType 是由 FlyingSnow 延續 GDI++ 開源專案的字體渲染軟體,直白的說就是替 Windows 的使用者在網頁瀏覽、系統界面、一般程式中呈現更好看的字體顯示效果。
誠如前面提到 MacType 是延續 GDI++ 開源專案而來,侷限當然就是只能渲染 GDI+ 的程式。所以對 Windows 7 之後,採用微軟開發的新字體渲染引擎 DirectWrite 方案的程式像是微軟自己的 UWP APP、Office 系列程式一直沒有直接的解決辦法,最大眾化的差異就體現在 Chrome 52 版拿掉禁止 DirectWrite 功能後,呈現出一片模糊的效果。(幸好在 Firefox 上不是問題)
令人雀躍的是,現在可以透過第後面提到的第三方開發 patch 擁有初步的解決方案。
所以在這篇方法下,MacType 能幫我們做到的事情包括渲染 Windows 中使用 GDI+ 引擎顯示的軟體,以及在不修改系統的情況下快速更替使用的系統字體、讓 DirectWrite 的 Grid-fitting 功能不執行避免中文字筆劃被省略、改變。
一、安裝 MacType
1、原開發者 FlyingSnow 的 Google Project 網站有提到,但並沒有放置最後一個 2013 的 MacType 版本(版本號:2013.1231.0),可以從「糖果の無人小島」找到打包好的版本,也可以從這邊下載單純的安裝檔。(原開發者已經更新,見最後一段)
2、下載完後,直接安裝即可,裡面沒有包廣告軟體之類,沒有什麼特別需要設定的地方,不過我個人建議在 Windows 10 環境下,不要安裝在「Program Files」和「Program Files(x86)」兩個資料夾下,以避免後續調整的 ini 檔在 Windows 10 重新啟動或更新時會失效;安裝完之後先到安裝的資料夾,打開 MacTray 選「停用」並「退出」。
二、用新的 EasyHook 避免系統出錯
前面提到原先的 MacType 由於 EasyHook 版本過舊的緣故,會導致 Windows 10 在更新過程中遇到問題,這部份有兩個解決方案,一個是 wspl 提出的更換 EasyHook 2.7 的辦法;另一個則是日本開發者 しらいと(slight_jp)的 MacTypePatch 方案。前者比較正規,後者則是前面提到處理初步解決 DirectWrite 無法渲染的辦法,兩個選一個就好了。
wspl 的方案
wspl 在他的「mactype-hack」計畫中提到的方案是將 EasyHook 的版本更新,使用他提供的方法是:
- 到頁面下載最新版本 Binaries 的 EasyHook(現在最新的是 v2.7.6035.0)
- 解壓縮後,從裡面的「NetFX4.0」裡找到 EasyHook32.dll、EasyHook64.dll
- 將 EasyHook32.dll、EasyHook64.dll 重新命名成 EasyHK32.dll、EasyHK64.dll
- 把這兩個檔案丟到 MacType 資料夾去取代同名檔案。
採用他這個方法後,更新就不會遇到問題,並且在 MacType 中的「註冊表兼容模式」以及「獨立托盤模式」都可以使用了。
しらいと(slight_jp)的方案
しらいと(slight_jp)在他的「MacTypeでDirectWriteの設定を変えるパッチ」中更進一步的提供了可以修改 Windows 10 DirectWrite 設定的能力,使用他 patch 的方法是:
- 從他的發佈頁下載最新的 MacTypePatch(現在最新版本是 1.18)
- 解壓縮後將資料夾內的 EasyHK32.dll、EasyHK64.dll 檔案複製貼上到 MacType 的安裝資料夾中
- 將「win8.1 or later」資料夾內的 UserParams.ini 檔案,同樣丟到 MacType 的安裝資料夾
- 如果 Windows 10 是 32-bit 的話:
- 將 EasyHK32.dll 也複製貼上到「C:\Windows\System32\」資料夾內;
- 如果 Windows 10 是 64-bit 的話:
- 將 EasyHK32.dll 丟到「C:\Windows\SysWOW64\」資料夾裡,
- 並且將 EasyHK64.dll 丟到「C:\Windows\System32\」資料夾裡。
- (這邊看仔細,我並沒有寫錯)
使用這個方法除了原本使用 GDI 渲染字體的部份會依照原來的設定檔渲染,採用 DirectWrite 的渲染字體的設定檔也會依照 UserParams.ini 渲染,此外當然也可以透過修改這個檔案自己調整 DirectWrite 渲染方式。
也就是說用這個方法能夠渲染閹割掉「關閉 DirectWrite 功能」的 Chrome 52 及之後版本的瀏覽頁面,需要注意的是這個方法只支援「註冊表加載模式」以及「服務加載模式」。
しらいと(slight_jp)的 MacType patch 在 8 月 30 號 Matype 原作者 FlyingSnow 更新了主程式後,依然繼續推出新的版本,喜歡他的 patch 效果,可自行到他的頁面下載後續更新替換。到我更新這篇文最新的 1.18 版為止和新舊版 MacType 主程式都相容。
三、MacType Beta
第三方作者 SU2LIN 基於 FreeType 開發的 MacType Beta 可以從他 blog 內連結下載,我使用了一陣子沒有什麼問題,在他的頁面上提供兩個 patch,一個是 MacType_dev_20160216 另一個是四月二十四號發佈的 Crash fixed 更新(跟 EasyHook 的部份重複,這可以不用下),使用方法:
- 先完成上面提到的安裝 MacType 和替換 EasyHook 步驟
- 下載 MacType_dev_20160216.zip,並解壓縮
- 將 MacType.dll、MacType64.dll 替換掉之前 MacType 安裝資料夾內的同名檔案
點兩下開啟 MacType 安裝資料夾內的 MacWiz.exe,選擇你喜歡的加載方式和設定文檔就大功告成了。
其中載入方式我喜歡用「服務加載」;設定文檔可以用自己喜歡的字體(這真的很重要)參考內建修改就行了,嫌麻煩的話,前面提到「糖果の無人小島」打包好的版本中,Candy Type LCD Lite、Candy Type Sharp Fix 設定都是很平衡的選擇,然後記得重開機~
四、用 MacType 渲染 Firefox
在完成好 MacType 安裝、更新 EasyHook、使用 MacType Beta 後,接下來就是最後 Firefox 設定的部份了:
- 在 Firefox 網址列,複製貼上 about:config,進入修改 prefs.js 檔頁面
- 在搜尋框中,複製貼上 gfx.direct2d.disabled,修改此偏好的值為 true。
- 不想停掉硬體加速,在Firefox 52 之後版本要多一個步驟,在搜尋框中貼上 gfx.content.azure.backends,把偏好從 direct2d1.1,skia,cairo 改為direct2d1.1,cairo,skia,或著直接刪掉 skia。
- 關閉重開 Firefox,這樣應該就可以看到渲染的結果了。
有人問上面第二步驟為什麼要把 gfx.direct2d.disabled 改成 true,那是因為一般啟用硬體加速後(在工具 > 選項 > 進階裡),MacType 渲染會失效,而透過此方法可以在不失去圖層加速的情況下讓 MacType 渲染字體。
參考上圖,如果直接關掉硬體加速,在 about:support 裡面 H264 等解碼會顯示無,下方 AzureContentBackend 會顯示 cairo。
其他程式的渲染方式可以參考 wspl/mactype-hack 在 github 頁面的內容,他還提供了像是 Atom、*Chromium、Microsoft Visual Studio、PyCharm 和 Universal Windows Application ......等程式的處理方式,如果有需要可以參考看看,也順便給他個 star 這樣。
五、原開發者 2016 全新版本的 MacType
MacType 的原始開發者 FlyingSnow 已於 2016 年 8 月 30 日開始一連更新了四個版本,這波更新不僅整合了しらいと(silight-jp)的程式碼(只整合到 1.13,後續要自己下載 patch 修正),啟用了對 DirectWrite 的支援(甚至 gamma 值可調),並支援各個版本的 Metro 類程式,以及和 Windows 10 的相容性。到 9 月 7 日的今天最新的版本是 1.2016.904.0 。
全新的 MacType 2016 各版本中,我只有短暫測試過作者發佈的 1.20160830.0 的版本,囿於 Chrome 套件崩潰以及 Edge 頻繁當掉,在主力的電腦上又恢復成前面一到三章節介紹的 2013 版本,故並不保證其效果。
昨日觀看 1.2016.904.0 討論頁面,似乎穩定性已經有所提昇,剛剛裝到另一台筆電上,Chrome 53 可以正常使用了,也沒遇到其他特殊問題才更新此篇,使用者可以依測試看看前面一到三章節提的方法或是全新版本那個比較符合需求。
下載位置:
使用應注意:
a.安裝新版本前必須完全移除舊版的 MacType,包括設定檔和前面提過的任何 patch,如舊版採用前面提過的しらいと(slight_jp)方案,sys32 和 sysWOW64 目錄下添加的 .dll 也要刪除。
b.安裝位置必須裝到 Program Files 下,才有辦法渲染系統界面。建議沒有特殊原因就採用「註冊表加載模式」(是說我用托盤模式也沒問題就是了)。
c.設定檔方面只有 default.ini 有啟動 directwrite,其它設定檔請手動修改 ini 檔設定,要使用 Directwrite 渲染,設定檔內必須增加 Directwrite = 1 值 ,大型程式最好是先使用設定檔內的 [unload dll] 排除,測試時在加回,避免找不到錯誤。
六、Windows 10 創意者更新後使用 MacType 方法
微軟在 2017 年 4 月 12 日開始推送 Windows 10 的第二波大版本更新「創意者更新」(Creators Update,版本 1703,OS 組建 15063.138)後,MacType 可能會出現安裝完成後,登入沒有字的情況。
解決辦法是更新前先移除 MacType(已經更新了也可以在設定那邊移除,重開機即可,不用重灌),並採用 FlyingSnow 去年所提供的全新版本 MacType 1.2016.904.0(參考章節五),並下載新做的臨時 patch MacType CTP 170307 W10,直接解壓縮覆蓋在安裝資料夾就行了。
到這邊其實就已經可以正常使用了,而在我的主力筆電上裝上章節二提到的しらいと(slight_jp)做的 easyhook 方案 MacType Unofficial Patch 效果會更好,不過也建議在多裝這額外 patch 前先備份系統下的 EasyHK32.dll、EasyHK64.dll,以方便自己選擇要不要加上這個額外的 patch。
最新版本是 MacType 1.2017.628.0,備份好自己的 ini 設定檔,完全移除重開機後再安裝即可,不用裝其他額外的東西。 新的預設 ini 檔跟過去有些不一樣,可以比對自己的設定檔做修改。
新的版本中比較值得注意的是效能改進、微軟內建的 Edge 瀏覽器不能被渲染、DirectWrite 下熱替換字體取消、DirectWrite 參數部份可以調整,以及令人歡欣鼓舞的 Chrome 和 Firefox 渲染支援(Windows 10 才有),之前自己設定檔取消掉的就快加回來吧!
詳細更新細節可以參考開發者在極限社區的兩個發佈頁: