Ubuntu環境下,手動安裝思源字型

Script

已經寫好的「Script」。

說明

下載「Google版」。

$ wget -c https://noto-website.storage.googleapis.com/pkgs/Noto-hinted.zip

我是放在這個資料夾「/usr/local/share/fonts/Noto」,參考這篇提到的。

解壓縮

$ unzip Noto-hinted.zip -d Noto

移到「/usr/local/share/fonts/Noto」

$ sudo mv Noto /usr/local/share/fonts/

或是複製到「/usr/local/share/fonts/Noto」

$ sudo cp Noto /usr/local/share/fonts/ -a

設定擁有者

$ sudo chown root.staff /usr/local/share/fonts/Noto -R

或是執行,設定擁有者

$ sudo chown root:staff /usr/local/share/fonts/Noto -R

設定檔案權限

sudo chmod 644 /usr/local/share/fonts/Noto/* -R
sudo chmod 755 /usr/local/share/fonts/Noto

安裝字型

sudo fc-cache -fv

以上的步驟,就可以將字型安裝完成

你可以執行下面的指令驗證

fc-match -a | grep Noto

若要在「/etc/fonts/conf.d」做額外的設定,可以參考「這篇」和「這篇」,相關的gist - (1), (2),或是根據「這篇」的說明,改成自己的設定。 不過字型的名稱已經改變了,如下:

<string>Noto Sans CJK TC</string>
<string>Noto Sans CJK SC</string>
<string>Noto Sans CJK JP</string>
<string>Noto Sans CJK KR</string>

用下面的指令就可以查到

$ fc-match -a | grep CJK

另外在「這個PPA」也有看到一個套件「fonts-noto-cjk」,也可以參考他的設定

$ wget -c http://ppa.launchpad.net/createsc/3beol/ubuntu/pool/main/f/fonts-noto-cjk/fonts-noto-cjk_20140912-1~utopic0918~3beol_all.deb
$ dpkg -x fonts-noto-cjk_20140912-1\~utopic0918\~3beol_all.deb fonts-noto-cjk
$ vi fonts-noto-cjk/usr/share/fontconfig/conf.avail/90-fonts-noto-cjk.conf

目前Ubuntu 14.04也有一個套件叫「fonts-noto」,不過目前應該沒有包含「CJK」字型。

$ apt-get download fonts-noto
$ dpkg -x fonts-noto_2013-04-11-2_all.deb fonts-noto
$ ls fonts-noto/usr/share/fonts/truetype/noto/

輔助工具

在「「/etc/fonts/conf.d」裡面的設定檔,真的是「百家爭鳴」, 所以只好利用「Fontconfig Designer」這個工具,產生一個設定檔, 裡面建議的路徑是「~/.fonts.conf」。

不過目前「~/.fonts.conf」這個路徑, 要改放到「~/.config/fontconfig/fonts.conf」。

當你執行

fc-match

就會看到下面的訊息

Fontconfig warning: "/etc/fonts/conf.d/50-user.conf",
line 14: reading configurations from ~/.fonts.conf is deprecated.
please move it to ~/.config/fontconfig/fonts.conf manually
DejaVuSans.ttf: "DejaVu Sans" "Book"

觀看「/etc/fonts/conf.d/50-user.conf」的內容

$ vi /etc/fonts/conf.d/50-user.conf

就會看到

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
        <!--
            Load per-user customization files where stored on XDG Base Directory
            specification compliant places. it should be usually:
              $HOME/.config/fontconfig/conf.d
              $HOME/.config/fontconfig/fonts.conf
        -->
        <include ignore_missing="yes" prefix="xdg">fontconfig/conf.d</include>
        <include ignore_missing="yes" prefix="xdg">fontconfig/fonts.conf</include>
        <!-- the following elements will be removed in the future -->
        <include ignore_missing="yes" deprecated="yes">~/.fonts.conf.d</include>
        <include ignore_missing="yes" deprecated="yes">~/.fonts.conf</include>
</fontconfig>

也就是說個人的設定,要使用「~/.config/fontconfig/fonts.conf」和「~/.config/fontconfig/conf.d」裡面的檔。 而「~/.fonts.conf」和「~/.fonts.conf.d」這兩個地方就不建議使用了。

另外還有一個要注意的,就是,你有安裝「font-manager」這個套件。 當你執行這個程式的時候,會寫入「~/.config/fontconfig/fonts.conf」這個檔。

內容如下(假設使用者的帳號是「user」)。

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

<!--
    This file is maintained by Font Manager.

    If you wish to make any changes it is suggested you do so using

        /home/user/.config/font-manager/local.conf

    Any changes made to this file will be automatically relocated there
    at startup and any settings already in that file will be overwritten.
-->

    <include ignore_missing="yes">/home/user/.config/font-manager/conf.d</include>
    <include ignore_missing="yes">/home/user/.config/font-manager/directories.conf</include>
    <include ignore_missing="yes">/home/user/.config/font-manager/local.conf</include>
    <include ignore_missing="yes">/home/user/.config/font-manager/select.conf</include>

</fontconfig>

所以最佳的建議是寫到「~/.config/fontconfig/conf.d」裡面的檔案,可以參照「/etc/fonts/conf.d/」的作法。

例如你可以把剛剛利用「Fontconfig Designer」這個工具,所產生的內容。 寫到「~/.config/fontconfig/conf.d/70-select.conf」。

若你要確認「~/.config/fontconfig/conf.d/10-select.conf」有沒有真的被載入。 只要在「~/.config/fontconfig/conf.d/70-select.conf」第一行,第一字,雖便亂填一個字。例如:a。這樣就會導致xml格式錯誤。

然後在執行

$ fc-match

你就會看到下面的錯誤訊息。

Fontconfig error: "/home/user/.config/fontconfig/conf.d/70-select.conf", line 1: not well-formed (invalid token)
DejaVuSans.ttf: "DejaVu Sans" "Book"

也就是說,我們可以確定「~/.config/fontconfig/conf.d/70-select.conf」是有被載入的。

然後你要測試你的字型查找的順序是否跟你的設定檔相符合,可以用下面指令來測試

$ fc-match -s monospace | less
$ fc-match -s serif | less
$ fc-match -s sans-serif | less
$ fc-match -s mono | less
$ fc-match -s sans | less

也可以直接測試你某個「字型名稱」,確認查找的順序是不是你要的。

$ fc-match -s 標楷體 | less

結論

基本上,只要了設定檔的原理,還有查找的順序,就可以依照自己想要的設定去設摟,以上只是當作範例來說明,了解如何設定。