为什么 Windows 的字体这么不统一?别的系统就没这个问题?
历史遗留问题,很多上古的软件框架都都是将宋体作为 Windows 默认中文字体的,毕竟微软雅黑这种平滑的字体是直到 Windows Vista 才引入的。
然而微软为了兼容性选择了去包容而没有选择直接替换掉界面内的宋体,这样可以保证上古软件在新版 Windows 上的界面不会显示错位(不像苹果因为生态封闭因此可以命令厂商更新,旧应用直接不让你用)
为什么会错位呢?那是因为宋体和微软雅黑占用的文字大小其实是不一样的。这里我就不多做解释了,总之就是有些情况下会出 bug(
解决?
大多数的 Windows 软件在加载字体时候都会经过注册表内设定的 FontLink 来判定备用字体,或者使用同样在注册表内的 GRE_Initialize 来判定默认字体是什么。
什么是备用字体呢?
举个例子,这里我有个英文字体,但是这个英文字体里不包含中文部分。这时候系统或软件就会去选择一个备用字体来显示那些无法无法用当前字体显示的文字。
我能不能暴力删掉宋体强行显示雅黑?
可以,对于一些程序来说确实有效且能显示成雅黑,但是还有一些程序它不认备选字体,这时候它就会直接显示豆腐块,也就是方框,就类似像这样:口口口口口口口
而且问题最严重的是:碰到打印或者学校等各种地方的文档你就完蛋了。
我能不能暴力替换宋体?
可以,比如把雅黑改个名字,然后用字体编辑器改注册名后替换。但是就如同上面所说,部分软件可能会错位。
而且同样,问题最严重的是:碰到打印或者学校等各种地方的文档你就完蛋了。
目前较好的解决方案?
嗯,其实就是我刚才提到的注册表了。
🟦
🟦🟦
🟦🟦🟦
🟦🟦🟦
目前合适的解决方案
(适用于 Windows Vista 及以上的全部系统,说专业点就是 NT6.0+)
我们按下键盘上的Win+R打开运行窗口,在当中输入 regedit 后回车来打开注册表编辑器,将路径切换到:
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink提示:有地址栏的高版本 Win10/Win11 可直接在顶部的地址栏里粘贴路径并回车哟
随后我们就会看到眼花缭乱的一大堆英语字体多字符串值出现在右侧,这时候我们需要修改几个主要的字体的字体链接:Lucida Sans Unicode、Microsoft Sans Serif、Tahoma 以及新建三个主要字体的字体链接(注意类型选择多字符串值):Arial、Segoe UI Variable Small、Segoe UI Variable
注:Segoe UI Variable Small、Segoe UI Variable 只需要在 Windows 11 及以上版本添加,因为这是Win11新加入的字体
在刚才说的需要修改的字体和创建的字体的顶部添加:
MSYH.TTC,Microsoft YaHei UI,128,96MSYH.TTC,Microsoft YaHei UIMSJH.TTC,Microsoft Jhenghei UI,128,96MSJH.TTC,Microsoft Jhenghei UIYUGOTHM.TTC,Yu Gothic UI,128,96YUGOTHM.TTC,Yu Gothic UIMEIRYO.TTC,Meiryo UI,128,96MEIRYO.TTC,Meiryo UI如果你跟我一样是强迫症,添加完成之后可以删除底下的重复行来精简注册表值,但是实测其实不删并不会出现任何问题。

有空继续写,现在这样已经可以解决绝大部分宋体比如: Win11 任务栏宋体、After Effects 英文版全部版本 或 CC2017 及以下中文版的宋体(CC2018 及以上中文版暂时无解,被 Adobe 语言文件指定的宋体且有加密验证)、Premiere 全版本、VEGAS 全版本
OBS Studio、TeamSpeak 等使用 QT 语言编写 UI 的程序未完待续,使用当前写的方法后还会是宋体。有直接改注册表的方法但是一言难尽,因为有缺陷,不完美,会造成部分软件比如 Winaero Tweaker 主程序工具栏图标、Notepad++ 安装包的图片被拉伸。 这里可以通过改软件的主题来解决,OBS 和 TeamSpeak 均支持自己改 qss 主题文件。开坑(
提示