Loading

🔨Ubuntu Linux '门' '复' 显示不标准 / 显示非同一种中文字体

原因:因为 Noto Sans CJK 中包含日文,而日文显示的优先级高于中文
解决:调高具体字体的显示优先级

创建并修改此文件 ~/.config/fontconfig/fonts.conf

如果用的是 adobe-source-han-sans-otc-fonts
将代码中的 Noto Sans CJK SC 替换为 Source Han Sans SC 即可

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

<!-- Default system-ui fonts -->
<match target="pattern">
  <test name="family">
    <string>system-ui</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>sans-serif</string>
  </edit>
</match>

<!-- Default sans-serif fonts-->
<match target="pattern">
  <test name="family">
    <string>sans-serif</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>Noto Sans CJK SC</string>
    <string>Noto Sans</string>
    <string>Twemoji</string>
  </edit>
</match>

<!-- Default serif fonts-->
<match target="pattern">
  <test name="family">
    <string>serif</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>Noto Serif CJK SC</string>
    <string>Noto Serif</string>
    <string>Twemoji</string>
  </edit>
</match>

<!-- Default monospace fonts-->
<match target="pattern">
  <test name="family">
    <string>monospace</string>
  </test>
  <edit name="family" mode="prepend" binding="strong">
    <string>Noto Sans Mono CJK SC</string>
    <string>Symbols Nerd Font</string>
    <string>Twemoji</string>
  </edit>
</match>


</fontconfig>

验证

fc-match -s :lang=zh | head -n 5

可以看到第一行是 NotoSansCJK-Regular.ttc: "Noto Sans CJK SC" "Regular"

如果看不到就更新字体缓存后再查看

fc-cache -fv

如果输入法的字体没有改变,那就注销

参考:
修正简体中文显示为异体(日文)字形
强烈建议阅读:用 fontconfig 治理 Linux 中的字体

posted @ 2021-01-14 20:10  Rubrum  阅读(1152)  评论(0)    收藏  举报