Ubuntu環境下,探究 fontconfig 相關的套件

測試環境

以下所提的測試環境是在「Xubuntu 14.04 64位元」測試。我使用的界面是英文。所以一些相關的術語是使用英文摟。

fontconfig 相關的套件

Package

Source Package

剛剛才發現一個「查詢某個檔案或是資料夾,屬於哪個套件」的指令下法。

原來可以執行下面的指令阿,就可以知道「30-cjk-aliases.conf」是屬於哪個套件。參考這篇提到的。

1
$ dpkg -S 30-cjk-aliases.conf

fontconfig

在ubuntu手動安裝font。通常會接觸到一個指令「fc-cache」。「fc-cache」的用法,可以參考「這篇」的說明範例來練習。

通常會這樣下。

1
$ sudo fc-cache -fv

而這個指令是屬於「fontconfig」這個套件。
當然這個套件還包含其他相關的指令。

  • fc-cache
  • fc-cat
  • fc-list
  • fc-match
  • fc-pattern
  • fc-query
  • fc-scan
  • fc-validate

這裡值得一提的指令「fc-match」。

當你在設定「/etc/fonts/conf.d」裡面的檔的時候,若有寫錯。執行下面的指令,就會告訴你哪裡寫錯了。

1
$ fc-match

下面這個指令下法,可以讓你了解系統尋找font的順序。「fc-match」的用法會在另一篇文章來討論。

1
$ fc-match -s nonospace | less

fontconfig-config

通常我們在設定font的時候,也常到「/etc/fonts」去做些修改。
而這個資料夾裡面的檔案則是來自於「fontconfig-config」這個套件。

例如「65-nonlatin.conf」。

1
$ dpkg -S 65-nonlatin.conf

language-selector-common

這一頁提到的「30-cjk-aliases.conf」

正常的檔放在「/etc/fonts/conf.avail/30-cjk-aliases.conf」
通常會有一個symbolic link放在「/etc/fonts/conf.d/30-cjk-aliases.conf」。

這個是屬於「language-selector-common」這個套件。而不是放在上面提到的「fontconfig-config」。

這個套件也包含了幾個常看到的檔。

  • 30-cjk-aliases.conf
  • 69-language-selector-zh-cn.conf
  • 69-language-selector-zh-hk.conf
  • 69-language-selector-zh-mo.conf
  • 69-language-selector-zh-sg.conf
  • 69-language-selector-zh-tw.conf
  • 99-language-selector-zh.conf

額外提的,還有一個套件叫「language-selector-gnome」,和「language-selector-common」都是屬於「language-selector」這個「原始碼套件(Source Package )」。
這個套件,就是我們常看到的「Language Support」哪隻程式。

在「Xubuntu」,展開「開始選單(Whisker)」,選單右下方有一個按鈕「All Setting」,會跳出「Settings」這隻程式。在「Psersonal」就會看到「Language Support」。

或是你用的是「Applications Menu」。則是展開後,選擇「Settings Manager」,同樣會跳出會跳出「Settings」這隻程式。

或是直接在Termianl,執行「xfce4-settings-manager」也行。在「Whisker選單」查詢「xfce4-settings-manager」或是「Settings Manager」,也查的到,基本上你打「se」大概就會跑出來「Settings Manager」了。

而剛剛提到的「language-selector-gnome」,裡面有一個程式叫做「gnome-language-selector」,就是剛剛提到的「Language Support」。在「Terminal」下「gnome-language-selector」這個指令就行了,就不用透過剛剛選單的方式。

先驗證上面提到的

先準備一個暫時工作的資料夾

1
2
mkdir ~/tmp/font -p
cd ~/tmp/font

準備好等會所有要工作的資料夾。

1
2
3
4
5
6
7
8
9
10
11
mkdir fontconfig/download -p
mkdir fontconfig/source -p

mkdir fontconfig-config/download -p
mkdir fontconfig-config/source -p

mkdir language-selector-common/download -p
mkdir language-selector-common/source -p

mkdir language-selector-gnome/download -p
mkdir language-selector-gnome/source -p

下載「fontconfig」的「package」,並解開。

1
2
3
cd ~/tmp/font/fontconfig/download
apt-get download fontconfig
dpkg -x fontconfig_2.11.0-0ubuntu4.1_amd64.deb fontconfig

觀看有哪些執行檔。

1
$ ls fontconfig/usr/bin -1

就會看到

1
2
3
4
5
6
7
8
fc-cache
fc-cat
fc-list
fc-match
fc-pattern
fc-query
fc-scan
fc-validate

你可以觀看最重要的文件「fontconfig-user.html」,不過我也還沒看,只是要寫這篇,才無意間發現有這個文件。

1
$ lynx fontconfig/usr/share/doc/fontconfig/fontconfig-user.html

或是

1
$ firefox fontconfig/usr/share/doc/fontconfig/fontconfig-user.html

或是

