[字體] 用MacType修改DW的設置讓字體變好看

看板Browsers作者 ((・ω・)ノ)時間7年前 (2016/07/21 07:09), 編輯推噓10(10065)
留言75則, 16人參與, 最新討論串1/3 (看更多)
打上下面的補丁可以讓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

07/21 08:28, , 1F
前幾天有看的 還沒時間測試 不知道效果好不好…chromium要用
07/21 08:28, 1F

07/21 08:28, , 2F
mactype渲染蠻麻煩的 還有Bug偶爾會缺字
07/21 08:28, 2F

07/21 08:47, , 3F
等圖中..
07/21 08:47, 3F

07/21 08:50, , 4F
不不,這個補丁不是用MacType(FreeType)來渲染Chrome
07/21 08:50, 4F

07/21 08:50, , 5F
他是透過MacType使用的EZHook,去Hook DirectWrite的API
07/21 08:50, 5F

07/21 08:50, , 6F
然後凡是使用DirectWrite渲染的應用 就會通過EZHook
07/21 08:50, 6F

07/21 08:50, , 7F
覆寫的參數來進行渲染 所以我們就可以改變原本
07/21 08:50, 7F

07/21 08:51, , 8F
DirectWrite輸出的效果
07/21 08:51, 8F

07/21 08:51, , 9F
就好像...送貨的途中被別人攔截綁票一樣xD
07/21 08:51, 9F

07/21 08:51, , 10F
所以Chrome不用改任何設定 還是一樣用原本的DirectWrite
07/21 08:51, 10F

07/21 08:51, , 11F
輸出 處理的引擎還是DirectWrite 只是覆寫修改了
07/21 08:51, 11F

07/21 08:51, , 12F
DirectWrite本身提供的參數 主要是去掉Grid-fitting
07/21 08:51, 12F

07/21 08:51, , 13F
所以這個補丁不是將DW的程式改用MacType渲染
07/21 08:51, 13F

07/21 08:51, , 14F
而是利用MacType使用的EZHook來覆寫DW的設定
07/21 08:51, 14F

07/21 08:52, , 15F
真正在處理渲染的仍然是DirectWrite 所以有二條路線
07/21 08:52, 15F

07/21 08:52, , 16F
DW渲染的應用 -> 覆寫DW參數 -> 交由DW渲染
07/21 08:52, 16F

07/21 08:52, , 17F
GDI渲染的應用 -> MacType(FreeType)渲染
07/21 08:52, 17F

07/21 08:55, , 18F
還有Chrome從52版以後 就會拔掉傳統GDI輸出
07/21 08:55, 18F

07/21 08:55, , 19F
以後將只能使用DirectWrite渲染 不能關閉DirectWrite
07/21 08:55, 19F

07/21 08:55, , 20F
所以現在關閉Chrome的DW 讓MacType可以渲染Chrome的方法
07/21 08:55, 20F

07/21 08:55, , 21F
將會在52版以後失效
07/21 08:55, 21F

07/21 08:57, , 22F
而這個補丁由於上述的原理 不會有失不失效的問題
07/21 08:57, 22F

07/21 08:59, , 23F
圖不太有時間弄 作者的網頁有附看不太出來效果的簡圖
07/21 08:59, 23F

07/21 09:00, , 24F
可以加減看:p
07/21 09:00, 24F

07/21 09:16, , 25F
我說的就是關掉DW後的渲染啦 關掉DW再渲染有時候會漏字
07/21 09:16, 25F

07/21 09:51, , 26F
麻友友的圖呢?(我要看綁馬尾的
07/21 09:51, 26F

07/21 09:58, , 27F
比較想等Stylish出來比較方便 如果有的話XDD
07/21 09:58, 27F

07/21 10:16, , 28F
同樓上,web還是用stylish比較穩
07/21 10:16, 28F

07/21 10:17, , 29F
不過其他程式就無解了...有些遊戲的中文真的看到快瞎
07/21 10:17, 29F

07/21 10:17, , 30F
07/21 10:17, 30F

07/21 12:18, , 31F
360度無死角
07/21 12:18, 31F

07/21 12:46, , 32F
我可以噓嗎?害我還很認真地點開圖來看(笑
07/21 12:46, 32F

07/21 13:17, , 33F
就h大要求的mayuyu馬尾圖啊(無辜
07/21 13:17, 33F

07/21 13:18, , 34F
正經的圖 來不及擷Win10的 用Win7的IE11當範例吧
07/21 13:18, 34F

07/21 13:18, , 35F
07/21 13:18, 35F

07/21 13:19, , 36F
打補丁後+RenderingMode設為6=Outline
07/21 13:19, 36F

07/21 13:19, , 37F

07/21 13:19, , 38F
圖裡面的字型是微軟雅黑 因為Win7的IE11在設定裡選
07/21 13:19, 38F

07/21 13:19, , 39F
「忽略網頁指定的字型」 雅虎奇摩新聞會變成用
07/21 13:19, 39F

07/21 13:19, , 40F
IE簡體中文字型那邊的設定 用雅黑當範例有一個好處是
07/21 13:19, 40F

07/21 13:19, , 41F
雅黑的Hinting是公認的非常慘烈
07/21 13:19, 41F

07/21 13:20, , 42F
開了Hinting後字體的高低變化會非常劇烈
07/21 13:20, 42F

07/21 13:20, , 43F
造成字體排起來特別不整齊 例如第一行的「火燒車釀成」
07/21 13:20, 43F

07/21 13:20, , 44F
的「成」這個字特別扁 和旁邊的字形成很大的落差
07/21 13:20, 44F

07/21 13:20, , 45F
變得非常難看 所以去掉Hinting後的改善特別明顯
07/21 13:20, 45F

07/21 13:20, , 46F
不過要注意的是中國繁體字的寫法和台灣的標準寫法不同
07/21 13:20, 46F

07/21 13:20, , 47F
例如「超過負載」的「過」這個字
07/21 13:20, 47F

07/21 13:21, , 48F
07/21 13:21, 48F

07/21 13:21, , 49F
如果你用明蘭字型的話 明蘭是舊字體(康熙字體)
07/21 13:21, 49F

07/21 13:21, , 50F
辶上面會有二點 手機上的Droid Sans Fallback和文泉驛
07/21 13:21, 50F

07/21 13:21, , 51F
都是使用中國的繁體標準 所以如果是要給學習教育部
07/21 13:21, 51F

07/21 13:21, , 52F
標準寫法的學生使用的話 就不適合採用這些字型
07/21 13:21, 52F

07/21 13:47, , 53F
衝著麻友,來試試看。我的是15.6吋1080p的螢幕,會變
07/21 13:47, 53F

07/21 13:47, , 54F
比較好嗎?
07/21 13:47, 54F

07/21 14:31, , 55F
這圖好(讚 XDDDD
07/21 14:31, 55F

07/21 15:43, , 56F
Mayuyu 用的是哪個版本的 Mactray 和 Mactype 呀?還是這點
07/21 15:43, 56F

07/21 15:43, , 57F
沒關係?
07/21 15:43, 57F

07/21 17:14, , 58F
07/21 17:14, 58F

07/24 09:11, , 59F
請問Chrome52以後要怎麼辦, 我真的快被中文字體的渲染氣瘋
07/24 09:11, 59F

07/24 09:12, , 60F
了,他們開發的時候就不能把字體的美觀放在心上嗎? 還是處
07/24 09:12, 60F

07/24 09:12, , 61F
理字體其實很簡單, 是我不知道方法?? 怎麼好像很多人都沒
07/24 09:12, 61F

07/24 09:13, , 62F
這問題, 一直以為覺得字體的問題應該是月經文,很氾濫的..
07/24 09:13, 62F

07/24 09:14, , 63F
今天起來看到chorme又怎麼模糊,一整個火氣很大 ><
07/24 09:14, 63F

07/24 09:45, , 64F
已經先用回chorme50了~~ 要不然眼睛真的受不了
07/24 09:45, 64F

07/24 13:10, , 65F
是說我用了之後好像還是一樣...
07/24 13:10, 65F

07/24 13:13, , 66F
chrome系的瀏覽器還是要停用dw 渲染才會成功
07/24 13:13, 66F

07/24 13:13, , 67F
但是flag裡面設定會變亂碼
07/24 13:13, 67F

07/25 14:34, , 68F
圖比字重要(O
07/25 14:34, 68F

07/25 21:49, , 69F
用了沒變+1 想請問如何解? 52版看了眼睛很瞎orz..
07/25 21:49, 69F

07/27 11:48, , 70F
偷偷說 Cent新版會把DW選項做回去 目前在測試中了(還有BUG)
07/27 11:48, 70F

08/02 21:45, , 71F
我照做了 UWP程式例如Edge等都還是沒渲染....
08/02 21:45, 71F

08/02 21:49, , 72F
也是用註冊表加載
08/02 21:49, 72F

08/12 09:58, , 73F
感謝mayuyu的詳細解釋,之前在另一個對岸網友的網頁看到
08/12 09:58, 73F

08/12 09:59, , 74F
那個日本網友的補丁,但是不太了解原理,現在知道了。
08/12 09:59, 74F

08/12 09:59, , 75F
文章代碼(AID): #1Na0InkM (Browsers)
文章代碼(AID): #1Na0InkM (Browsers)