avatar💡
Irving WuIrving Wu's Blog

The truth of the world is beyond the realm of common sense.

常識超えたところに 世界の真理がある

Linux非中日韩语言日语字形修复

如果你在Linux上使用非中日韩语言作为locale,那么大概率你的汉字字体会是日语新字字形,虽不影响使用,但是还是不太舒服,设置一下~/.config/fontconfig/fonts.conf即可解决这个问题

我是用的是这些字体,大家可以酌情修改,保存后注销重新登录即可生效

xml
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

  <!-- ========== 全局渲染设置 ========== -->
  <!-- 抗锯齿 -->
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>
  </match>
  <!-- 微调风格:轻微 (hintslight) 适合高分屏,保留字形准确性 -->
  <match target="font">
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
  </match>
  <!-- 次像素渲染:rgba 顺序,现代液晶常用 -->
  <match target="font">
    <edit name="rgba" mode="assign"><const>rgb</const></edit>
  </match>
  <!-- LCD 滤镜:默认即可,避免色彩边缘 -->
  <match target="font">
    <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
  </match>

  <!-- ========== 基础字体别名 ========== -->

  <!-- 无衬线 (sans-serif) -->
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Adwaita Sans</family>
      <family>Sarasa UI SC</family>  <!-- 默认中文 fallback -->
      <family>Sarasa UI TC</family>
      <family>Sarasa UI HC</family>
      <family>Sarasa UI J</family>
      <family>Sarasa UI K</family>
      <family>Noto Sans CJK SC</family>  <!-- 默认中文 fallback -->
      <family>Noto Sans CJK TC</family>
      <family>Noto Sans CJK HK</family>
      <family>Noto Sans CJK JP</family>
      <family>Noto Sans CJK KR</family>
      <family>Noto Color Emoji</family>
    </prefer>
  </alias>

  <!-- 衬线 (serif)  如果你需要衬线方案,这里使用 Noto Serif 搭配 CJK -->
  <alias>
    <family>serif</family>
    <prefer>
      <family>Roboto Slab</family>
      <family>Noto Serif</family>
      <family>Noto Serif CJK SC</family>
      <family>Noto Serif CJK TC</family>
      <family>Noto Serif CJK HK</family>
      <family>Noto Serif CJK JP</family>
      <family>Noto Serif CJK KR</family>
      <family>Noto Color Emoji</family>
    </prefer>
  </alias>

  <!-- 等宽 (monospace) -->
  <alias>
    <family>monospace</family>
    <prefer>
      <family>CaskaydiaCove Nerd Font Mono</family>
      <family>Adwaita Mono</family>
      <family>Sarasa Mono SC</family>  <!-- 默认中文 fallback -->
      <family>Sarasa Mono TC</family>
      <family>Sarasa Mono HC</family>
      <family>Sarasa Mono J</family>
      <family>Sarasa Mono K</family>
      <family>Noto Sans Mono CJK SC</family>
      <family>Noto Sans Mono CJK TC</family>
      <family>Noto Sans Mono CJK HK</family>
      <family>Noto Sans Mono CJK JP</family>
      <family>Noto Sans Mono CJK KR</family>
      <family>Noto Color Emoji</family>
    </prefer>
  </alias>

  <!-- ========== 根据语言动态优化 CJK 字体顺序 ========== -->
  <!-- 当应用的区域设置为某种中文/日/韩时,将对应的 Noto CJK 字体提前 -->
  <!-- 简体中文 -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-cn</string></test>
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="prepend" binding="same"><string>Adwaita Sans</string><string>Sarasa UI SC</string><string>Noto Sans CJK SC</string></edit>
  </match>
  <!-- 繁体中文(台湾) -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-tw</string></test>
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="prepend" binding="same"><string>Adwaita Sans</string><string>Sarasa UI TC</string><string>Noto Sans CJK TC</string></edit>
  </match>
  <!-- 繁体中文(香港) -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-hk</string></test>
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="prepend" binding="same"><string>Adwaita Sans</string><string>Sarasa UI HC</string><string>Noto Sans CJK HK</string></edit>
  </match>
  <!-- 日文 -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>ja</string></test>
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="prepend" binding="same"><string>Adwaita Sans</string><string>Sarasa UI J</string><string>Noto Sans CJK JP</string></edit>
  </match>
  <!-- 韩文 -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>ko</string></test>
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="prepend" binding="same"><string>Adwaita Sans</string><string>Sarasa UI K</string><string>Noto Sans CJK KR</string></edit>
  </match>

  <!-- 同理处理等宽字体 -->
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-cn</string></test>
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="prepend" binding="same"><string>CaskaydiaCove Nerd Font Mono</string><string>Adwaita Mono</string><string>Sarasa Mono SC</string><string>Noto Sans Mono CJK SC</string></edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-tw</string></test>
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="prepend" binding="same"><string>CaskaydiaCove Nerd Font Mono</string><string>Adwaita Mono</string><string>Sarasa Mono TC</string><string>Noto Sans Mono CJK TC</string></edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains"><string>zh-hk</string></test>
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="prepend" binding="same"><string>CaskaydiaCove Nerd Font Mono</string><string>Adwaita Mono</string><string>Sarasa Mono HC</string><string>Noto Sans Mono CJK HK</string></edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains"><string>ja</string></test>
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="prepend" binding="same"><string>CaskaydiaCove Nerd Font Mono</string><string>Adwaita Mono</string><string>Sarasa Mono J</string><string>Noto Sans Mono CJK JP</string></edit>
  </match>
  <match target="pattern">
    <test name="lang" compare="contains"><string>ko</string></test>
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="prepend" binding="same"><string>CaskaydiaCove Nerd Font Mono</string><string>Adwaita Mono</string><string>Sarasa Mono K</string><string>Noto Sans Mono CJK KR</string></edit>
  </match>

  <!-- ========== Emoji 优先级保证 ========== -->
  <!-- 当请求包含 Emoji 字符时,优先使用彩色 Emoji 字体 -->
  <alias binding="same">
    <family>Noto Color Emoji</family>
    <default>
      <family>emoji</family>
    </default>
  </alias>

  <!-- 确保 Emoji 在无衬线/衬线/等宽中始终作为最后的回退 -->
  <match target="pattern">
    <test name="family"><string>sans-serif</string></test>
    <edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
  </match>
  <match target="pattern">
    <test name="family"><string>serif</string></test>
    <edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
  </match>
  <match target="pattern">
    <test name="family"><string>monospace</string></test>
    <edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
  </match>

</fontconfig>
N卡+ArchLinux的GNOME Wayland使用指南
在类原生ROM上实现应用双开