Linux

Ubuntu Server 上的無頭 Chrome 中未顯示非拉丁字元

  • May 8, 2019

當我在 Chrome 中訪問一個網站時,它顯示非拉丁字元就好了。但是,當我在 Ubuntu Server 上的 headless Chrome 中執行同一個站點並通過埠 9222 上的調試器查看該站點時,所有字元都顯示為空矩形

$$ $$. 中文、印度語、阿拉伯語等語言會出現此問題。

該站點使用 Liberation 字型,並且該站點的標題設置為 utf-8 字元集。Liberation 字型都安裝在 Ubuntu Server 上,並且字型是從伺服器的 webroot 本地載入的,也使用 CSS。在正常 Chrome 中,這可以完美執行,但在無頭模式下則不行。

顯然,預設情況下,無頭 Chrome 無法顯示非拉丁字元是一個已知問題,但是到目前為止我還沒有找到任何全面的解決方案。

如何使非拉丁字元在無頭 Chrome 中工作?最好使用我已經在使用的 Liberation 字型。

我找到了解決問題的方法。

似乎無頭模式下的 Chrome 需要為非拉丁字元安裝特定字型。雖然這當然可以通過安裝多種字型來解決,但為支持多種語言的網站安裝字型會讓人頭疼。

幸運的是,有可用的現代字型包幾乎涵蓋了地球上所有的語言和腳本。我已經安裝了 3 個字型包,現在可以顯示許多語言的非拉丁字元。對於印度,我安裝了一個特殊的字型包來涵蓋印度的所有語言和腳本。我還安裝了一個特殊的字型包,包括簡體中文、繁體中文、日文和韓文。

這是解決問題的 3 個字型包。從上到下分別是印度字型包、國際字型包和中日韓字型包:

sudo apt-get install fonts-indic
sudo apt-get install fonts-noto
sudo apt-get install fonts-noto-cjk

安裝這些字型包可以解決問題。它做得如此優雅。網站程式碼中使用的普通拉丁字型仍然有效,但是當無法找到特定語言的字元時,無頭 Chrome 會使用新安裝的字型包。

引用自:https://serverfault.com/questions/966314