修復Arch Linux和Manjaro Linux無法顯示emoji的問題

apocelipes發表於2022-05-04

安裝好Arch Linux或Manjaro Linux系統後預設沒辦法正常顯示emoji,通常會變成方框或者帶有unicode碼的方塊:

這是因為缺失字型以及相關的字型配置導致的。

當然也有一小部分應用沒有這個問題(比如Chrome),因為字型是可以在程式裡單獨設定的,Qt和GTK都有相應的介面,只要設定了正確的字型即可顯示emoji。但很多系統程式為了相容性是沒有進行這些設定的,比如檔案管理器和終端模擬器。

解決辦法:

  1. 安裝emoji字型
  2. 更新字型配置

首先是安裝emoji字型,不考慮aur和自己下載安裝字型的話一般會安裝這個:noto-fonts-emoji。自測應該能正常顯示所有常見emoji。

安裝命令:

sudo pacman -S noto-fonts-emoji

這時應用程式還是不能正常顯示emoji的,需要進行第二步更新字型配置。

字型的配置檔案在/etc/fonts目錄下,不同系統可能不同,在這個目錄下新建local.conf檔案,這個檔案裡是我們的自定義配置,不要去修改font.conf檔案

local.conf裡寫入下面的內容:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <alias>
   <family>sans-serif</family>
   <prefer>
     <family>Noto Sans</family>
     <family>Noto Color Emoji</family>
     <family>Noto Emoji</family>
     <family>DejaVu Sans</family>
   </prefer> 
 </alias>

 <alias>
   <family>serif</family>
   <prefer>
     <family>Noto Serif</family>
     <family>Noto Color Emoji</family>
     <family>Noto Emoji</family>
     <family>DejaVu Serif</family>
   </prefer>
 </alias>

 <alias>
  <family>monospace</family>
  <prefer>
    <family>Noto Mono</family>
    <family>Noto Color Emoji</family>
    <family>Noto Emoji</family>
    <family>DejaVu Sans Mono</family>
   </prefer>
 </alias>
</fontconfig>

儲存檔案後使用命令讓新配置生效:

fc-cache

更新完配置後需要重啟應用才能正常顯示emoji(一部分桌面服務需要登出當前使用者再次登入才會重啟)。推薦可以的話直接重啟一下作業系統

現在可以正常顯示emoji了:

參考

https://dev.to/darksmile92/get-emojis-working-on-arch-linux-with-noto-fonts-emoji-2a9

相關文章