为不支持自定义字体的Electron应用替换宋体

现在有越来越多的应用开始基于 Electron 技术构建,如 Discord、Microsoft Teams,但是由于历史遗留原因,Chromium 在近期才将中文系统下网页默认字体切换为从系统中读取,之前的版本一直是使用宋体作为默认字体的,因此很多国外产品的中文字体显示都十分不理想。

其中一些软件可能不再更新,或更新周期很长,也可能开发人员拒绝为 CJK 用户做特殊优化,鉴于忍是不可能忍的,那就自己动手解决吧。

警告: 使用以下方式来替换应用的字体为系统字体将会破坏应用的数字签名,可能导致包括但不限于性能下降、安全软件误删、应用崩溃、更新失败、无法启动的问题。

前言

这个问题已经不是第一次被提出了,很多其他应用也有类似的问题,比如使用 QT 的 Telegram 客户端以及一些其他公司基于 WinForm 平台开发的应用。

之前较流行的方式有注册表替换、注入 DLL 替换等,但是如果使用前者直接替换宋体为微软雅黑,将会有很多应用的界面布局错乱以及文字无法显示,而后者仅限于 Telegram 客户端。

这两种不对应用本身做修改的方式都不适合我们当前遇到的场景:需要修改字体的应用是一个浏览器。

Continue reading 为不支持自定义字体的Electron应用替换宋体