PCEVA,PC绝对领域,探寻真正的电脑知识
打印 上一主题 下一主题
开启左侧

【教程】修改Win8.x系统的默认字体

[复制链接]
跳转到指定楼层
1#
iFive 发表于 2014-8-25 10:16 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
点击数:21207|回复数:30
本帖最后由 iFive 于 2014-8-31 12:45 编辑

注意:我不会提供文中所需工具/字体的下载链接。这是因为FontCreator是共享软件(尽管国内只有XX版,但本着不给论坛找麻烦的原则,我不提供下载链接),方正字体受版权保护,UniteTTC可能会被国内某杀软报毒,信不信由你^﹏^。
前五个回帖的坛友每个人都加5分。

  • 注意:修改注册表是存在风险的,建议你在修改注册表前做好备份或系统还原还原点!
  • 修改宋体可能会造成软件兼容问题,个人不推荐修改。
  • 此教程仅适用于Windows 8/Windows 8.1用户,由于Vista/Win7内置字体与Win8系列的内置字体不完全相同,因此请不要照搬教程!

在修改字体之前,让我们先了解了解和Windows字体相关的注册表项和文件。
(本文中[LMCurVer]\皆指注册表项HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\)

  • ?:\Windows\Fonts文件夹,这个就不用说了吧,系统字体文件夹。
  • ?:\Windows\System32\FNTCACHE.DAT文件,我猜测这个文件是当前字体映射关系的缓存。如果你想通过直接替换掉msyh*.ttc的方法修改雅黑字体,请务必要删除该文件。
  • 注册表项[LMCurVer]\Fonts,这个项目记录着系统安装的所有字体。
  • 注册表项[LMCurVer]\FontLink\SystemLink,这个项目是字体链接,稍后我会提到这个的。
  • 注册表项[LMCurVer]\FontSubstitutes,这个注册表项的功能是,在一个字体不存在时,调用指定的备用字体,下面是微软官方对FontSubstitutes的解释
The FontSubstitues subkey stores the names of alternative fonts that can be used when a requested font or a font that appears in a document either is not available or is unsupported.

在修改字体前,我们还需要了解中英文版Windows的默认字体:
中文版 Windows:默认字体宋体,默认UI字体微软雅黑。
英文版 Windows:默认字体Tahoma,默认UI字体Segoe UI。

这些都是Windows 8以前的规则,在Windows 8 简体中文版中,系统默认字体仍为宋体,UI字体却变成了Microsoft YaHei UI,并且在几乎所有多国语言文件中(*.mui),对话框的字体都设置为了雅黑UI,而Win7中大部分为宋体,这就是为什么Win8的字体“被撑大”的原因,也是HD-Tune无法在简体/繁体中文系统(MUI字体已从MingLiu变为Microsoft Jhenghei UI)显示完整的原因。
而在英文版系统的mui文件中,我们可以看到两个奇怪的字体:MS Shell Dlg和MS Shell Dlg 2,难道它们是隐藏字体?
不是的。这两个字体正是用FontSubstitutes虚拟出来的,MS Shell Dlg对应Microsoft Sans Serif,MS Shell Dlg 2对应Tahoma,你可以直接通过修改FontSubstitutes来调节英文版Windows对话框的字体,这也是英文版Windows在修改字体方面比中文版Windows方便的地方。

