用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

2020-02-04 15:56:48 4点赞 14收藏 1评论

自 Windows 10 从 2014 年正式发行以来已经有快六年的时间了,然而六年后的今天,水深火热的 Windows 用户依旧要为 Windows 上一些使用着古老技术的客户端糟糕的字体渲染买单。以 Win32 为代表的一系列没有对中文进行「特色优化」的应用程序,如果没有设置好「回退字体」,那么无论你电脑屏幕的分辨率有多高,它们依旧会默认将中文等 CJK 字符渲染为万恶的「中易宋体」。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

默认字体「中易宋体」的糟糕体验

FontMod 是一款开源的「字体外挂软件」,通过 DLL 注入的方法将应用程序的字体渲染部分强行修改为我们希望的字体 —— 比如将「中易宋体」替换为「微软雅黑」。经过测试,FontMod 能够有效修改使用 GDI 渲染引擎的 Win32 应用程序,以及一些基于 Qt 的应用程序。比如,我就使用 FontMod 成功修改了 Mendeley Desktop 的字体。接下来我们就具体介绍一下怎样使用 FontMod 来修改应用程序的字体。

工作原理

事实上,FontMod 的工作原理非常简单易懂,和一些游戏外挂的原理类似。我们可以这样理解:FontMod 就是一个专门修改应用程序字体「外挂」,都是利用在原有程序的执行的基础之上,加载我们自己的 DLL。那么,这样的话,我们就可以在 DLL 中将应用程序字体渲染的部分逻辑进行修改,使得应用程序使用我们指定的字体进行显示。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

FontMod 的大致工作原理

不过,值得注意的是,DLL 注入和「游戏外挂」一样,实际上都非常危险,能够将原先安全的应用程序核心数据进行篡改。如果 FontMod 不是一款开源软件,那么我是不会使用它,也不会推荐给大家使用。

下载 FontMod 动态链接库

FontMod 开源于 GitHub 上面,在其最新 Release 的页面,我们可以直接下载 FontMod.dll 这个文件,也就是「字体外挂」的「动态链接库」。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

FontMod 的 GitHub 页面

我们需要的只有这个 DLL 文件。下载成功之后,我们将文件重命名为 winmm.dll 并放在一旁备用。

让 FontMod 修改字体生效

Mendeley 是一个学术文献的管理应用,其客户端 Mendeley Desktop 应该是直接利用 Qt 编写的。另外,Mendeley 也不负众望,其客户端就连英文字体都渲染成了「中易宋体」… ?‍ 我们以 Mendeley 为例子,具体介绍如何将 FontMod 挂载到主应用程序上,使之生效。

找到目标程序的安装目录

首先,我们需要找到 Mendeley 的安装目录。在 Windows 的开始菜单,右键点击 Mendeley,选择「更多 » 打开文件位置」,在打开的目录下选择 Mendeley 的快捷方式,再次右键,选择「打开文件所在位置」,不出意外的话,我们就进入了 Mendeley 的安装目录。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体找到 Mendeley 的安装目录

仔细观察,我们可以看到 MendeleyDesktop.exe 这一可执行文件,也就是我们 Mendeley 客户端的本体。另外,下方还有一些带有 Qt 字样的 DLL 文件的蛛丝马迹,这些线索表明 Mendeley 客户端很大可能是直接使用跨平台 UI 框架 Qt 编写的,验证了我们的猜想。

接下来,我们拿到刚刚下载好,并更改名称为 winmm.dll 的 FontMod 文件,进行挂载的工作。

让 FontMod 挂载目标程序

我们将 winmm.dll 直接复制进入刚刚的 Mendeley 安装目录下,这一步骤可能需要「管理员权限」,如果提醒我们,点击授权即可。此时,如果我们尝试双击 MendeleyDesktop.exe 打开 Mendeley 客户端,很可能出现报错,提示你未找到一个名叫 FontMod.yaml 的文件。不必担心,这是正常现象。

Mendeley 默认安装位置位于 Windows C 盘的 Program Files 目录下,这一目录需要管理员权限才能创建文件,因此上一步中 FontMod 没有将自己的配置文件在第一次运行时成功创建,导致报错。我们需要在 Mendeley 的这一安装目录下手动创建一个名为 FontMod.yaml 的文件作为配置文件。

另外,如果你打开之后发现没有什么问题,那么很可能就是 FontMod 为我们创建好了这一文件,我们继续接下来的工作即可。

我们打开 FontMod.yaml 这一文件,如果里面没有任何东西(也就是你刚刚是手动创建的 FontMod 配置文件),那么我们需要向其中添加 FontMod 的默认配置内容:

style: &style # Remove '#' to override font style #  size: 0 #  width: 0 #  weight: 0 #  italic: false #  underLine: false #  strikeOut: false #  charSet: 0 #  outPrecision: 0 #  clipPrecision: 0 #  quality: 0 #  pitchAndFamily: 0 fonts:   SimSun: &zh-cn-font # Chinese (Simplified) fallback font     replace: Microsoft YaHei     <<: *style   PMingLiU: # Chinese (Traditional) fallback font     replace: Microsoft JhengHei UI     <<: *style   MS UI Gothic: # Japanese fallback font     replace: Yu Gothic UI     <<: *style   Gulim: # Korean fallback font     replace: 맑은 고딕     <<: *style fixGSOFont: true # true is to use system UI font #fixGSOFont: *zh-cn-font # Or replace with user defined font debug: false

