如何在Windows上享受更棒的字体渲染

希望在 Windows 上修改字体,跟我讨论了好一会儿 Windows 的字体渲染问题,他向我吐槽「也没个讲得清楚的教程」。确实,Windows 的字体渲染问题一直是一个老大难,每隔一段时间就会有人吐槽 Windows 的字体有多难看、macOS 的字体又有多美观。


和 @Yves 老师讨论


实际上,微软在这方面并非毫无作为,而是进行过多次优化。但由于软硬件上的种种限制,让广大群众至今没能真正享受到高质量的字体渲染效果。


今天就让我来带大家仔细讲讲 Windows 的字体渲染为什么这么差,以及如何用稳定的方法解决字体渲染问题。


Windows 的字体渲染问题出在哪里?

长期使用 macOS 的用户可能无法理解 Windows 用户到底在发什么牢骚。


为了有一个直观的感受,我在 Windows 和 macOS 中各截取了一些文字。对比一下下面这两段文字,就会发现它们的实际观感区别很大。



macOS 下的字体


将 macOS 下的文字放大后观察,字体美观、边缘厚实,一笔一划很是清晰。



Windows 10 下的字体


Windows 的字体只能算是能够看清,但边缘总有些发虚,对比之后则略逊一筹。放大后观察,边缘有一些红绿小色块,「安」字中间的一横显得颜色很深,整体多少有些不协调。


而出现这种情况的原因有很多,我总结了以下 3 点——


屏幕显示分辨率低

屏幕的显示分辨率是首当其冲的问题。


为了描述这个问题是怎么出现的,除了屏幕本身的分辨率和尺寸之外,我们还需要了解显示器的一个重要参数:PPI(Pixels Per Inch),指的是「每英寸的像素数量」。


我们可以用一个公式来计算出屏幕的 PPI:√(纵向像素数² + 横向像素数²) / 屏幕尺寸



PPI 计算公式


比如一块 1920 x 1080 的 15.6 寸显示器,它的 PPI 就是 √(1920² + 1080²) / 15.6 = 141.21。从这个公式中可以看出「同等分辨率的屏幕越大,PPI 就越低」。


如果我们想在屏幕上显示文字,就需要在像素点阵中填充内容。比如你想在 12 x 12 的点阵下塞进一个中文汉字,只用黑白两色填充就只能得到图中的点阵文字。只有换成一个更大的点阵,笔画之间才会有空间填充更多的笔画细节,从而使笔画之间变得更为顺滑。



点阵字体


近些年出产的 Mac 都配备上了 Retina 屏幕,分辨率从 2560 x 1600 到最高的 5120 x 2880 不等,PPI 可以达到 227。实际使用时,macOS 通常会采用缩放,让一块高分辨率的屏幕显示更多的内容,文字自然会变得更加清晰。


而 Windows 方面,仍然有大量的电脑在使用 1920 x 1080 的分辨率和更低分辨率的显示器,大多数万元以下的笔记本配备的也是 1080P 甚至是 1366 x 768 的显示器。一块 15.6 寸的 1080P 屏幕,PPI 只能达到 141 上下。相比高 PPI 的 Mac,Windows 的文字显示自然比不过它。



不同 PPI 下,文字的显示效果对比


所以,屏幕分辨率属于 Mac 天然的硬件优势。


字体问题

第二个问题在于字体。 字体的字形不同,也会影响字体的显示效果。


比如在 Word 中使用四号宋体,边缘会显得模糊,而小四、五号等字号时,边缘则十分锐利。即使直接在 Word 中使用苹方字体,边缘也会出现一定的模糊。



不同的字号表现


这种进行模糊处理的方式,其实是 Windows 对于低分辨率屏幕下字体显示进行的特殊处理:Hint。每个字体本身会带有一个 GASP 表,Windows 的渲染引擎会根据这些 GASP 表来判断是否需要做处理。


当屏幕分辨率过低或是字太小,不足以显示所有文字细节时,Windows 就会启动 Hint 让文字变得更清晰,这本来是一件好事。



Hint 的误判


