@
c1462066778 就 electron 而言的话,也有这种问题的,我在非简中的 win 下用 electron 用到已经不想折腾这鬼问题了,能用英文就只用英文。
你给的解决办法的确是对的,因为本质就是 win 的 CJK 字体回落的问题,我在这个帖子里
/t/918947 有提到,其实不需要删除韩文,因为韩文的回落顺序是最后的(可能有记错,最好自己实践,不删除韩文的键看下效果是否一样),在前面的依次是日文、繁中、简中。
当系统语言设置为简中时,简中会优先选择,其他语言就是上面的这个顺序。electron 会调用微软雅黑是因为设置了使用简中作为显示语言,有些 electron 程序是没这选项的(程序员偷懒或没这意识),那就是默认跟随系统语言,所以如果不是简中的系统用这种 electron 程序,遇到简中字体就会眼瞎。不过我不知道 win11 和更新点的 electron 是否已经有了很好的解决办法,自己也没时间去做测试。
火狐对于 CJK 字体有自己的解决办法的,因为它可以自己设置字体回落顺序或者是对应的语言使用对应的字体的,这点比 chromium 要好,chromium 的方法就是简单粗暴调用系统设置(非常原生)。edge 则是更进一步,不再赘述。你可以再试一下 vivaldi ,不管是什么系统语言,都是默认用微软雅黑,vivaldi 是比较开放的,它的界面是可以高度自定义的,你去看它与界面字体相关的代码就知道是怎么回事了(就在一个 CSS 样式文件里)。
其实最简单的办法,就是改 FontLink\SystemLink 下的 Segoe UI 的值。你把系统语言设成非简中和简中,你会发现 Segoe UI 的值是不一样的,所以调整系统语言会影响回落顺序的根本原因就是修改了 Segoe UI 的值。
在 Segoe UI 设置了简中优先的情况下,如果无论是简中还是非简中,还是默认日文优先的话,那就是不是跟随 FontLink\SystemLink 来做字体回落的,软件窗体部分的字体可能是通过 Desktop\WindowMetrics 这下面的键值来设置的,这个就可以通过软件 noMeiryoUI 来设置。这个也可能是在调整系统语言时会一并做出的更改之一,没有测试,仅猜测。
除此之外的,如果上述两个步骤都改成了微软雅黑,但软件还是日文优先,那就说明是软件内部有自己的字体回落,这时候就只能删掉字体来解决,也就是你所写的解决方案。例子就是 edge 的标签页,日文优先,定义在了它的界面的 CSS 文件里,但因为没开放修改,我猜是 resources.pak 这文件里有,把它解开然后改里面的某个 CSS 文件,我看到这文件的有关字段如下:
s.Cyrillic="Segoe UI Web (Cyrillic)"
c.ChineseSimplified="'Microsoft Yahei UI', Verdana, Simsun",c.ChineseTraditional="'Microsoft Jhenghei UI'
c.Japanese="'Yu Gothic UI', 'Meiryo UI', Meiryo, 'MS Pgothic', Osaka",c.Korean="'Malgun Gothic', Gulim"
把 "Segoe UI Web (Cyrillic)" 替换成 "Segoe UI" 可能就能解决这个问题了,也可以 "Segoe UI, Microsoft Yahei UI"
只是猜测
不过一般而言,很少有软件会自己内部定义字体回落的,都是跟随系统设置。所以改 FontLink\SystemLink 能解决大部分问题。