[字體] 用MacType修改DW的設置讓字體變好看
打上下面的補丁可以讓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
07/21 08:28, 1F
→
07/21 08:28, , 2F
07/21 08:28, 2F
→
07/21 08:47, , 3F
07/21 08:47, 3F
→
07/21 08:50, , 4F
07/21 08:50, 4F
→
07/21 08:50, , 5F
07/21 08:50, 5F
→
07/21 08:50, , 6F
07/21 08:50, 6F
→
07/21 08:50, , 7F
07/21 08:50, 7F
→
07/21 08:51, , 8F
07/21 08:51, 8F
→
07/21 08:51, , 9F
07/21 08:51, 9F
→
07/21 08:51, , 10F
07/21 08:51, 10F
→
07/21 08:51, , 11F
07/21 08:51, 11F
→
07/21 08:51, , 12F
07/21 08:51, 12F
→
07/21 08:51, , 13F
07/21 08:51, 13F
→
07/21 08:51, , 14F
07/21 08:51, 14F
→
07/21 08:52, , 15F
07/21 08:52, 15F
→
07/21 08:52, , 16F
07/21 08:52, 16F
→
07/21 08:52, , 17F
07/21 08:52, 17F
→
07/21 08:55, , 18F
07/21 08:55, 18F
→
07/21 08:55, , 19F
07/21 08:55, 19F
→
07/21 08:55, , 20F
07/21 08:55, 20F
→
07/21 08:55, , 21F
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
07/21 09:00, 24F
→
07/21 09:16, , 25F
07/21 09:16, 25F
→
07/21 09:51, , 26F
07/21 09:51, 26F
推
07/21 09:58, , 27F
07/21 09:58, 27F
推
07/21 10:16, , 28F
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
07/21 12:18, 31F
→
07/21 12:46, , 32F
07/21 12:46, 32F
→
07/21 13:17, , 33F
07/21 13:17, 33F
→
07/21 13:18, , 34F
07/21 13:18, 34F
→
07/21 13:18, , 35F
07/21 13:18, 35F
→
07/21 13:19, , 36F
07/21 13:19, 36F
→
07/21 13:19, , 37F
07/21 13:19, 37F
→
07/21 13:19, , 38F
07/21 13:19, 38F
→
07/21 13:19, , 39F
07/21 13:19, 39F
→
07/21 13:19, , 40F
07/21 13:19, 40F
→
07/21 13:19, , 41F
07/21 13:19, 41F
→
07/21 13:20, , 42F
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
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
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
07/21 13:47, 53F
→
07/21 13:47, , 54F
07/21 13:47, 54F
→
07/21 14:31, , 55F
07/21 14:31, 55F
推
07/21 15:43, , 56F
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
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
07/24 09:14, 63F
→
07/24 09:45, , 64F
07/24 09:45, 64F
→
07/24 13:10, , 65F
07/24 13:10, 65F
推
07/24 13:13, , 66F
07/24 13:13, 66F
→
07/24 13:13, , 67F
07/24 13:13, 67F
推
07/25 14:34, , 68F
07/25 14:34, 68F
推
07/25 21:49, , 69F
07/25 21:49, 69F
→
07/27 11:48, , 70F
07/27 11:48, 70F
→
08/02 21:45, , 71F
08/02 21:45, 71F
→
08/02 21:49, , 72F
08/02 21:49, 72F
推
08/12 09:58, , 73F
08/12 09:58, 73F
→
08/12 09:59, , 74F
08/12 09:59, 74F
→
08/12 09:59, , 75F
08/12 09:59, 75F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):