看了这些基础知识之后,我们可以知道,有两种方法可以修改系统字体:
一:干掉微软雅黑/Microsoft YaHei UI,然后安装新字体,并使用FontSubstitutes替换掉雅黑。
这就是我在之前的帖子(http://bbs.pceva.com.cn/thread-97687-1-1.html)中使用的方法,但是楼主在实验之后,认为这个方法并不完美。
  • 缺失微软雅黑字体之后,部分软件的兼容性可能会出现问题(未测试)。
  • Metro UI 下,Windows对字体的调用方法略有不同。在 Metro UI 环境下,FontSubstitutes 是无法起到作用的。
    这是因为在 Metro UI 环境下,Windows 是使用“优先级列表”调用字体的(个人猜测,因为WP7系统就是这样调用字体的)。一旦Microsoft YaHei UI挂掉,宋体就会跳出来作Metro UI 默认字体。
    因此我在原帖中使用FontCreator创建了一个冒牌的Microsoft YaHei UI。既然如此,为什么不创建一个完整的冒牌“微软雅黑&Microsoft YaHei UI”TTC字体?
基于上面的原因,我建议大家使用方法二:创建一个冒牌“微软雅黑&Microsoft YaHei UI”TTC字体,并使用它替换Windows字体。

###下面是正文###
必备工具:FontCreator、UniteTTC
本例中所用的字体:方正准圆体
  • 首先,你需要将原版的“微软雅黑 常规”字体复制出来,它的位置在“控制面板\外观和个性化\字体”或者“C:\Windows\Fonts”中
    (C指系统盘,下同)
    然后你可以使用FontCreator或者UniteTTC.exe将其拆开,拆开后会得到两个TTF。
  • 拆开后,我们要使用FontCreator获取这两个字体的信息,方法是点击菜单栏的“格式”》“命名”,你需要将下图中标黄的信息复制到记事本中备用
    注意:你需要复制四套信息:微软雅黑_ English(United States)、微软雅黑_Chinese(PRC)、Microsoft YaHei UI_ English(United States)、Microsoft YaHei UI_Chinese(PRC)。
  • 使用FontCreator打开你喜欢的字体,点击“格式”》“命名”,确认字体命名中有且只有美国英语English - United States、简体中文Chinese - PRC。然后将微软雅黑的字体信息粘贴进去,点确定,然后使用另存为,另存到1.ttf,再将Microsoft YaHei UI的字体信息粘贴进去,另存到2.ttf。
  • 先双击预览一下,如果像下图右面一样显示的(字距过近),请换一个字体重新制作。

    (这种不标准的字体可能会影响部分系统组件的字体显示。)
    然后将1.ttf和2.ttf移动到UniteTTC的文件夹中,确保文件夹中没有其他字体后,双击AllUniteTTC.exe合并字体,最后将Fonts.TTC改名为msyh_modified.ttc。
    双击预览一下吧~在预览过程中你也可以点击打印按钮,会弹出打印对话框,可以预览新字体的显示效果。这应该算是字体预览功能的一个妙用吧~

OK,新字体制作完毕了,让我们开始替换吧~
  • 将msyh_modified.ttf放置到一个文件夹中,点击资源管理器的“文件”,打开一个管理员权限的命令提示符。
  • 输入 copy msyh_modified.ttf c:\windows\fonts 回车
  • 输入 regedit 回车打开注册表编辑器,先备份上面我提到的注册表,按图修改注册表(涂黄部分)
    (之所以设置为desktop.ini,是为了防止优化软件误删注册表,PS: c:\windows\fonts\desktop.ini是fonts目录唯一的非字体文件)
    (msyh相关的TTC全部都要改成msyh_modified.ttc,将键值中的Microsoft YaHei UI Bold/Light中的Bold/Light删掉)
  • 如果英文版要修改对话框字体,还要作设置

    注意:如果你要替换掉Segoe UI,请使用任意一个英文字体替换(其实中文字体也可以,不过我建议大家使用英文字体),替换方法与替换微软雅黑的方法类似。
  • 重启,Enjoy!



Q&A:
Q:怎样修改Win7的雅黑字体?
A:方法基本相同,只不过你不需要用UniteTTC了。
Q:怎样在Win8.x下彻底移除微软雅黑换用宋体?
A:直接给你一个注册表吧:(如果需要恢复,逆向操作就OK,bug修正:我没有考虑到微软雅黑在中英文环境下名称不同的问题,已修正)
  1. Windows Registry Editor Version 5.00

  2. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts]
  3. "Microsoft YaHei (TrueType) & Microsoft YaHei UI (TrueType)"="desktop.ini"
  4. "Microsoft YaHei Bold (TrueType) & Microsoft YaHei UI Bold (TrueType)"="desktop.ini"
  5. "Microsoft YaHei Light (TrueType) & Microsoft YaHei UI Light (TrueType)"="desktop.ini"

  6. [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
  7. "Microsoft YaHei"="SimSun"
  8. "Microsoft YaHei UI"="SimSun"
  9. "微软雅黑"="SimSun"
复制代码
Q:什么是TTF,什么是TTC?
A:TTF就是Truetype Font的缩写,TTC就是Truetype Font Collection的缩写,简单的说,TTC就是TTF的“多合一打包”。
Q:为什么Win8.x中有两个雅黑(微软雅黑和Microsoft YaHei UI)?
A:据说是UI版的雅黑优化了部分数字和字母,Win8版的雅黑UI还优化了行间距,可惜,Win8.1版的雅黑,字模变差了,行间距也变回来了。
Q:为什么Win8.x下微软雅黑的格式是TTC,而不是Win7/Vista下的TTF?
A:因为TTC格式的字体可以合并多余的字模(我不是字体制作者,不清楚这个功能怎么用)。
Q:为什么Win8.1中新增了微软雅黑 Light系列字体?
A:在没有微软雅黑 Light之前,微软雅黑字体在某些文字尺寸下表现得不好。
Q:为什么替换字体时要将YaHei Bold和YaHei Light设为无效的字体?
A:先说说字体中的粗体字吧,常规的字体加粗方法为:将字模向右平移一个单位,并与原来的字模重叠,可是,这样的方法会造成字模宽度整体增加一个单位,一旦对文字进行加粗时,文档往往需要重新排版,并且,对于微软雅黑这类字体,使用平移法虚拟出的粗体字模显示效果往往不尽人意。
为了避免这个问题,粗体字体就诞生了。(注:Msyhbd是从Win7开始新增的,但是Win2K就应该能支持Bold Font)
在教程中,我考虑到大家并不一定能找到对应字体的粗体字体,并且即使没有粗体字体,字体也能正常加粗显示,所以,我略去了粗体字体的创建过程,如果你想创建粗体字体,照葫芦画瓢就可以啦。
Light字体我在上面已经提到了,基于上面的原因,我不建议一般的系统美化用户创建Light字体。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 5活跃度 +120 收起 理由
guangyunjian + 5 很给力!
xiaoguan + 5 很给力!
仙賢戀軒 + 100 很给力!
nonsole + 5 赞一个!
nighttob + 5 很给力!

查看全部评分

2#
iFive  楼主| 发表于 2014-8-31 06:36 | 显示全部楼层
红色狂想 发表于 2014-8-30 17:48
还有比微软雅黑更好看更具工业美学的系统默认字体吗?

这只是提供一个修改思路……
你可以只修改YaHei UI为防撑大版的雅黑,这样在SP3等设备上开200%缩放都不会有超出屏幕边界的对话框了

评分

参与人数 1活跃度 +5 收起 理由
红色狂想 + 5 我很赞同

查看全部评分

3#
iFive  楼主| 发表于 2014-9-3 20:06 | 显示全部楼层
65302666 发表于 2014-9-3 17:56
问题是我没有备份注册表现在软件基本都乱码了

删掉fntcache.dat试试,另:你严格按照步骤操作了么
4#
iFive  楼主| 发表于 2014-9-4 06:30 | 显示全部楼层
65302666 发表于 2014-9-3 23:22
我重新做系统,重做了一遍步骤好了。

那就好~记得备份~
操作前你可以用windows系统还原创建还原点~
5#
iFive  楼主| 发表于 2014-9-13 23:04 | 显示全部楼层
完全搞不懂 发表于 2014-9-13 21:11
求问下  win7 2008r2 的测试模式水印用的是什么字体???

Windows 水印字体和你设置的标题栏字体(高级外观里面的)相同,在Vista/Win7下默认为九磅微软雅黑。
如果你想去掉水印,请使用RemoveWaterwark-deepxw。

6#
iFive  楼主| 发表于 2014-10-12 16:40 | 显示全部楼层
jasonhuintl 发表于 2014-10-11 13:19
谢谢,SURFACE PRO3的字体看着难受,正想办法替换呢,不知道这个有没有用。

给你提供一个我修改的msyh.ttc,试试吧。
因字形相同,你只需要修改第一个图中的第一个注册表,其他的注册表项不用动,以保持雅黑粗体和细体的显示效果。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部