前言

众所周知,微软雅黑是一款被无数人喜(tuo)爱(qi)的Windows默认字体。无论如何,它都在Windows数年的历程中有着无数的功劳。下面,让我们来替换它,让它结束它的使命

方法一:NoMeiryoUI:简单但不将就

我们不是第一个思考如何替换字体的人。所以,有大佬做出了通过注册表一键替换全局字体的工具:NoMeiryoUI

使用方法

  1. 安装想要替换的字体
  2. 打开软件
  3. 选择要替换的字体
  4. 设置全部并退出
  5. [可选】重启


方法二

本方法仅在Windows10、Windows11上测试通过,未在其他Windows版本上进行测试

基础知识

相信你一定被这个标题所吸引,我们要通过替换微软雅黑来实现字体的替换
首先我们要了解一下官方微软雅黑的结构:

微软雅黑————msyh.ttc————微软雅黑Regular
         |          |——微软雅黑UI Regular
         |
         |—msyhl.ttc————微软雅黑Light
         |          |——微软雅黑UI Light
         |
         |—msyhl.ttc————微软雅黑Bold
                    |——微软雅黑UI Bold

看不懂的展开

微软雅黑与微软雅黑UI

微软雅黑和微软雅黑UI是同一字体家族中的不同版本:微软雅黑(Microsoft
YaHei)是一款通用的中文字体,而微软雅黑UI(Microsoft YaHei
UI)是为用户界面优化的版本,在设计上进行了调整以提高屏幕阅读体验 ————Gemini

Light、Regular与Bold

Light、Regular和Bold是字体中常用的三种字重,它们代表字体的粗细程度。其中,Light 是最细的(字重数值
300),Regular 是常规粗细(字重数值 400),而 Bold 是粗体(字重数值 700)
————Gemini


聪明的读者已经想到了,我们直接用第三方字体替换三个微软雅黑的字体文件不就完成替换了吗?
但我们可爱的Microsoft怎么会就这么让我们成功呢
下面这些问题不解决,就没法成功
Windows中系统字体元信息校验

所谓元信息,就是字体的户口,其中包含了字体的名称、字重、字体家族、版权等信息
Windows在加载微软雅黑时,会校验字体的名称、家族、字重


TTC与TTF

TTC和TTF都是TrueType字体格式,主要区别在于TTC(TrueType
Collection)是一个包含多个字体文件的集合,而TTF(TrueType Font)则只包含一个字体文件
————Gemini

在Windows中,微软雅黑以TTC存储,每个TTC包含了普通微软雅黑与微软雅黑UI。我们如果单纯的把TTF改元信息、后缀,可以正常识别。但,微软雅黑和微软雅黑UI中一定有一个加载不出来,然后无法加载,并回调宋体


了解完微软雅黑的组成,让我们来着手替换微软雅黑

前期准备

  • 原版微软雅黑的三个TTC PowerFile下载
  • 需要修改的第三方字体(本教程仅适用于有三个不同的字重的第三方字体,一些字体的成品替换包在文末。如果你的字体为TTC格式,请使用UniteTTC将其分离成单个TTF,方法见下)
  • TTFname3(年代久远的小工具,用于提取、合并TTF的元信息)PowerFile下载 备用第三方下载
  • UniteTTC(分离、打包TTC)
  • 良好的心态与优秀的阅读能力

小工具用法

TTFname3提取:把TTF拖到TTFname3上,会在同目录生产字体元信息的xml
TTFname3合并:把元信息的xml和字体拖到TTFname3上
UniteTTC分离:把TTC拖到UniteTTC上,会在同目录下生成此TTC包含的所有TTF
UniteTTC打包:cmd运行UniteTTC {TTC名称.ttc} {1号TTF名称.ttf} {2号TTF名称.ttf}

字体预处理

本教程仅支持至少有三个字重的字体
本教程仅支持至少有三个字重的字体
本教程仅支持至少有三个字重的字体
把微软雅黑、第三方字体和工具放在同一文件夹内,使文件夹路径不包含中文
我们需要把每个微软雅黑的ttc文件拖到UniteTTC上以提取ttf
你需要决定用哪三个字重用于显示,不一定是Light、Bold和Regular,但一定是三个字重不同同种字体(建议)。删除除这三个字重以外的所有第三方字体,并把这三个字体按字重从细到粗以此命名为XXX-Light、XXX-Regular、XXX-Bold以便你识别

你现在的文件夹看起来应该是这样

字体元信息替换

首先,我们把XXX-Light.ttf拖到ttfname3上。ttfname3会在同目录生成一个XXX-Light.xml,这就是这个字体的元信息。
msyhl001.ttfmsyhl002.ttf进行同样的操作,得到msyhl001.xmlmsyhl002.xml
用记事本同时打开这三个xml,把XXX-Light.xml的每一项数值(引号里的内容)分别复制到msyhl001.xmlmsyhl002.xml中,所有数值均需复制!!!

对Bold字重、Regular字重执行同样的操作。
对Bold字重、Regular字重执行同样的操作。
对Bold字重、Regular字重执行同样的操作。

你现在的文件夹看起来应该是这样


原理

字体的元信息中的header包含了字体大小、宽度等信息,使字体得以正常显示。但Windows加载字体所校验的字体名称、家族等信息又难以直接彻底的修改。于是直接把微软雅黑的元信息+第三方字体的header,用于替换第三方字体的元信息就成为了一个不错的解决方案

合并为TTC

在继续操作前必须删除的文件

msyh.ttc
msyh001.ttf
msyh002.ttf

msyhl.ttc
msyhl001.ttf
msyhl002.ttf

msyhbd.ttc
msyhbd001.ttf
msyhbd002.ttf


我们需要把ttf与其元信息进行合并
以Light字重为例:把XXX-Light.ttf与msyh001.xml一起拖到ttfname3上(按住control依次点),得到msyhl001_mod.ttf,用于替换微软雅黑
XXX-Light.ttf与msyh002.xml一起拖到ttfname3上,得到msyhl002_mod.ttf,用于替换微软雅黑UI

对Bold字重、Regular字重执行同样的操作。
对Bold字重、Regular字重执行同样的操作。
对Bold字重、Regular字重执行同样的操作。

你现在的文件夹看起来应该是这样


接下来,我们要合并TTC为TTF
在当前目录打开cmd(在地址栏输入cmd并回车),依次执行以下命令,如文件名不一致请手动修改

UniteTTC msyh.ttc msyh001_mod.ttf msyh002_mod.ttf
UniteTTC msyhl.ttc msyhl001_mod.ttf msyhl002_mod.ttf
UniteTTC msyhbd.ttc msyhbd001_mod.ttf msyhbd002_mod.ttf

现在你的文件夹里应该有了三个新的ttc文件:msyh.ttcmsyhl.ttcmsyhbd.ttc
打开他们,检查字体是否为想要替换的字体、字重是否正确。是,继续;不是,从头开始

替换微软雅黑

在C盘根目录下创建文件夹font,把改好的msyh.ttcmsyhl.ttcmsyhbd.ttc放进去
下面我们要进入Windows RE模式,请准备好账户密码、BitLocker磁盘加密恢复密钥(如有)
按住shift,点开始菜单中的重启,依次点击:疑难解答——高级选项——命令提示符
在命令提示符依次中执行

xcopy C:\font C:\Windows\Fonts
exit

然后点“继续使用Windows”。大功告成!

成品字体替换包

霞鹜文楷:PowerFile下载
OPPO Sans:PowerFile下载

最后修改:2025 年 11 月 22 日
(T_T)没钱了,救济一下吧