1
$ sensible-browser fontconfig/usr/share/doc/fontconfig/fontconfig-user.html

觀看有哪些「Manual」可以查詢。

1
$ ls fontconfig/usr/share/man/man1 -1 # 這裡是下「-1」喔,不是「-l」

就會看到

1
2
3
4
5
6
7
8
fc-cache.1.gz
fc-cat.1.gz
fc-list.1.gz
fc-match.1.gz
fc-pattern.1.gz
fc-query.1.gz
fc-scan.1.gz
fc-validate.1.gz

這些就是上面那些程式的相關文件
所以就可以查詢。

man 1

注意以上的路徑是在我們目前工作的資料夾裡。當然你也可以對應到「/」底下。
因為系統應該有裝「fontconfig」這個套件。所以相對在「/」底下應該都有這樣的檔案。
上面的作法,只是要讓你看到「fontconfig」有安裝了什麼檔案在「/」底下。

下載「fontconfig」的「Source Package」,並解開。

1
2
3
4
cd ~/tmp/font/fontconfig/source
apt-get source fontconfig
cd fontconfig-2.11.0
mc

你就會看到相關的原始碼檔案了。

下載「fontconfig-config」的「package」,並解開。

1
2
3
cd ~/tmp/font/fontconfig-config/download
apt-get download fontconfig-config
dpkg -x fontconfig-config_2.11.0-0ubuntu4.1_all.deb fontconfig-config

觀看有哪些檔。

1
$ ls fontconfig-config/etc/fonts/conf.d -1  # 這裡是下「-1」喔,不是「-l」

就可以看到這下面這幾個symblic檔

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
10-antialias.conf
10-hinting.conf
10-hinting-slight.conf
10-scale-bitmap-fonts.conf
11-lcdfilter-default.conf
20-unhint-small-vera.conf
30-metric-aliases.conf
30-urw-aliases.conf
40-nonlatin.conf
45-latin.conf
49-sansserif.conf
50-user.conf
51-local.conf
60-latin.conf
65-fonts-persian.conf
65-nonlatin.conf
69-unifont.conf
70-no-bitmaps.conf
80-delicious.conf
90-synthetic.conf
README

觀看有哪些「Manual」可以查詢。

1
$ ls fontconfig-config/usr/share/man/man5

可以看到

1
fonts-conf.5.gz

也就是說安裝了「fontconfig-config」,就會安裝「fonts-conf」這個manual。

所以可以直接下

1
$ man fonts-conf

就可以看到相關文件了。內容應該跟剛剛的「fontconfig-user.html」是一樣的。

下載「fontconfig-config」的「Source Package」,並解開。

1
2
3
4
cd ~/tmp/font/fontconfig-config/source
apt-get source fontconfig-config
cd fontconfig-2.11.0
mc

你就會看到相關的原始碼檔案了。
fontconfig」和「fontconfig-config」,都是屬於「fontconfig」這個「Source Package」。

1
$ vi fontconfig-2.11.0/debian/control

就可以看到拆成幾個package的相關資訊。

下載「language-selector-common」 的「package」,並解開。

1
2
3
cd ~/tmp/font/language-selector-common/download
apt-get download language-selector-common
dpkg -x language-selector-common_0.129.2_all.deb language-selector-common

觀看有哪些設定檔。

1
$ ls language-selector-common/etc/fonts/conf.d -1

就可以看到這下面這幾個symblic檔

1
2
3
4
5
6
7
30-cjk-aliases.conf
69-language-selector-zh-cn.conf
69-language-selector-zh-hk.conf
69-language-selector-zh-mo.conf
69-language-selector-zh-sg.conf
69-language-selector-zh-tw.conf
99-language-selector-zh.conf

下載「language-selector-common」的「Source Package」,並解開。

1
2
3
4
cd ~/tmp/font/language-selector-common/source
apt-get source language-selector-common
cd language-selector-0.129.2
mc

你就會看到相關的原始碼檔案了。

下載「language-selector-gnome」的「Package」,並解開。

1
2
3
cd ~/tmp/font/language-selector-gnome/download
apt-get download language-selector-gnome
dpkg -x language-selector-gnome_0.129.2_all.deb language-selector-gnome

觀看有哪些執行檔。

1
$ ls language-selector-gnome/usr/bin/

可以看到只有一個檔

1
gnome-language-selector

是用Python3寫的

1
$ vi language-selector-gnome/usr/bin/gnome-language-selector

觀看有哪些「Manual」可以查詢。

1
ls language-selector-gnome/usr/share/man/man1

可以看到

1
gnome-language-selector.1.gz

所以就可以看相關的文件

man 1

下載 language-selector-gnome 的「Source Package」,並解開。

1
2
3
4
cd ~/tmp/font/language-selector-gnome/source
apt-get source language-selector-gnome
cd language-selector-0.129.2
mc

language-selector-common」和「language-selector-gnome」,都是屬於「language-selector」這個「Source Package」。