mactype icon indicating copy to clipboard operation
mactype copied to clipboard

热替换雅黑字体后部分界面出现乱码,请教如何解决?

Open iccfish opened this issue 1 year ago • 12 comments

如题,在热替换 Microsoft YaHei UI 后部分界面出现乱码,猜测原因是替换的字库中没有那么完整的字符所致。但是有部分界面中这个字体可以被替换为别的字体,有部分界面中则直接显示为乱码(如微信、Notepad3),如下图所示。

image

(图中乱码字符原文为 "請求過於頻繁"),确为替换后的字库中缺失的部分。

尝试使用FontLink来对替换后的字体进行链接,但未能解决此问题,未知是字体链接没搞对还是无法通过此方式解决此问题,还请指教 😄

iccfish avatar Aug 01 '24 10:08 iccfish

对macType自带的ini配置重新分析了下,发现之前理解有误。。所以这个场景下可以如何解决了,还请指教

iccfish avatar Aug 01 '24 10:08 iccfish

要完全解决这个问题,你需要在注册表中同时对新旧两个字体做相同的fontlink,将雅黑和替换后的雅黑(新雅黑)链接到提供这个文字的别的字体上。并且你需要重启电脑,因为Windows只在重启时读取fontlink。

同时你需要确保新雅黑中,对应的字符映射是不存在的,而不是映射到了那个框框上,否则fontlink不会正常工作

snowie2000 avatar Aug 02 '24 02:08 snowie2000

说明你这个雅黑替换字体有问题,可以用鸿蒙黑体替换雅黑,效果很好。

digiant avatar Aug 02 '24 03:08 digiant

说明你这个雅黑替换字体有问题,可以用鸿蒙黑体替换雅黑,效果很好。

热替换用的字库,并没有问题,只是不像雅黑这类字体很全,比如有一部分繁体字没有等。

iccfish avatar Aug 02 '24 05:08 iccfish

要完全解决这个问题,你需要在注册表中同时对新旧两个字体做相同的fontlink,将雅黑和替换后的雅黑(新雅黑)链接到提供这个文字的别的字体上。并且你需要重启电脑,因为Windows只在重启时读取fontlink。

同时你需要确保新雅黑中,对应的字符映射是不存在的,而不是映射到了那个框框上,否则fontlink不会正常工作

略复杂,晚些时候我来尝试下,感谢 👍

iccfish avatar Aug 02 '24 05:08 iccfish

要完全解决这个问题,你需要在注册表中同时对新旧两个字体做相同的fontlink,将雅黑和替换后的雅黑(新雅黑)链接到提供这个文字的别的字体上。并且你需要重启电脑,因为Windows只在重启时读取fontlink。

同时你需要确保新雅黑中,对应的字符映射是不存在的,而不是映射到了那个框框上,否则fontlink不会正常工作

试了一下,没效果,不知道哪里出的问题 😢 原来的字体链接应该是OK的,因为绝大部分软件中都是正常的(比如系统自带的记事本、Emeditor、各种浏览器等等),只要热替换起效的不存在这个显示成异常字符的问题。就那么个别软件有异常(目前已发现的就Notepad3和PC微信)。

iccfish avatar Aug 02 '24 05:08 iccfish

继续测试了几次,感觉我的字体链接应该是做好了的。在Notepad3中,关掉MacType后显示是正常的,启用MacType后就是框框了。

↓关闭MacType/Notepad3字体手动修改为热替换的字体 image

↓ 关闭MacType/Notepad3字体为微软雅黑 image

↓开启MacType/Notepad3字体无论是微软雅黑还是手动修改为热替换的字体,显示均如下 image

iccfish avatar Aug 02 '24 05:08 iccfish

配置文件放出来看一下

snowie2000 avatar Aug 02 '24 10:08 snowie2000

image 我在替换字体之后在压缩软件看压缩文件也是乱码,不知道怎么解决

LenaBai avatar Sep 23 '24 11:09 LenaBai

不好意思这么久没更新,今天遇到了一个更严重的例子想起来了。

Reqable这个软件 => https://reqable.com/zh-CN/

不使用热替换的时候是正常的↓ image

设置热替换SimSun为MiSans后就这样了↓ image

设置:

[FontSubstitutes]
SimSun=MiSans

最后就是这软件我也没看出来哪里用了宋体啊……

iccfish avatar Oct 10 '24 07:10 iccfish

我有空看一下。不过这个看起来像是electron的

snowie2000 avatar Oct 10 '24 07:10 snowie2000

我有空看一下。不过这个看起来像是electron的

不是诶,这个是Flutter的。要是Electron的倒是应该没问题了(目前热替换导致的问题在浏览器中没发现,可以用fallback字体显示)。感觉热替换识别不了FontLink?极端情况下我把雅黑热替换成一个英文字体,结果界面就很奇怪了,有些地方的中文还能显示,有些地方的就成框框叉叉了(这个英文字体的FontLink设置过的)。

iccfish avatar Oct 10 '24 08:10 iccfish