Ubuntu環境下,探究 fontconfig 相關的套件
測試環境
以下所提的測試環境是在「Xubuntu 14.04 64位元」測試。我使用的界面是英文。所以一些相關的術語是使用英文摟。
fontconfig 相關的套件
Package
- fontconfig
- fontconfig-config
- language-selector-common
- language-selector-gnome (這個套件基本上不算是,只是剛好有相關,順帶一提)
Source Package
剛剛才發現一個「查詢某個檔案或是資料夾,屬於哪個套件」的指令下法。
原來可以執行下面的指令阿,就可以知道「30-cjk-aliases.conf」是屬於哪個套件。參考這篇提到的。
$ dpkg -S 30-cjk-aliases.conf
fontconfig
在ubuntu手動安裝font。通常會接觸到一個指令「fc-cache」。「fc-cache」的用法,可以參考「這篇」的說明範例來練習。
通常會這樣下。
$ 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」裡面的檔的時候,若有寫錯。執行下面的指令,就會告訴你哪裡寫錯了。
$ fc-match
下面這個指令下法,可以讓你了解系統尋找font的順序。「fc-match」的用法會在另一篇文章來討論。
$ fc-match -s nonospace | less
fontconfig-config
通常我們在設定font的時候,也常到「/etc/fonts」去做些修改。 而這個資料夾裡面的檔案則是來自於「fontconfig-config」這個套件。
例如「65-nonlatin.conf」。
$ 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」這個指令就行了,就不用透過剛剛選單的方式。
先驗證上面提到的
先準備一個暫時工作的資料夾
mkdir ~/tmp/font -p
cd ~/tmp/font
準備好等會所有要工作的資料夾。
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」,並解開。
cd ~/tmp/font/fontconfig/download
apt-get download fontconfig
dpkg -x fontconfig_2.11.0-0ubuntu4.1_amd64.deb fontconfig
觀看有哪些執行檔。
$ ls fontconfig/usr/bin -1
就會看到
fc-cache
fc-cat
fc-list
fc-match
fc-pattern
fc-query
fc-scan
fc-validate
你可以觀看最重要的文件「fontconfig-user.html」,不過我也還沒看,只是要寫這篇,才無意間發現有這個文件。
$ lynx fontconfig/usr/share/doc/fontconfig/fontconfig-user.html
或是
$ firefox fontconfig/usr/share/doc/fontconfig/fontconfig-user.html
或是
$ sensible-browser fontconfig/usr/share/doc/fontconfig/fontconfig-user.html
觀看有哪些「Manual」可以查詢。
$ ls fontconfig/usr/share/man/man1 -1 # 這裡是下「-1」喔,不是「-l」
就會看到
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
- $ man 1 fc-cache
- $ man 1 fc-cat
- $ man 1 fc-list
- $ man 1 fc-match
- $ man 1 fc-pattern
- $ man 1 fc-query
- $ man 1 fc-scan
- $ man 1 fc-validate
注意以上的路徑是在我們目前工作的資料夾裡。當然你也可以對應到「/」底下。 因為系統應該有裝「fontconfig」這個套件。所以相對在「/」底下應該都有這樣的檔案。 上面的作法,只是要讓你看到「fontconfig」有安裝了什麼檔案在「/」底下。
下載「fontconfig」的「Source Package」,並解開。
cd ~/tmp/font/fontconfig/source
apt-get source fontconfig
cd fontconfig-2.11.0
mc
你就會看到相關的原始碼檔案了。
下載「fontconfig-config」的「package」,並解開。
cd ~/tmp/font/fontconfig-config/download
apt-get download fontconfig-config
dpkg -x fontconfig-config_2.11.0-0ubuntu4.1_all.deb fontconfig-config
觀看有哪些檔。
$ ls fontconfig-config/etc/fonts/conf.d -1 # 這裡是下「-1」喔,不是「-l」
就可以看到這下面這幾個symblic檔
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」可以查詢。
$ ls fontconfig-config/usr/share/man/man5
可以看到
fonts-conf.5.gz
也就是說安裝了「fontconfig-config」,就會安裝「fonts-conf」這個manual。
所以可以直接下
$ man fonts-conf
就可以看到相關文件了。內容應該跟剛剛的「fontconfig-user.html」是一樣的。
下載「fontconfig-config」的「Source Package」,並解開。
cd ~/tmp/font/fontconfig-config/source
apt-get source fontconfig-config
cd fontconfig-2.11.0
mc
你就會看到相關的原始碼檔案了。 「fontconfig」和「fontconfig-config」,都是屬於「fontconfig」這個「Source Package」。
$ vi fontconfig-2.11.0/debian/control
就可以看到拆成幾個package的相關資訊。
下載「language-selector-common」 的「package」,並解開。
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
觀看有哪些設定檔。
$ ls language-selector-common/etc/fonts/conf.d -1
就可以看到這下面這幾個symblic檔
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」,並解開。
cd ~/tmp/font/language-selector-common/source
apt-get source language-selector-common
cd language-selector-0.129.2
mc
你就會看到相關的原始碼檔案了。
下載「language-selector-gnome」的「Package」,並解開。
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
觀看有哪些執行檔。
$ ls language-selector-gnome/usr/bin/
可以看到只有一個檔
gnome-language-selector
是用Python3寫的
$ vi language-selector-gnome/usr/bin/gnome-language-selector
觀看有哪些「Manual」可以查詢。
ls language-selector-gnome/usr/share/man/man1
可以看到
gnome-language-selector.1.gz
所以就可以看相關的文件
man 1
- $ man 1 gnome-language-selector
下載 language-selector-gnome 的「Source Package」,並解開。
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」。