然而如果字体的 GASP 表不完善,就会让 Hint 误操作,本来就是可以正常显示字体的高分屏,但经过 Hint 处理过后,原本清晰的字体反而变得模糊、笔画高低不平了,这就是字体本身的问题。


这个问题曾出现在 Windows 的默认字体微软雅黑上。如今最新版的 Windows 10 中内置的微软雅黑已经进行过优化,比以前要好很多了。


渲染方式问题

如果排除上面两个因素,最后的问题就是系统的文字渲染方式了。


粗略地讲,Windows 目前采用三种不同的渲染方式,它们之间是相互补充的关系,同时存在于系统中。



GDI+(Graphical Device Interface):GDI 渲染指的是图形设备接口,属于 Windows 的核心组件之一。GDI 的历史很悠久,许多年迈的 Win32 软件都采用 GDI 来渲染字体。GDI+ 是它的改进版。
ClearType:为了提升 LCD 屏幕的字体渲染效果而推出的改进功能,也是目前 Win 10 主要采用的字体渲染方式。准确地讲这并不是渲染引擎,称为字符平滑工具、抗锯齿功能更为合适。
DirectWrite:为了提升高分辨率屏幕的字体渲染做的优化引擎。需要开发者做支持,全面进入 DirectWrite 时代还需经历时日。目前主要是 UWP 应用在使用。

其中的传统字体渲染引擎 GDI 很老,采用 GDI 的 Win32 软件在高分辨率屏幕下使用 100% 之外的缩放就会出现模糊。但由于采用 GDI 的软件实在太多,牵一发而动全身,微软无法轻易换掉 GDI


于是 ClearType 便应运而生。ClearType 的原理是让显示器的 R , G , B 次像素放光,在 x 和 y 轴上增加一些颜色进行微调,使得文字更清晰。



将采用 ClearType 的字体放大 6 倍 / 来自 Wikipedia


不过这尚未真正解决问题,在 Windows 10 默认启用 ClearType 的情况下,文字表现依然不佳。最前面的对比图中,Windows 的文字边缘就有这种红绿小色块的身影。在低分屏下,这种小色块会让文字边缘显得「有些糊」,中文的笔画也会有深有浅。


于是微软又推出了新的 DirectWrite 引擎,它就是为了取代 GDI 和 GDI+ 而诞生的。它的渲染方式已经和 iOS、Android 上采用的 FreeType 引擎效果接近,只是我们日常用的许多老软件未做适配。所以这也是为什么 UWP 应用的字体渲染会比 Win32 软件看起来要好一些的原因。



字体渲染方式


如果做一个形象的比喻,那么 GDI 就是年迈的老人,ClearType 就是一副眼镜,DirectWrite 则是更能干的接班人。


可以发现,字体渲染方式的问题其实是多方面的,根源就在于 GDI 的老旧、ClearType 的不完善、软件不跟进 DirectWrite 这些问题上。这几个渲染方式会影响到优化时的一些操作,我们后面还会提到。


如何搞定渲染

了解字体渲染效果差的原因之后,我们可以发现 Windows 的字体渲染问题还不少,这些问题可以有很多种解决方法,括号中是解法的简单概括——



显示器分辨率过低(更换硬件)
老软件适配差(Win32 应用、单独调整)
字体本身产生模糊(更换字体、修改字体本身)
字体丑,想换字体(更换字体)
渲染时产生的模糊(更换渲染引擎)


字体渲染的几大问题

明确了问题和产生问题的原因,那我们就根据这几个问题来分别做出对应的优化。


下面我从简单到复杂,介绍多种优化字体渲染的方法。由于没有人会愿意因为美观而舍弃系统的稳定性,所以在下列方法中,不会出现改动注册表、手动修改系统文件的方法,稳定性 永远是第一要素。


解决显示器分辨率过低、老软件适配差问题

其中显示器分辨率属于硬件问题,想一劳永逸地解决问题,可以选择购置 2K 分辨率以上的显示器,Windows 在高分屏上的字体渲染表现不俗。然而,考虑到 2K 显示器「同样不俗」的价格,大部分人还是会选择在现有的硬件资源上进行软件优化。


