X11/字型指南
當您的 X11 客戶端繪製文字時,它們使用字型,這是標準字元(例如字母、數字和標點符號)的圖形。至少,字型是一種字形(也稱為族),例如Bitstream Vera Sans、Luxi Mono、Nimbus Roman No9 L 或 fixed。更具體地說,字型包括大小或樣式,例如Bitstream Vera Sans Bold Italic 10 點。字型也有三種類別,稱為襯線(如 Nimbus Roman No9 L)、無襯線(如 Bitstream Vera Sans)和等寬(如 Luxi Mono 或“fixed”)。
字型有多種字型格式,例如點陣圖、TrueType 和 PostScript。TrueType 字型是.ttf檔案。如果 X11 伺服器和客戶端位於不同的計算機上,那麼您可能在每臺計算機上安裝了不同的字型。
X11 客戶端可以透過多種不同的方式繪製文字
- 使用原始核心 X11 協議繪製文字。 使用這種方法,X11 伺服器會載入並存儲字型的每個字元。因此,如果 X11 伺服器(帶有螢幕和鍵盤)和 X11 客戶端(帶有您的 Web 瀏覽器或其他視窗)位於不同的計算機上,那麼您必須在伺服器上安裝字型。伺服器會將字元轉換為點陣圖並直立繪製它們,這意味著您無法旋轉它們。此外,伺服器從不為字型提供抗鋸齒功能。
- 使用 Xft 庫和 RENDER 擴充套件繪製文字。 使用這種方法,X11 客戶端會載入並存儲字型的每個字元。您必須在客戶端機器上安裝字型。客戶端會將字元轉換為幾何圖形。它將圖形分解為基本的形狀,例如三角形和梯形,然後將它們傳送到伺服器。伺服器繪製圖形,並可以選擇提供抗鋸齒功能,從而使字型的外觀更平滑。也可以旋轉這些圖形。
- 使用客戶端庫(例如 libart_lgpl 或 SDL_ttf)繪製文字。 雖然 libart_lgpl 是一個向量圖形庫,但 SDL_ttf 是一個庫,用於為使用跨平臺簡單直接媒體層 (Simple DirectMedia Layer) 的程式繪製文字。通常,這些庫會載入幾何圖形,然後將它們繪製到點陣圖中,可能會進行抗鋸齒和旋轉,然後再將其傳送到 X11 伺服器,就好像 X11 伺服器對文字一無所知一樣。這些庫也可以像 Xft 一樣使用 RENDER。
第一個 X11 客戶端使用核心 X11 協議繪製文字,因為這是唯一的選擇。但是,現在有幾個客戶端使用 Xft。由於 GTK+ 和 Qt(幾個應用程式背後的工具包,包括所有 GNOME 和 KDE 應用程式)切換到 Xft,因此許多桌面上的程式(包括 Konqueror)現在使用 Xft。
較舊的 Xft 版本 1 有自己的配置方案。這裡描述的版本 2 使用fontconfig 進行配置。由於 fontconfig 獨立於 X11,因此有像fc-list 這樣的程式可以列出 X11 程式(如 Konqueror)可用的字型,但它們本身不使用 X11。一個簡單的終端命令來列出可用字型是
$ fc-list | sort | less
預設的/etc/fonts/fonts.conf允許您選擇性地建立一個自定義檔案~/.fonts.conf用於您的自定義字型設定。
一些自定義包括
- 您可以新增包含字型的其他目錄。fontconfig 會遞迴地搜尋目錄。如果您有一個包含.ttf檔案的資料夾,那麼您只需將其新增到~/.fonts.conf中;您無需為 fontconfig 寫一個fonts.scale或任何其他此類檔案。
- 您可以指定要搜尋的額外字型,以查詢模糊的字元。如果您沒有看到引號之間 "→" 的右箭頭,那麼在搜尋用於繪製此句子的字元時沒有找到右箭頭字元。事實上,與 Xorg 一起包含的 Bitstream 和 Luxi 字型以及來自 ghostscript 的 Nimbus 字型沒有該字元,但來自 ghostscript 的“Standard Symbols L”字型包含一個右箭頭。
但是,~/.fonts.conf使用嚴格的 XML 語法。您必須在檔案開頭宣告<?xml version="1.0"?>,並且您必須將檔案中的所有其他內容放在<fontconfig>和</fontconfig>標籤之間,否則它將無法工作。
這是一個示例檔案,展示瞭如何執行這兩個自定義
<?xml version="1.0"?><fontconfig> <dir>/usr/local/share/ghostscript/fonts</dir> <alias> <family>sans-serif</family> <prefer><family>Standard Symbols L</family></prefer> </alias> <alias> <family>serif</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Standard Symbols L</family> </prefer> </alias> </fontconfig>
新增字型目錄很簡單:使用<dir>/完整/路徑</dir>。上面的示例添加了/usr/local/share/ghostscript/fonts,它在某些計算機上是 Ghostscript 字型的所在位置,包括 Standard Symbols L。
要將 Standard Symbols L 新增到首選字型列表中,以便我們始終可以繪製右箭頭 "→",則更為困難。假設您已將 Konqueror Web 瀏覽器設定為使用 Luxi Serif 來顯示網頁。然後,您載入了一些包含一些右箭頭的文字。當 fontconfig 未能在 Luxi Serif 字型中找到右箭頭時,它轉向了通用字型名稱 "serif",它實際上是首選襯線字型的列表的別名。
作為參考,以下是在/etc/fonts/fonts.conf中包含的字型別名,該檔案包含在 Xorg 6.9rc1 中。
<!-- Provide required aliases for standard names --> <alias> <family>serif</family> <prefer> <family>Bitstream Vera Serif</family> <family>Times New Roman</family> <family>Thorndale AMT</family> <family>Luxi Serif</family> <family>Nimbus Roman No9 L</family> <family>Times</family> <family>Frank Ruehl</family> <family>Kochi Mincho</family> <family>AR PL SungtiL GB</family> <family>AR PL Mingti2L Big5</family> <family>ï¼ï¼³ ææ</family> <family>Baekmuk Batang</family> <family>FreeSerif</family> </prefer> </alias> <alias> <family>sans-serif</family> <prefer> <family>Bitstream Vera Sans</family> <family>Verdana</family> <family>Arial</family> <family>Albany AMT</family> <family>Luxi Sans</family> <family>Nimbus Sans L</family> <family>Helvetica</family> <family>Nachlieli</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>AR PL KaitiM Big5</family> <family>ï¼ï¼³ ã´ã·ãã¯</family> <family>Baekmuk Dotum</family> <family>SimSun</family> <family>FreeSans</family> </prefer> </alias> <alias> <family>monospace</family> <prefer> <family>Bitstream Vera Sans Mono</family> <family>Andale Mono</family> <family>Courier New</family> <family>Cumberland AMT</family> <family>Luxi Mono</family> <family>Nimbus Mono L</family> <family>Courier</family> <family>Miriam Mono</family> <family>Kochi Gothic</family> <family>AR PL KaitiM GB</family> <family>Baekmuk Dotum</family> <family>FreeMono</family> </prefer> </alias>
根據您的發行版,可能有一個萬無一失的字型安裝程式,也可能沒有。無論如何,使用簡單的命令總是有效的。
要安裝新字型,只需下載字型檔案(例如“.ttf”檔案)並將其放在正確的目錄中。對於使用 fontconfig 的 Xft,您可以安裝哪些字型以及安裝的位置由預設配置檔案 /etc/fonts/fonts.conf 或 /etc/fonts/local.conf 或 ~/.fonts.conf 中的額外配置決定。大多數發行版在 /etc/fonts/fonts.conf 中有以下行
<dir>~/.fonts</dir>
這意味著您可以使用簡單的使用者許可權在您的主目錄中安裝新字型。要更新 fontconfig,您可以使用命令 fc-cache。
例如,假設您已將字型 anicefont.ttf 下載到您的桌面。開啟您喜歡的終端或一個簡單的 xterm,然後鍵入
cd mkdir .fonts cd .fonts cp ~/Desktop/anicefont.ttf . fc-cache
完成。您可以使用命令 fc-list(例如使用 sort 和 more 對其進行分頁)來檢查字型是否已成功安裝,並檢查您的字型名稱:fc-list | sort | more。