看板 Browsers 關於我們 聯絡資訊
打上下面的補丁可以讓MacType修改系統的DirectWrite設置, 關閉DirectWrite使用的Grid-fitting,讓高DPI下字體顯示變好看。 效果Win10 Edge打補丁前 Edge打補丁後 背景說明 1. 因為中文字筆畫很多很複雜,當小字體的時候能使用的像素點很少, 像素不夠多描繪出所有的筆畫,字體會黏成黑黑的一團無法分辨, 所以這時候必須要省略一些筆畫細節,將字體扭曲變形, 以有限的像素點來呈現原本字體大略的形象,才能讓人看得懂顯示的是什麼字。 這個包含在字型裡,告訴渲染引擎要省略哪些筆畫(像素點)的資訊, 稱為Hinting,在ClearType、DirectWrite底下就是由Grid-fitting這個功能來完成的。 2. 然而現在螢幕的解析度越來越高,人們通常使用高DPI來顯示字體, 在大號的字體下,已經有足夠多的像素點來顯示所有的中文筆畫, 所以省略筆畫的Hinting已經沒有必要,而且有一些字體附帶的Hinting訊息效果不好, 加上Hinting後字體反而殘缺不全,高低不齊,變得非常難看。 3. 所以之前人們提出了二種方法來解決這個Hinting的問題。 第一個方法是去掉字型本身附帶的Hinting資訊,改造成沒有Hinting的字型, 用來替換掉原本的系統字型。 這個方法的缺點是使用傳統GDI渲染的應用使用這個字型時,顯示效果會非常慘烈。 第二個方法是修改字型裡面的GASP表格, 讓使用DirectWrite渲染的應用不會讀取字型內建的Hinting訊息, 但是GDI應用則不受影響,就不會有第一個方法的缺失。 不過這個方法只對本地替換過GASP表格的字型有效, 如果網頁使用的是Web Font就一樣沒輒, 還有在Win7下也沒有作用。 4. 微軟在Win10 10586以後自己修改了字型的GASP表格,降低了一點點門檻, 讓大字號(21px以上)的字體不使用Grid-fitting, 然而...21px的門檻還是太高了,系統DPI要設置為200%才有作用, 而擁有超高解析度螢幕的使用者目前還不普及,所以這個修改仍然不太實用。 因此只有直接修改系統的DirectWrite設置, 在全域關閉DirectWrite的Grid-fitting, 這樣不管用什麼字型都不會受到Hinting的摧殘, 才能夠完美解決Windows字體顯示的問題。 現在日本2ch上有一位網友利用開放原始碼的MacType, 為MacType加上了可以修改系統DirectWrite設定的功能, 讓我們可以利用MacType關閉DirectWrite的Grid-fitting, 在Win10 HiDPI下可以呈現最忠實自然無破壞的字體顯示效果。 下載 http://silight.hatenablog.jp/entry/MacTypePatch 按照說明替換MacType的檔案 How to use 1. Open MacType directory. 2. Rename or delete EasyHK32.dll and EasyHK64.dll(64bit only) 3. Copy our DLLs and UserParams.ini to MacType directory. 4. Also Copy our DLLs to System directory as below. 32bit C:\Windows\System32\EasyHK32.dll 64bit C:\Windows\System32\EasyHK64.dll C:\Windows\SysWOW64\EasyHK32.dll Good Luck! 打完補丁後GDI的部分仍然是使用原本MacType(FreeType)的渲染設定, 而使用DirectWrite渲染的程式則會按照UserParams.ini裡設置的參數來渲染。 注意事項 1. 這個補丁在Win8.1/Win10下的效果和Win7/Win8是不同的 因為Win8.1/Win10的DirectWrite有關掉Grid-fitting的選項, 而Win7/Win8並不支援這個功能,所以最重要的GridFitMode = 1參數沒有作用。 2. 在Win7/Win8下如果要避免Grid-fitting, 渲染模式只能選Outline(RenderingMode = 6), 但是在Outline模式下,調整Gamma值這些參數,還有雙向的次像素渲染都會失效, 在DirectWrite+D2D硬體加速下也只能用x軸的灰階抗鋸齒,y軸無渲染效果, 所以抗鋸齒的效果會不太好。 效果Win7 IE11打補丁前 IE11打補丁後 修改UserParams.ini 將Win7的渲染模式設定改為 6 = Outline 可以看到原本高低不齊的微軟雅黑變得相當整齊, (例如第一行的「火燒車釀成」的「成」這個字特別扁) 鋸齒稍微減少一點,字體稍微變黑一點, 不過最重要的還是高低不齊的字體會變得比較整齊。 3. 對Chrome部分參數設定沒有作用 Chrome部分渲染處理是自行處理的,所以無法通過DW設置修改 4. 對Chrome的Flash文字沒有抗鋸齒的效果 這是已知的Chrome的Bug,要等Chrome修正他的Flash外掛之後才會正常 5. 使用MacTray拖盤加載的渲染方式,結果無法渲染商店應用 本來就是如此,這是正常的,請改用服務加載或者註冊表加載 (圖等有空再補...) -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.219.36.191 ※ 文章網址: https://www.ptt.cc/bbs/Browsers/M.1469056177.A.B96.html
zhtw: 前幾天有看的 還沒時間測試 不知道效果好不好…chromium要用 07/21 08:28
zhtw: mactype渲染蠻麻煩的 還有Bug偶爾會缺字 07/21 08:28
rick: 等圖中.. 07/21 08:47
mayuyu: 不不,這個補丁不是用MacType(FreeType)來渲染Chrome 07/21 08:50
mayuyu: 他是透過MacType使用的EZHook,去Hook DirectWrite的API 07/21 08:50
mayuyu: 然後凡是使用DirectWrite渲染的應用 就會通過EZHook 07/21 08:50
mayuyu: 覆寫的參數來進行渲染 所以我們就可以改變原本 07/21 08:50
mayuyu: DirectWrite輸出的效果 07/21 08:51
mayuyu: 就好像...送貨的途中被別人攔截綁票一樣xD 07/21 08:51
mayuyu: 所以Chrome不用改任何設定 還是一樣用原本的DirectWrite 07/21 08:51
mayuyu: 輸出 處理的引擎還是DirectWrite 只是覆寫修改了 07/21 08:51
mayuyu: DirectWrite本身提供的參數 主要是去掉Grid-fitting 07/21 08:51
mayuyu: 所以這個補丁不是將DW的程式改用MacType渲染 07/21 08:51
mayuyu: 而是利用MacType使用的EZHook來覆寫DW的設定 07/21 08:51
mayuyu: 真正在處理渲染的仍然是DirectWrite 所以有二條路線 07/21 08:52
mayuyu: DW渲染的應用 -> 覆寫DW參數 -> 交由DW渲染 07/21 08:52
mayuyu: GDI渲染的應用 -> MacType(FreeType)渲染 07/21 08:52
mayuyu: 還有Chrome從52版以後 就會拔掉傳統GDI輸出 07/21 08:55
mayuyu: 以後將只能使用DirectWrite渲染 不能關閉DirectWrite 07/21 08:55
mayuyu: 所以現在關閉Chrome的DW 讓MacType可以渲染Chrome的方法 07/21 08:55
mayuyu: 將會在52版以後失效 07/21 08:55
mayuyu: 而這個補丁由於上述的原理 不會有失不失效的問題 07/21 08:57
mayuyu: 圖不太有時間弄 作者的網頁有附看不太出來效果的簡圖 07/21 08:59
mayuyu: 可以加減看:p 07/21 09:00
zhtw: 我說的就是關掉DW後的渲染啦 關掉DW再渲染有時候會漏字 07/21 09:16
hohiyan: 麻友友的圖呢?(我要看綁馬尾的 07/21 09:51
shasen1235: 比較想等Stylish出來比較方便 如果有的話XDD 07/21 09:58
abccbaandy: 同樓上,web還是用stylish比較穩 07/21 10:16
abccbaandy: 不過其他程式就無解了...有些遊戲的中文真的看到快瞎 07/21 10:17
abccbaandy: 掉 07/21 10:17
mayuyu: 圖來了 http://i.imgur.com/vN6pxLk.gif 360度無死角 07/21 12:18
t7yang: 我可以噓嗎?害我還很認真地點開圖來看(笑 07/21 12:46
mayuyu: 就h大要求的mayuyu馬尾圖啊(無辜 07/21 13:17
mayuyu: 正經的圖 來不及擷Win10的 用Win7的IE11當範例吧 07/21 13:18
mayuyu: 打補丁前 http://i.imgur.com/VFxRIQo.png 07/21 13:18
mayuyu: 打補丁後+RenderingMode設為6=Outline 07/21 13:19
mayuyu: http://i.imgur.com/wdaj8BG.png 07/21 13:19
mayuyu: 圖裡面的字型是微軟雅黑 因為Win7的IE11在設定裡選 07/21 13:19
mayuyu: 「忽略網頁指定的字型」 雅虎奇摩新聞會變成用 07/21 13:19
mayuyu: IE簡體中文字型那邊的設定 用雅黑當範例有一個好處是 07/21 13:19
mayuyu: 雅黑的Hinting是公認的非常慘烈 07/21 13:19
mayuyu: 開了Hinting後字體的高低變化會非常劇烈 07/21 13:20
mayuyu: 造成字體排起來特別不整齊 例如第一行的「火燒車釀成」 07/21 13:20
mayuyu: 的「成」這個字特別扁 和旁邊的字形成很大的落差 07/21 13:20
mayuyu: 變得非常難看 所以去掉Hinting後的改善特別明顯 07/21 13:20
mayuyu: 不過要注意的是中國繁體字的寫法和台灣的標準寫法不同 07/21 13:20
mayuyu: 例如「超過負載」的「過」這個字 07/21 13:20
mayuyu: 對比表 http://i.imgur.com/HHgr6fQ.png 07/21 13:21
mayuyu: 如果你用明蘭字型的話 明蘭是舊字體(康熙字體) 07/21 13:21
mayuyu: 辶上面會有二點 手機上的Droid Sans Fallback和文泉驛 07/21 13:21
mayuyu: 都是使用中國的繁體標準 所以如果是要給學習教育部 07/21 13:21
mayuyu: 標準寫法的學生使用的話 就不適合採用這些字型 07/21 13:21
abc0922001: 衝著麻友,來試試看。我的是15.6吋1080p的螢幕,會變 07/21 13:47
abc0922001: 比較好嗎? 07/21 13:47
hohiyan: 這圖好(讚 XDDDD 07/21 14:31
Kreen: Mayuyu 用的是哪個版本的 Mactray 和 Mactype 呀?還是這點 07/21 15:43
Kreen: 沒關係? 07/21 15:43
kaoh08: Safari支援 http://i.imgur.com/4Zoih2l.png 07/21 17:14
Weikey: 請問Chrome52以後要怎麼辦, 我真的快被中文字體的渲染氣瘋 07/24 09:11
Weikey: 了,他們開發的時候就不能把字體的美觀放在心上嗎? 還是處 07/24 09:12
Weikey: 理字體其實很簡單, 是我不知道方法?? 怎麼好像很多人都沒 07/24 09:12
Weikey: 這問題, 一直以為覺得字體的問題應該是月經文,很氾濫的.. 07/24 09:13
Weikey: 今天起來看到chorme又怎麼模糊,一整個火氣很大 >< 07/24 09:14
Weikey: 已經先用回chorme50了~~ 要不然眼睛真的受不了 07/24 09:45
tom27751989: 是說我用了之後好像還是一樣... 07/24 13:10
tom27751989: chrome系的瀏覽器還是要停用dw 渲染才會成功 07/24 13:13
tom27751989: 但是flag裡面設定會變亂碼 07/24 13:13
junorn: 圖比字重要(O 07/25 14:34
Chemise: 用了沒變+1 想請問如何解? 52版看了眼睛很瞎orz.. 07/25 21:49
zhtw: 偷偷說 Cent新版會把DW選項做回去 目前在測試中了(還有BUG) 07/27 11:48
sate5232: 我照做了 UWP程式例如Edge等都還是沒渲染.... 08/02 21:45
sate5232: 也是用註冊表加載 08/02 21:49
maxximus: 感謝mayuyu的詳細解釋,之前在另一個對岸網友的網頁看到 08/12 09:58
maxximus: 那個日本網友的補丁,但是不太了解原理,現在知道了。 08/12 09:59
maxximus: https://zhuanlan.zhihu.com/p/21676135 08/12 09:59