如果想在现有的硬件上做优化,最简单最安全的方法自然是 Windows 内置的方案了。


直接修改缩放

在 Windows 中提供了一个简单的「缩放功能」来放大系统的界面。它的效果是让一个文字获得更多的像素点。从而获得更好的视觉体验。


在「设置 - 系统 - 显示 - 缩放与布局」中调整「更改文本、应用等项目的大小」,从 100% 到 200% 不等。这些选项中 Windows 会给出一个推荐选项,可以选择适当提升一档。



缩放功能


如果你觉得 200% 的缩放仍然不够,「高级缩放设置」中允许你调整到 100% - 500% 之间的任意数字。不过一般不建议改动这一项。


修改单个应用的缩放

不过调整缩放之后,会让一些对 DPI 缩放支持较差的老应用出现严重模糊,像是老版本的迅雷、QQ 等软件。这时候可以单独调整应用的缩放。



进入应用的「属性」


在软件的快捷方式上右键,打开属性菜单。如果是在任务栏上的软件,「右键图标 - 右键菜单中的名称 - 属性」就可以进入属性设置界面。


然后在「兼容性」选项卡中,选择「更改高 DPI 设置」,选中「替代高 DPI 的缩放行为」。其中的 应用程序 指的是让软件保持 100% ,系统 指的是根据系统设置的缩放比例来调整(可能会变得模糊),系统(增强) 会对那些基于 GDI 渲染方式的软件进行更多的优化。


所以如果遇到了上面的问题,你可以选择使用 应用程序 或是 系统(增强) 来做一些特殊调整。



修改单个应用的缩放


修改字体大小

如果你目前正在使用的就是高分辨率的屏幕,反而觉得有些字太小、看不清。又不想调整所有界面的缩放,那就可以根据需要单独调整文字的大小。


在「设置 - 轻松使用 - 显示 - 放大文本」中调整滑块,然后选择「应用」。


之后电脑会进入半分钟左右的等待时间,结束后,Windows 中的所有文字都会被放大一些,文字的观感也会有所提升。



调整字体大小


这三种方法都是 Windows 内置的方法,经过简单且安全的操作,就可以让我们在分辨率稍低的显示器上获得较好的文字观感。同时解决了一部分老软件的适配问题。


解决字体本身产生的问题

如果调整了屏幕缩放,文字依然模糊。那就需要解决字体问题了。替换字体有两种思路:



    更换字体:用别的字体作为默认字体。 对系统造成的破坏最小,随时可以改回来。
    修改字体:对默认的微软雅黑进行处理。 对微软雅黑进行处理,让它获得更好的视觉效果。

全局更换字体的简单方法

更换系统字体有许多方法,小软件、小工具也不少。这里推荐一个来自日本开发者的「全局字体更换」开源小工具:noMeiryoUI,noMeiryoUI 的特点是针对亚洲字符集字体做了优化。软件可以在 Github 链接 下载。


noMeiryoUI 的操作和使用都非常简单。你只需要事先找到并安装一个适合日常使用的字体,要避免选择缺胳膊少腿的字体,以免改完后出现许多 □ □ □。



用 noMeiryoUI 替换字体


然后就像在编辑器里修改字体一样,点击 Select... 直接指定系统全局所用的字体和字号大小。选择字体时,同一个字体可能会有多种字符集(简体、繁体、日语等),这在 noMeiryoUI 中可以单独选择。当然也可以分别对标题栏、图标、调色板标题、提示、消息框、菜单的字体和字号进行单独设置。


然后选择 Set All 就可以替换完成。



用 noMeiryoUI 替换所有字体


经过 noMeiryoUI 替换字体后,大部分 Win32 软件(包括系统软件在内)改变默认的字体和字号。noMeiryoUI 无需开在后台,一次替换就能长期使用。


为了展现替换效果,我选择了和系统字体差别明显的幼圆字体。软件中采用 DirectWrite 渲染的部分文字是无法替换的,菜单则被完整替换了。



幼圆效果展示


修复字体 Hint 模糊的方法

字体模糊的情况通常在采用 125% - 200% 缩放比例的情况下发生。所以修复微软雅黑、宋体等系统默认字体本身产生的模糊,也是一个可行的方案。


