修复使用 起源一 引擎的游戏中,中文字体在 linux 下显示异常
简介
起因很简单,想在 linux 上跑 portal2/传送门2
然后看到了一堆日文字形的汉字
首先需要检查的肯定是 fontconfig
的配置,但我已经为常见的字体模式(sans-serif, serif, …)创建好了别名(alias)
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif CJK SC</family>
<family>Noto Serif</family>
<family>Noto Color Emoji</family>
</prefer>
</alias>
解决方案
考虑到系统中其他地方也没有这种问题,所以问题的矛头开始指向了游戏本体。
所以:
总的来说
- 写一套规则让
起源一
放弃Helvetica
字体,转而全部使用特定的中文字体 - 在游戏启动时添加一个环境变量让游戏使用这一套规则文件
步骤不多,详情请参考整条 issue
不过 issue 的作者用的可能是繁体中文,这里放一个只用 Noto Sans CJK SC
的版本:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<match target="pattern">
<test name="family" qual="any">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign" binding="same">
<string>Noto Sans CJK SC</string>
<string>Noto Sans</string>
<string>Noto Color Emoji</string>
<string>sans-serif</string>
</edit>
</match>
<dir>/usr/share/fonts</dir>
</fontconfig>
将配置写入 .config/fontconfig/portal2.conf
并在 steam 中将游戏启动命令改为 FONTCONFIG_FILE=~/.config/fontconfig/portal2.conf %command%
就能修复字体错误的问题
如果想改成别的现有字体…
应该看得出要换什么的吧,挺明显的