简介

起因很简单,想在 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>

解决方案

考虑到系统中其他地方也没有这种问题,所以问题的矛头开始指向了游戏本体。
所以:

总的来说

  1. 写一套规则让起源一放弃 Helvetica 字体,转而全部使用特定的中文字体
  2. 在游戏启动时添加一个环境变量让游戏使用这一套规则文件

步骤不多,详情请参考整条 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% 就能修复字体错误的问题

如果想改成别的现有字体…
应该看得出要换什么的吧,挺明显的