Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
iccfish opened this issue Aug 1, 2024 · 12 comments
Open

Comments

@iccfish
Copy link

iccfish commented Aug 1, 2024

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

image

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

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

@iccfish iccfish closed this as completed Aug 1, 2024
@iccfish iccfish reopened this Aug 1, 2024
@iccfish
Copy link
Author

iccfish commented Aug 1, 2024

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

@snowie2000
Copy link
Owner

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

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

@digiant
Copy link

digiant commented Aug 2, 2024

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

@iccfish
Copy link
Author

iccfish commented Aug 2, 2024

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

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

@iccfish
Copy link
Author

iccfish commented Aug 2, 2024

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

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

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

@iccfish
Copy link
Author

iccfish commented Aug 2, 2024

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

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

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

@iccfish
Copy link
Author

iccfish commented Aug 2, 2024

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

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

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

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

@snowie2000
Copy link
Owner

配置文件放出来看一下

@LenaBai
Copy link

LenaBai commented Sep 23, 2024

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

@iccfish
Copy link
Author

iccfish commented Oct 10, 2024

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

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

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

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

设置:

[FontSubstitutes]
SimSun=MiSans

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

@snowie2000
Copy link
Owner

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

@iccfish
Copy link
Author

iccfish commented Oct 10, 2024

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

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants