Windows下禁用ClearType改善文字视觉效果
Windows的文字显示效果一直被用户所诟病,Windows从XP起引入了一种叫ClearType的文字显示技术,可以让文字在LCD中的显示更加锐利清晰,它是通过调整像素的RBG子像素来实现的。这种技术虽然让文字看来更锐利清晰,但是放大后边缘是彩色的,所以文字颜色失真的。使用过MacOS的读者应该知道,MacOS的文字显示与Windows不同,它看起来更真实,与打印机打印出来的一样,放大后也不是彩色边缘,配合苹果的高分辨率屏幕,看起来非常舒服,视觉效果非常好。
如果习惯了MacOS的显示效果,再看Windows的文字显示,总感觉不舒服。那Windows下有没办法做到像MacOS那样的显示效果(哪怕次一点也没关系)呢?还真有一个开源项目在做这样的事情,而且还是国人发起维护的,它就是MacType。没有对比就没有伤害,先来看看Windows原版效果与MacType的显示效果对比:
下图是Windows的记事本菜单,在开启ClearType时放大后的显示效果:
下图是使用MacType后的放大效果:
可以看到使用MacType后,菜单的文字边缘不再是彩色,而是颜色更纯正的黑色,唯有标题栏MacType目前没法生效。再看看在1920*1080分辨率下的记事本显示效果对比:
前面是Windows原来的显示效果,后面是开启MacType后的显示效果,是不是感觉后面的文字显示颜色更浓更纯真,看起来更舒服?笔者是直接使用的MacType的Default.ini进行修改的,Default.ini使用了ClearType,依旧有彩色边缘,笔者个人不喜欢彩色边缘,所以关掉了ClearType,下面给出笔者使用的配置:
1[General]
2Name=DefaultCopy
3Icon=..\mactray.exe.ico,0
4
5;【自动挂钩子进程】
6;[0:Disable] 1:Enable
7HookChildProcesses=1
8
9;【字体微调】
10;0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
11HintingMode=1
12
13;【抗锯齿方式】
14;-1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)
15AntiAliasMode=0
16
17;【常规体调整】
18;-32:+32
19NormalWeight=16
20
21;【粗体字的调整】
22;-16:+16
23BoldWeight=2
24
25;【斜体字的倾斜角度微调】
26;-16:+16
27ItalicSlant=0
28
29;【只有在FontLoader=0(在下面)时此项设置才有效。建议选0,选1会占用大量内存,也没看出有什么好处。】
30;0:Disable 1:Enable
31UseMapping=0
32
33;【Gamma模式开关】
34;-1:关闭;0:使用设置的Gamma值(GammaValue);1:使用sRGB的Gamma值;2:不明
35GammaMode=0
36
37;【Gamma值】
38;GammaMode=0的时候此项设置才有效
39;sRGB ≒ 2.2 CT-Default = 1.4
40;windows的cleartype的Gamma值是1.4
41GammaValue=1.5
42
43;【对比度】
44;数字越大越锐利,数字越小越发虚
45Contrast=1.7
46
47;【字体轮廓】
48;数字越大字体就越粗越黑
49RenderWeight=1
50; DirectWrite 支持;DirectWrite support
51DirectWrite=1
52
53;【文字边界设置】
54;数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来“淡一点”
55;再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果
56;0:12
57
58;AntiAliasMode=1时,通过TextTuning分量来调节
59TextTuning=0
60
61;AntiAliasMode=2时,通过TextTuning的RGB分量来调节
62TextTuningR=4
63TextTuningG=4
64TextTuningB=4
65
66;【字体加粗模式】
67;对NormalWeight和BoldWeight有效
68;0:Weight值大时横向加粗,值小时双向加粗,主要是避免Weight值过大时,模式3中在小字号时加粗过度出现斩头的现象;
69;1:总是横向加粗;
70;2:总是双向加粗,也就是freetype本身的粗体渲染。
71;注意:通过加大GammaValue、TextTuning的值,可以减少Weight值过大的造成的效果问题,即可以在BolderMode=2时也可以避免转接头
72BolderMode=0
73
74;【字体的载入方法】
75;(注意是载入方法,不是渲染方法)
76;0:用freetype载入字体
77;1:用windows的绘图核心载入字体
78;很多freetype的设置需要此项选0才能生效
79FontLoader=0
80
81;【字体链接】
82;当FontLoader=0时
83;0:什么都不做;
84;1:使用注册表里的字体链接设置,通过FreeType的字符表进行查找
85;2:使用注册表里的字体链接设置,使用Windows的转换函数直接查找
86;当FontLoader=1时
87;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
88FontLink=2
89
90;【字体替代】
91;当FontLoader=0时
92;0:什么都不做;
93;1:安全替换方案(兼容性较好),根据以下FontSubstitutes的配置进行替换;
94;2:完全替换方案(效果较全面,如替换后出现乱码,请尝试使用1),根据以下FontSubstitutes的配置进行替换;
95;当FontLoader=1时
96;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成
97FontSubstitutes=0
98
99;【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸】
100;交付 gdi++ 处理的最大尺寸(单位为像素)
101;0-2147483647
102MaxHeight=0
103
104;【阴影设置】
105;格式:水平偏移,垂直偏移,阴影深度(值越大,越浅)
106;Shadow=1,1,5
107
108;【液晶显示器的优化配置】
109;[0:None] 1:Default 2:Light 16:Legacy
110LcdFilter=0
111
112;【字体缓存、内存的设置】
113LoadOnDemand=1
114CacheMaxFaces=256
115CacheMaxSizes=6140
116CacheMaxBytes=20485760
117
118;【强制使用某一个字体】
119;无视所有其他字体,全系统的字体都会被这里设置的字体代替
120;ForceChangeFont=华文中宋
121
122[DirectWrite]
123;渲染模式,0=默认,1=锯齿,2=经典,3=经典自然,4=自然,5=自然对称,6=字体原型
124RenderingMode=6
125;Gamma值,不写则根据上面的GammaValue自动计算
126GammaValue=1.5
127;对比度,默认为1
128Contrast=1.0
129;抗锯齿程度,默认1,设置为0表示关闭ClearType
130ClearTypeLevel=0
131
132[Individual]
133;【单独设置的字体】
134;格式=Hinting, AAMode, NormalWeight, BoldWeight, ItalicSlant, Kerning
135XSong=,,30,,,
136XSong SimSun=,,30,,,
137XSong Mono=,,30,,,
138宋体=,,30,,,
139新宋体=,,30,,,
140华文宋体=,,30,,,
141华文中宋=,,30,,,
142Batang=,,30,,,
143MingLiU=,,30,,,
144PMingLiU=,,30,,,
145PMingLiU_HKSCS=,,30,,,
146MingLiU_ExtB=,,30,,,
147PMingLiU_ExtB=,,30,,,
148PMingLiU_HKSCS_ExtB=,,30,,,
149MS Mincho=,,30,,,
150MS PMincho=,,30,,,
151
152[Exclude]
153;【除外的字体】
154
155[ExcludeModule]
156;【不渲染的程序,但仍会加载DLL】
157
158
159
160[FontSubstitutes]
161;【字体替代】
162;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
163SimSun=XSong SimSun
164@SimSun=XSong SimSun
165NSimSun=XSong Mono
166@NSimSun=@XSong Mono
167PMingLiu=XSong SimSun
168MingLiu=XSong SimSun
169;微软雅黑=XSong SimSun
170
171[UnloadDll]
172fontview.exe
173AxureRP.exe
174FontCreator.exe
175FontCreator.cn.exe
176notecaselauncher.exe
177notecase.exe
178gnucash-bin.exe
179bleachbit.exe
180Fontforge_TC.exe
181Fontforge_SC.exe
182Fontforge_EN.exe
183dwm.exe
184Fetion.exe
185xdict.exe
186ollyice.exe
187sc2.exe
188avgnt.exe
189PlantsVsZombies.exe
190SynTPHelper.exe
191SynTPEnh.exe
192war3.exe
193SearchFilterHost.exe
194SearchProtocolHost.exe
195mspdbsrv.exe
196
197[ExcludeSub]
198javaw.exe
199PPLive.exe
200QQGame.exe
201devenv.exe
202code.exe
203
204[Experimental]
205;the aggressiveness to disarm the OS protection.
206;0=do nothing
207;1=remove force MS signed binary
208;2=degrade Dynamic code generation protection
209ArmBreaker=1
210
211[Experimental@Firefox.exe]
212ClipBoxFix=1
Github源码Issue中有人给出一另一个深灰没字体微调的配置DeepGrayNoHinting,这个配置比笔者使用的配置文字颜色更浓更深,可以自行对比参数:
1[General]
2Name=DeepGrayNoHinting
3Icon=..\mactray.exe.ico,0
4
5;【自动挂钩子进程】
6;[0:Disable] 1:Enable
7HookChildProcesses=1
8
9;【字体微调】
10;0:Normal 1:NoHinting 2:AutoHinting 3:Light+AutoHinting
11HintingMode=1
12
13;【抗锯齿方式】
14;-1:Disable 0:Normal 1:Light 2:LCD(RGB) 3:LCD(GBR) 4:Light-LCD(RGB) 5:Light-LCD(GBR)
15AntiAliasMode=0
16
17;【常规体调整】
18;-32:+32
19NormalWeight=16
20
21;【粗体字的调整】
22;-16:+16
23BoldWeight=2
24
25;【斜体字的倾斜角度微调】
26;-16:+16
27ItalicSlant=-2
28
29;【只有在FontLoader=0(在下面)时此项设置才有效。建议选0,选1会占用大量内存,也没看出有什么好处。】
30;0:Disable 1:Enable
31UseMapping=0
32
33;【Gamma模式开关】
34;-1:关闭;0:使用设置的Gamma值(GammaValue);1:使用sRGB的Gamma值;2:不明
35GammaMode=0
36
37;【Gamma值】
38;GammaMode=0的时候此项设置才有效
39;sRGB ≒ 2.2 CT-Default = 1.4
40;windows的cleartype的Gamma值是1.4
41GammaValue=1.4
42
43;【对比度】
44;数字越大越锐利,数字越小越发虚
45Contrast=2
46
47;【字体轮廓】
48;数字越大字体就越粗越黑
49RenderWeight=2
50; DirectWrite 支持;DirectWrite support
51DirectWrite=1
52
53;【文字边界设置】
54;数字越大越强调背景(类似文字边界被侵蚀的感觉),强调背景会有中字体锐利的感觉。适当降低对比度,提高TextTuning,可以使文字周围的颜色看起来“淡一点”
55;再加上RenderWeight,把这三个设置的微妙平衡调节好的话,能得到不输给Mac的效果
56;0:12
57
58;AntiAliasMode=1时,通过TextTuning分量来调节
59TextTuning=9
60
61;AntiAliasMode=2时,通过TextTuning的RGB分量来调节
62TextTuningR=4
63TextTuningG=4
64TextTuningB=4
65
66;【字体加粗模式】
67;对NormalWeight和BoldWeight有效
68;0:Weight值大时横向加粗,值小时双向加粗,主要是避免Weight值过大时,模式3中在小字号时加粗过度出现斩头的现象;
69;1:总是横向加粗;
70;2:总是双向加粗,也就是freetype本身的粗体渲染。
71;注意:通过加大GammaValue、TextTuning的值,可以减少Weight值过大的造成的效果问题,即可以在BolderMode=2时也可以避免转接头
72BolderMode=0
73
74;【字体的载入方法】
75;(注意是载入方法,不是渲染方法)
76;0:用freetype载入字体
77;1:用windows的绘图核心载入字体
78;很多freetype的设置需要此项选0才能生效
79FontLoader=0
80
81;【字体链接】
82;当FontLoader=0时
83;0:什么都不做;
84;1:使用注册表里的字体链接设置,通过FreeType的字符表进行查找
85;2:使用注册表里的字体链接设置,使用Windows的转换函数直接查找
86;当FontLoader=1时
87;会保持启用的状态,但是所有字体链接的处理会交由WIN32API完成。
88FontLink=2
89
90;【字体替代】
91;当FontLoader=0时
92;0:什么都不做;
93;1:安全替换方案(兼容性较好),根据以下FontSubstitutes的配置进行替换;
94;2:完全替换方案(效果较全面,如替换后出现乱码,请尝试使用1),根据以下FontSubstitutes的配置进行替换;
95;当FontLoader=1时
96;会保持启用的状态,但是所有字体替代的处理会交由WIN32API完成
97FontSubstitutes=0
98
99;【让freetype处理的最大的字体尺寸,单位是像素,0的话就是全尺寸】
100;交付 gdi++ 处理的最大尺寸(单位为像素)
101;0-2147483647
102MaxHeight=0
103
104;【阴影设置】
105;格式:水平偏移,垂直偏移,阴影深度(值越大,越浅)
106;Shadow=1,1,5
107
108;【液晶显示器的优化配置】
109;[0:None] 1:Default 2:Light 16:Legacy
110LcdFilter=2
111
112;【字体缓存、内存的设置】
113LoadOnDemand=1
114CacheMaxFaces=256
115CacheMaxSizes=6140
116CacheMaxBytes=20485760
117
118;【强制使用某一个字体】
119;无视所有其他字体,全系统的字体都会被这里设置的字体代替
120;ForceChangeFont=华文中宋
121
122[DirectWrite]
123;渲染模式,0=默认,1=锯齿,2=经典,3=经典自然,4=自然,5=自然对称,6=字体原型
124RenderingMode=6
125;Gamma值,不写则根据上面的GammaValue自动计算
126GammaValue=1
127;对比度,默认为1
128Contrast=1.4
129;抗锯齿程度,默认1
130ClearTypeLevel=0
131
132[Individual]
133;【单独设置的字体】
134;格式=Hinting, AAMode, NormalWeight, BoldWeight, ItalicSlant, Kerning
135宋体=,,30,,,
136新宋体=,,30,,,
137华文宋体=,,30,,,
138华文中宋=,,30,,,
139Batang=,,30,,,
140MingLiU=,,30,,,
141PMingLiU=,,30,,,
142PMingLiU_HKSCS=,,30,,,
143MingLiU_ExtB=,,30,,,
144PMingLiU_ExtB=,,30,,,
145PMingLiU_HKSCS_ExtB=,,30,,,
146MS Mincho=,,30,,,
147MS PMincho=,,30,,,
148
149[Exclude]
150;【除外的字体】
151
152[ExcludeModule]
153;【不渲染的程序,但仍会加载DLL】
154
155
156
157[FontSubstitutes]
158;【字体替代】
159;系统在调用“=”前面的字体时会忽视“=”前面的字体,而去直接调用“=”后面的字体
160;微软雅黑=XSong SimSun
161
162[UnloadDll]
163fontview.exe
164cttune.exe
165Fontforge_TC.exe
166Fontforge_SC.exe
167Fontforge_EN.exe
168SynTPHelper.exe
169SynTPEnh.exe
170SearchFilterHost.exe
171SearchProtocolHost.exe
172mspdbsrv.exe
173
174MSBuild.exe
175VBCSCompiler.exe
176PalmInputService.exe
177ServiceHub.SettingsHost.exe
178ServiceHub.IdentityHost.exe
179ServiceHub.VSDetouredHost.exe
180ServiceHub.Host.CLR.x86.exe
181ServiceHub.Host.Node.x86.exe
182ServiceHub.RoslynCodeAnalysisService32.exe
183ServiceHub.ThreadedWaitDialog.exe
184link.exe
185cl.exe
186
187[ExcludeSub]
188javaw.exe
189PPLive.exe
190QQGame.exe
191devenv.exe
192
193[Experimental@Firefox.exe]
194ClipBoxFix=1
MacType主要是针对Windows原来使用GDI技术显示的文字进行处理,后面Windows开发新的文字显示技术DirectWrite,目前许多应用程序都使用DirectWrite来显示文字了,比如我们常用的浏览器Chrome,Firefox等等。MacType对DirectWrite的显示处理还不完善,目前仅是实验阶段,期待早日完美支持。所以浏览器中的显示MacType貌似效果不佳。不过,笔者经过查资料测试验证,发现可以修改浏览器的参数来实现禁用ClearType,而使用灰度边缘来显示文字。
Chrome142可以在启动时添加参数--disable-lcd-text来禁用ClearType。Firefox可以在about:config中搜索cleartype,把gfx.font_rendering.cleartype_params.cleartype_level设置为0,则是禁用ClearType。由于浏览器也在不断更新,这些参数目前适用,但以前的版本或者后面的版本可能就不存在了,所以不同版本需要自行查证。
使用MacType后,VS,JB全家桶是可以正常工作的,但是所有使用Chromium内核的软件都需要使用与Chrome浏览器一致的操作,即添加--disable-lcd-text启动参数,比如VSCode,Microsoft Edge,Typroa等等。
如果你是网页制作者,无法控制用户的浏览器参数,想要让网页在chrome浏览器中始终使用灰度边缘而不是彩色边缘显示文字,可以在CSS中使用:
1-webkit-transform: translateZ(0px);
2transform: translateZ(0px);
来强制Chrome浏览器禁用ClearType的显示方式,代价是牺牲一部分性能。不过这种方式,在Firefox中貌似无效。
如果本文对你有帮助,欢迎点赞收藏!
- 原文作者:Witton
- 原文链接:https://wittonbell.github.io/posts/2025/2025-11-06-Windows下禁用ClearType改善文字视觉效果/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议. 进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。