上面讲到由于错误的 GASP 信息产生了不正确的 Hint,那么禁用 Hint 就能让文字变得更锐利一些。在这篇 @HydricAcid 的 《修正 Gasp 表来去除字体 Hint 的教程》 中进行了详细的解释,采用的是极限社区的 @RadarNyan 提供的「去除所有 DPI 下的 Hint」方案。


大致的思路是:使用批处理脚本处理系统默认字体的 GASP 信息、进入命令行模式(解除字体占用)、将处理后的字体覆盖原字体。


这个操作与换一个字体作为系统字体不同,它会修改并替换系统字体文件本身,在未做备份的情况下替换字体可能会产生一些不可预料的后果(字体显示问题、蓝屏等)。所以安全性和兼容性比较一般,不是很推荐。不过它可以解决 DirectWrite 模式下的 Hint 模糊问题,需要的读者可以进入该链接按步骤操作。


解决渲染时产生的模糊

如果调整缩放、修改字体都没有缓解字体模糊,就需要采取一些其他手段来解决字体渲染引擎产生的模糊。


更换系统字体渲染引擎:MacType

更改字体渲染引擎是一个庞大的工程,只要是有文字的地方就会用到字体渲染,牵一发而动全身,不得不慎重。


Windows 上表现出色的字体渲染软件是 MacType,它可以帮助改善 Windows 中基于 GDI 的字体渲染,并支持热替换系统的默认宋体。你可以在它的 Github 链接 下载到 Beta 版本。


MacType 的加载方式

下载并安装后,MacType 会进入一个用户向导界面,你可以自主选择 MacType 的加载方式。



MacType 的渲染方式


这几种加载方式的优缺点已经在软件界面中详细说明,如果要概括一下:



注册表加载:体验最好,开关需要重启系统。
服务加载:平滑度较高,开关需要使用服务管理器。
不使用自动加载:拖动到图标上加载,可以只针对特定渲染效果较差的软件修改。
MacTray 托盘独立加载:可以单独设置一些应用是否渲染。
MacTray 托盘兼容加载:兼容性最好。

如果想要全局使用,我个人比较推荐服务加载,软件不会影响到注册表,停用时比较方便。


如果只是想针对个别软件进行字体优化,则推荐 MacTray 托盘独立加载


这些加载方式各有优缺点,大家可以衡量一下自己对于美观度和稳定性的要求,来选择最适合自己的方法。


MacType 的配置文件

如果你不想做过多的配置,直接使用第二步中预设的默认配置文件,点击完成就配置完毕了。如果对这个配置的渲染效果不满意,可以多试几个,也可以自行配置文件。在网络上也有不少 MacType 相关的字体和配置文件。



MacType 的配置文件


不过 MacType 的功效仍然是有限的,它不支持采用 DirectWrite 字体引擎的软件(主要是 UWP 应用)。你需要做更多的配置才能实现。在这篇 @Weiyi_Kong 的 《用 MacType 拯救你的 Windows 字体 | 一日一技》 中,对于如何用 MacType 来修改 UWP 字体有详细的介绍。


由于需要手动修改 C:WindowsSystem32 目录下的 EasyHK32.dll 文件,这里不再展开讲解。有兴趣的读者可以移步这篇文章进行更多研究。


MacType 的其他注意事项

尽管 MacType 的效果已是十分喜人,但它作为第三方软件,仍然不可避免地出现一些问题。


它的兼容性一般,它在大部分情况下都能正常运作,但在部分软件、游戏、驱动程序中会出现错误的文字渲染,比如一整行文字挤在一起。如果追求工作环境的稳定,则不建议使用 MacType。如果你在安装 MacType 之后,一些原先可以打开的软件忽然打不开了,一定要记得在 MacType 中排除这个软件。


顺带一提,目前 Chrome 会默认开启 DirectWrite 且不可关闭,这种情况下使用 MacType 偶尔会产生冲突。网上有许多人求禁用 Chrome 中 DriectWrite 的方法,其实没有这个必要。只需要在 MacType 中关闭针对 Chrome 的渲染,并在 Chrome 中修改浏览器显示字体就可以了。