另外,如果刚刚 FontMod 是自己创建的这一文件,那么很可能里面也已经拥有了以上配置,我们直接使用即可。

打开 Mendeley 客户端,查看效果

最后,我们打开 Mendeley 客户端,一切顺利的情况下,我们就可以看到其中糟糕的「中易宋体」已经被我们成功替换为「微软雅黑」了。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

成功将字体替换为「微软雅黑」

配置 FontMod 的字体替换策略

如果没有特殊需求,那么默认的配置文件就已经可以直接将我们默认字体成功替换。但是如果有其他的字体替换需要,我们也可以通过刚刚的 FontMod 配置文件 FontMod.yaml 进行自定义。其中:

fonts:   SimSun: &zh-cn-font # Chinese (Simplified) fallback font     replace: Microsoft YaHei # 在这里定义替换字体     <<: *style

这里就是将「中易宋体」,也就是 SimSun.TTF,进行替换的配置部分,我们可以将 replace: 之后的字体 Microsoft YaHei 修改为我们希望的其他字体。其余部分中的 PMingLiU、MS UI Gothic、Gulim 配置项分别为繁体中文、日文与韩文的默认回退字体,没有特殊需要可以不用改动。

在配置文件上方,可以看到 style: &style 的定义。这里是对字体大小、字体形状以及字体是否加粗、是否斜体等情况的自定义。这里的配置请参考 Windows 官方文档:Windows GDI - LOGFONTW structure.

小结

FontMod 为我们提供了一个相对方便的字体替换功能,让我们能够在不使用「不是每台电脑都能完美工作」的 MacType 的情况下,将 Windows 应用程序的中易宋体进行替换。虽然 FontMod 可能仅仅对使用 GDI 渲染引擎的 Win32 应用程序起作用,但是也往往只有这些应用程序的字体渲染需要我们特殊照顾。

另外,针对文献管理应用而言,如果你觉得上面介绍的方法太过复杂,那么我推荐开源免费、没有中文字体渲染问题的 Zotero 来使用。

用这个免费开源的「外挂」,拯救水深火热的 Windows 字体

开源免费,中文字体正确渲染的 Zotero

希望本文的方法能让你成功改善你的 Win32 应用程序的显示效果,本文的介绍就到这里,感谢阅读。

展开 收起

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

ihuman 洪恩 识字子集拼音思维ABC会员永久包3-6岁儿童早教启蒙礼物玩具 识字会员终身包

268元起

Microsoft 微软 OFFICE 365 家庭版 会员

Microsoft 微软 OFFICE 365 家庭版 会员

106元起

WPS 金山软件 WPS 超级会员 3年卡

WPS 金山软件 WPS 超级会员 3年卡

308元起

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

Microsoft 微软 365 家庭版 电子秘钥 正版高级Office应用 1T云存储

299元起

Microsoft 微软 OFFICE 365 个人版 办公软件

Microsoft 微软 OFFICE 365 个人版 办公软件

189元起

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

WPS超级会员Pro套餐4年卡1488天官方正版pdf转word排版

788元起

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

WPS超级会员4年套餐pdf转word排版PPT润色模板素材店铺

暂无报价

WPS 金山软件 会员季卡

WPS 金山软件 会员季卡

59.85元起

Microsoft 微软 office365家庭版15个月 203元

Microsoft 微软 office365家庭版15个月 203元

198元起

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

微软(Microsoft))win10win11专业版批量式授权企业版嵌入式正版化解决方案win11家庭版

1288元起

WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版

WPS稻壳会员1年套餐PPT模板素材字体美化图标思维导图官方正版

暂无报价

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

WPS超级会员2年pdf转word官方正版思维导图排版简历模板赠AI会员

218.5元起

SANGFOR 深信服科技 AF-1000-SK1505A 边界安全防护系统软件V8.0

SANGFOR 深信服科技 AF-1000-SK1505A 边界安全防护系统软件V8.0

67980元起

SANGFOR 深信服科技 深信服EDR-33 终端安全管理系统

SANGFOR 深信服科技 深信服EDR-33 终端安全管理系统

40000元起

SANGFOR 深信服科技 深信服防火墙AF-1000-B1120--K3

SANGFOR 深信服科技 深信服防火墙AF-1000-B1120--K3

50000元起

SANGFOR 深信服科技 aTrust-1000-GA160M 零信任综合网关设备

SANGFOR 深信服科技 aTrust-1000-GA160M 零信任综合网关设备

298000元起
1评论

  • 精彩
  • 最新
  • Mendeley的文件同步,无法进行,比这个要有意义得多

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
14
扫一下,分享更方便,购买更轻松