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

Script

已經寫好的「Script」。

說明

下載「Google版」。

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

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

解壓縮

1
$ unzip Noto-hinted.zip -d Noto

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

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

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

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

設定擁有者

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

或是執行,設定擁有者

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

設定檔案權限

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

安裝字型

1
sudo fc-cache -fv

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

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

1
fc-match -a | grep Noto

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

1
2
3
4
<string>Noto Sans CJK TC</string>
<string>Noto Sans CJK SC</string>
<string>Noto Sans CJK JP</string>
<string>Noto Sans CJK KR</string>

用下面的指令就可以查到

1
$ fc-match -a | grep CJK

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

1
$ wget -c https://ppa.launchpad.net/createsc/3beol/ubuntu/pool/main/f/fonts-noto-cjk/fonts-noto-cjk_20140912-1~utopic0918~3beol_all.deb
1
2
$ 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」字型。

1
2
3
$ 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」。

當你執行

1
fc-match

就會看到下面的訊息

1
2
3
4
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」的內容

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

就會看到

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?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」)。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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格式錯誤。

然後在執行

1
$ fc-match

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

1
2
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」是有被載入的。

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

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

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

1
$ fc-match -s 標楷體 | less

結論

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