MacType 效果展示


小结

Windows 的字体渲染问题并非是微软完全不作为,因为在 Windows 10 的 1703 和 1809 中,字体方面都得到了小幅度的改进,微软雅黑这个字体本身也经历了多次迭代,还有传闻称今年四月份微软将会用兰亭黑体替换掉微软雅黑。但在目前,Windows 渲染效果差仍然是个不争的事实。


文章对产生这个问题的原因进行了分析,显示器分辨率,系统默认字体,老的引擎难以淘汰、新的引擎未能覆盖……但只要对症下药,这些问题都是可以解决的。分别从分辨率、字体、渲染引擎几个角度下手,就能搞定 Windows 的字体渲染问题。



~

#18871503559# 我是win10预览版10240版本,现在怎样升级正式版版win10 - ******
#夏克# 29号发布的WIN10正式版的版本号为10.0.10240.16399,8月10号会发布集成了SR1重大修复补丁的新版本,版本号肯定比最初的高,有可能是10.0.10240.16423 ,因此你可以再等几天后再来升级集成了修复补丁的WIN10正式版,到时候无论是下载微软官方工具或是360、腾讯等的推送工具都可以.现在就下载推送工具的话,给你安装的仍然是29号那个有问题的系统.

#18871503559# windows7家庭版和旗舰版的区别? - ******
#夏克# 对大多数人来说,就是支持主题,界面更加漂亮了.对我而言,可以装xp model运行一些win7无法运行的老软件也是他的优势之一.还有一个Windows media center的在线看视频的好像界面也很...

#18871503559# 笔记本电脑w i n7怎样变wi n8 - ******
#夏克# 我们就从Windows 8的安装说起——为了让大家能够更清楚的认识安装,本文的所有截图都是在虚拟机上完成的,选择的系统是Windows 8专业版,图片的尺寸为1024*768(部分功能展示图为小尺寸),所以,如果你希望看到更加清晰的截图...

#18871503559# 怎么提高电脑运行的速度?我的电脑好慢好卡哦 - ******
#夏克# 展开全部第一•Windows XP启动加速优化首先,打开“系统属性”(在我的电脑上点右键-属性,或者在控制面板里打开“系统”,快捷键win+ pause break)点“高级”选项卡,,在“启动和故障恢复”区里打开“设置”,去掉“系统启动”...

#18871503559# 请教在预装过Vista本本上装上Xp的高手东芝本本,已经在C盘预 ******
#夏克# 这里有篇文章是专门介绍这个问题的:在预装Vista的PC上安装XP并设双重启动: 安装Windows XP后,系统中预装的Windows Vista将因Boot Loader被覆盖而无法启动,...

#18871503559# 现在WindownXP系统哪个版本的最好用? - ******
#夏克# 最好使用正版 Windows XP SP3,享受正版的好処!! 还有新的Windows 7 是最棒的操作系统可以等待上市再买!!

#18871503559# 在虚拟机上使用Windows7会有什么不一样? ******
#夏克# 由于先前已经有用Boot Camp在Mac Mini上跑Windows 7的成功经验,笔者这次决定更进一步,直接在iMac上跑Windows 7 beta测试版.由于之前笔者曾用Parallels来执行...

#18871503559# 问下,刚配的电脑配置如何?3Q - ******
#夏克# CPU 高不高低不低的有什么用还不如上个E5400 玩E6 也就是前端总线高 显卡最好上个5550 吧 A卡还是有性价比的 最低端的也有4350 主要最好上好牌子的微星的G41 也不是很贵...

#18871503559# 电脑怎么重装啊?请教高手啊?有谁会啊? - ******
#夏克# 先开机 设定 bios 光驱启动重装电脑的操作系统,是我们每一个电脑爱好者必须经历的苦难过程.不自己动手装电脑系统和应用程序的电脑操作者,至多是个菜鸟.(当然就是能熟练装这些东东,也不一定不是菜鸟,比如我只是一个比较肥胖的...

