Linux 下設定回落字型來避免Konsole裡中文以宋體顯示

写python的叮叮叮發表於2024-07-01

Linux 下設定回落字型來避免Konsole裡中文以宋體顯示

起因

最近一段時間突然發現我的 konsole 終端裡面的中文字型開始顯示為宋體,倒不是說宋體一定不好看,而是跟英文字型顯得有些格格不入。不過突然想起之前似乎在哪裡看到過這個,後來想起是 archlinux cn 的 TG 頻道里有提到這個,並且給出了 解決方案 。不過既然提到了 fontconfig 我覺得還是應該去了解一下,知其然也知其所以然。

image-20240701044115916

fontconfig 是什麼

這個問題已經有諸位大佬講的比較清楚,比如 這篇文章,如果想要相對詳細瞭解的可以仔細閱讀一番,收穫會比較大。

而我們這裡就簡單的知道 fontconfig 可以提供字型回落,也就是如果某個字型不能正常顯示一些文字,比如英文字型想要顯示中文,那麼這個時候 fontconfig 就可以控制回落的時候選擇什麼字型,也就解決了我們上面的預設回落為宋體的問題。

如何配置 fontconfig

就像上面那片大佬的文章裡面講到的,我個人也是推薦在 ~/.config/fontconfig/fonts.conf 中配置 fontconfig。

fontconfig 的配置檔案格式為 xml 格式,簡單的示例如下:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <match>
        <test name="family" compare="eq">
            <string>Hack Nerd Font Mono</string>
        </test>
        <edit name="family" mode="append">
            <string>Source Han Mono SC</string>
        </edit>
    </match>
</fontconfig>

對於這個配置檔案來說,Hack Nerd Font Mono 是需要被配置的字型,而 Source Han Mono SC 則是回落字型。由於我們目前配置的是為 konsole 配置,所以中文字型我們也選擇了等寬字型 Source Han Mono, 當然你也可以選擇其他的等寬字型,比如 maple-font

然後我們也需要確定目前 konsole 使用的字型,點選右上角 選單——編輯當前方案——外觀, 即可在下方看到自己選擇的字型,之後你可以執行 fc-list | grep 字型名 來找到這款字型並且複製其名稱。

更改完上面兩個值,儲存之後執行 fc-cache -fv 來重新整理字型快取即可。

後面我們舉一反三就可以更改其他英文字型的回落字型,只需要將 match 以及其中間的內容複製到下面新加一個配置即可。

相關文章