Arch (KDE Plasma 桌面 + Wine 界面)中文化

基础中文化

本节参考:Localization /Simplified Chinese - ArchWiki

设置locale

生成中文locale

/etc/locale.gen 中删除的zh_CN.UTF-8 UTF-8 前方的 # 之后使用以下指令生成 Locale:

 locale-gen
设置终端locale

为 TTY 设置英文 locale 防止乱码。当然也可以去 安装zhcon等软件包为TTY启用中文支持

/etc/locale.conf 中添加 LANG=en_US.UTF-8

TTY 的英文 locale

中文字体配置

安装字体
  • 全部中文字体请见Localization/Chinese - Arch Wiki,如果不需要浏览除中文以外的内容,则安装纯中文字体包即可(后缀 zh-cn ,cn 或 sc 的)
  • 如果有 Emoji、数学字符等特殊需要,请额外参考 Fonts - Arch Wiki
  • 注意右上角带有 AUR 的需要自行从 AUR 下载编译或安装 AUR Helper

以安装 noto 亚洲字体和 Emoji 字体为例:

pacman -Syu noto-fonts-cjk noto-fonts-emoji
通过fontconfig设置治理字体匹配问题

如果安装了亚洲字体,有可能会遇到异体字问题,参考字体配置 - Arch Linux 中文维基

启用fontconfig配置文件

检查 /etc/fonts/conf.d 有没有 50-user.conf51-local.conf。这两个文件分别启用用户配置文件 ~/.config/fontconfig/fonts.conf全局配置文件 /etc/fonts/local.conf。如果没有,请通过以下指令建立软连接:

cd /etc/fonts/conf.d
sudo ln -s /usr/share/fontconfig/conf.avail/50-user.conf
sudo ln -s /usr/share/fontconfig/conf.avail/51-local.conf
编写fontconfig配置文件
  • fontconfig 文件本质就是在对输入的font family字符串进行修改,最后匹配本地字符库
  • 具体配置方法见 fonts-config(5)。可以参考示例1示例2
  • 可以使用指令 env FC_DEBUG=4 fc-match 来查看配置执行情况以及修正错误
  • 根据 Windows 中默认的字体回退顺序设置回退顺序:SimSun(SC) -> MingLiU(TC) -> MS UI Gothic(JP) -> Batang(KR)

以下是我的配置文件:

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

  <!-- 英文默认字体使用 Noto 字体,终端使用 Hack.并设置中文 Fallback -->
  <match>
    <test qual="any" name="family"> <string>serif</string> </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Serif</string>
      <string>Noto Serif CJK SC</string>
      <string>Noto Serif CJK TC</string>
      <string>Noto Serif CJK JP</string>
      <string>Noto Serif CJK KR</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family"> <string>sans-serif</string> </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Sans</string>
      <string>Noto Sans CJK SC</string>
      <string>Noto Sans CJK TC</string>
      <string>Noto Sans CJK JP</string>
      <string>Noto Sans CJK KR</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family"> <string>monospace</string> </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Hack</string>
      <string>Noto Sans Mono CJK SC</string>
      <string>Noto Sans Mono CJK TC</string>
      <string>Noto Sans Mono CJK JP</string>
      <string>Noto Sans Mono CJK KR</string>
    </edit>
  </match>

  <!-- Windows & Linux Chinese fonts. -->
  <!-- 把所有常见的中文字体映射到思源黑体和思源宋体,这样当这些字体未安装时会使用思源黑体和思源宋体.
解决特定程序指定使用某字体,并且在字体不存在情况下不会使用fallback字体导致中文显示不正常的情况. -->
  <!-- 文泉驿字体 -->
  <match target="pattern">
    <test qual="any" name="family"> <string>WenQuanYi Zen Hei</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family"> <string>WenQuanYi Micro Hei</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family"> <string>WenQuanYi Micro Hei Light</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>

  <!-- 微软雅黑 -->
  <match target="pattern">
    <test qual="any" name="family"> <string>Microsoft YaHei</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>
  <match target="pattern">
    <test qual="any" name="family"> <string>微软雅黑</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>

  <!-- 黑体 -->
  <match target="pattern">
    <test qual="any" name="family"> <string>SimHei</string> </test>
    <edit name="family" mode="assign" binding="same">
      <string>Noto Sans CJK SC</string>
    </edit>
  </match>