#18871503559# 天猫没有提示升级,可购物时提示需要升级后才支持,怎样升级? - ******
#夏克# 问:今天打开淘宝网(天猫)后,我的电脑突然有一条提示,喵,XP系统即将结束支持,为预防购物风险,享受更棒的体验,天猫建议您升级操作系统,问了几个朋友,他们的电脑上就没有这种提示,这是怎么回事呢? 答:明年也就是01年月日,微软将停止对XP系统更新了,也就是说不再更新补丁了,那么我们的电脑可能会面临安全问题.按的建议应该是升级到win系统或win 系统.但是win系统是收的,所以喜欢的亲们暂时不用理会这个消息,电脑有了杀毒,应该也没啥大问题.如果您的电脑上有特别重要的文件,或者说您特别重视电脑的安全问题的话,那不妨升级操作系统.

  • 如何在windows7中使用“专用字符编辑器”中的字
  • 答:还可以打开区位输入法,直接输入AAA1,就可以输入那个新字。但是需要注意的是,自己造的字只能在当前使用的系统中使用,如果把文档复制到别的机器上,重新打开,自己造的字的位置将显示为空白。

  • 如何在win10系统中的画图工具中进行文字的添加
  • 答:具体如下:1. 第一步,打开电脑点击开始菜单,在弹出菜单中选择windows附件,并点击打开画图工具。2. 第二步,进入画图工具页面,点击上方的主页选项。3. 第三步,在二级菜单中选择A符号,打开文字编辑窗口。4. 第四步,...

  • 如何在win7电脑中编辑特殊字符?
  • 答:如何在win7电脑中编辑特殊字符?那么下面小编就以ghost win7 64位旗舰版下载为例,为大家具体介绍一下方法吧!1.首先,咱们直接单击键盘上的windows图标或者是鼠标左键点击左下角的开始菜单,然后在弹出来的窗口中找到下方的...

  • 如何在桌面上添加文字
  • 答:我们利用电脑自带的画图工具就可以在实现桌面上添加文字。小编用的是Windows10系统,就以Windows10为例说明了。先打开左下角的所用应用按钮,然后找到W字母下的windows附件。在windows附件下我们可以找到windows10自带的画图工具。

  • 如何在电脑上打字
  • 答:3、通过手写输入打字 一些电脑设备也支持手写输入,您可以使用触控笔或者鼠标,在电脑屏幕上手写输入文字。在Windows 10操作系统中,您可以使用Windows Ink Workspace应用程序进行手写输入。语言输入注意事项 1、尽量使用简短语句 ...

  • 如何在win8系统中修改标题栏和提示框字体?
  • 答:那么咱们如何才能在win8系统中对标题栏和提示框的字体进行修改呢?下面,小编就来详细的介绍一下吧!1.首先,咱们返回到win8系统的传统桌面位置,然后同时按下键盘上的win+X,在打开的快捷菜单中,咱们选择控制面板选项。2....

  • 如何应用Windows造字程序造字
  • 答:选择菜单栏的编辑-保存字符,到此我们合成的这个“金+监”字就合成完成了 那怎么把这个“金+监”输出到txt和Word等文件中呢?在菜单栏选择“编辑-复制字符”在复制字符界面的代码栏中输入“金+监”的Unicode代码E000 然后...

  • 如何在Windows中安装新字体
  • 答:安装一些软件或更新后,需要重启计算机才能使更改生效。这是因为在Windows中,某些文件和进程只有在重新启动后才会得到更新或重新加载。因此,如果您安装完毕后出现提示要求您重新启动计算机,请先保存所有未保存的工作并按照提示...

  • 如何在WindowsMediaPlayer中添加字幕?
  • 答:工具/原料 电脑 Windows Media Player9.0播放器 LyricPower1.5 歌曲和相应的LRC文件 步骤/方法 1、打开Windows Media Player播放器,单击菜单栏上的“播放”按钮,在下拉菜单中选择“字幕”选项,选择打开字幕的功能,同时...

  • ...自定义文字显示在桌面上,怎样设置,我的是windows 7
  • 答:桌面便签软件,你找一个好的,用用吧

    为传递更多家电数码信息,若有事情请联系
    数码大全网