Fonts (正體中文)

From ArchWiki
Jump to: navigation, search
翻譯狀態: 本文章是 Fonts 的翻譯版本。最近一次的翻譯時間:2014-01-25。點擊本連結查看英文頁面之後的變更。

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: 在[#字型軟體包]之後都尚未sync到2016-06-27 (Discuss in Talk:Fonts (正體中文)#)

摘自維基百科

電腦字型 (computer font),或稱字型 (font),是包含字 (glyph)、字元或符號 (如 dingbats) 的電子檔案資料。」

注意,某些字型的授權有訂定合理使用限制。

字型格式

現今電腦所使用的字型中,絕大部分屬於點陣 (bitmap) 或輪廓 (outline)資料格式。

點陣字型
由點 (像素) 陣列構成的圖像,代表每種字樣、大小的字 (glyph)。
輪廓字型
又稱作向量 (vector) 字型。使用貝茲曲線 (Bézier curve)、繪圖指引和數學公式描繪每個字,產生的字元可以縮放至任意大小。

常見副檔名

  • bdf, bdf.gz – 點陣字型,bitmap distribution format 的縮寫,以及用 gzip 壓縮的 bdf
  • pcf, pcf.gz – 點陣字型,portable compiled font 的縮寫,以及用 gzip 壓縮的 pcf
  • psf, psfu, psf.gz, psfu.gz – 點陣字型,PC screen font 與 PC screen font Unicode 的縮寫,以及用 gzip 壓縮的版本 (跟 X.Org 不相容)
  • pfa, pfb – 輪廓字型,PostScript font ASCII 與 PostScript font binary 的縮寫。PostScript 字型內建印表機指令。
  • ttf – 輪廓字型,TrueType font 的縮寫。原本設計為 PostScript 字型的替代品。
  • otf – 輪廓字型,OpenType font 的縮寫。TrueType 附帶 PostScript 排版指令。

TrueType 與 OpenType 的技術差異,在大部分的用途之下可被忽略。某些 OpenType 字型使用了 ttf 副檔名。

其他格式

排版程式 TeX 與字型軟體 Metafont 有它們自己算繪字元的方法。這兩個程式使用的字型副檔名有 *pk, *gf, mfvf

FontForge 字型編輯程式會將字型存為自己的文字檔格式 sfd,這是 spline font database 的縮寫。

SVG 格式也有一套自己的字型描述方法。

安裝

安裝字型的方式有很多種。

Pacman

透過 pacman 可以安裝啟用軟體庫的字型。使用以下指令搜尋可供使用的字型:

$ pacman -Ss font

或只搜尋 ttf 字型:

$ pacman -Ss ttf

建立軟體包

您應該將管理字型的工作交給 pacman。字型可以打包成一份 Arch 軟體包,還可以透過 AUR 和社群分享。這裡有一個建立基本軟體包的範例。若想要更了解如何組建軟體包,請閱讀 PKGBUILD

字型檔案的家族名稱可以使用 fc-query 指令取得。例如: fc-query -f '%{family[0]}\n' /path/to/file。使用的格式請參考 FcPatternFormat(3) 手冊之說明。

PKGBUILD
pkgname=fontname-fonts
pkgver=1.0
pkgrel=1
pkgdesc="一些關於此字型之描述"
arch=('any')
depends=('fontconfig' 'xorg-font-utils')
source=("http://someurl.org/$pkgname.tar.bz2")
install=$pkgname.install

package() {
  install -Dm644 $pkgname/font.otf "$pkgdir"/usr/share/fonts/family_name/font.otf
  install -Dm644 $pkgname/font_bold.otf "$pkgdir"/usr/share/fonts/family_name/font_bold.otf
}
fontname-fonts.install
post_install() {
  fc-cache -s
}

post_upgrade() {
  post_install
}

post_remove() {
  post_install
}

手動安裝

要為系統新增一個軟體庫未收錄的字型,建議方法是#建立軟體包。採用這個方式讓 pacman 之後能夠移除或升級字型。不過您也可以用手動的方式安裝字型。

若要將字型安裝到系統 (讓所有使用者都能使用),將字型資料夾移至 /usr/share/fonts/ 目錄。為了使得這些字型檔案能夠被所有使用者讀取,使用 chmod 指令設定正確的權限:檔案至少必須是 0444,而目錄則是 0555。若要安裝給單一使用者,則將自行檔案安裝於 ~/.local/share/fonts 目錄。(注意:~/.fonts/ 的用法已經不被支援了)

要讓 X 伺服器可以直接載入字型 (不使用「字型伺服器」),需要將新增字型的所在目錄加為 FontPath 項目。這個項目位在您的 Xorg 設定檔案 (例如 /etc/X11/xorg.conf/etc/xorg.conf) 的 Files 區。更多詳細資訊請參閱#舊版應用程式

接著更新 fontconfig 字型快取:

$ fc-cache -vf

舊版應用程式

對於不支援 fontconfig 的舊版應用程式 (例如 GTK+ 1.x 應用程式和 xfontsel),必須在字型目錄下建立索引:

$ mkfontscale
$ mkfontdir

或者,用一行指令將多個資料夾包含進來:

$ for dir in /font/dir1/ /font/dir2/; do xset +fp $dir; done && xset fp rehash

又或者,若字型被安裝在不同的子資料夾如 /usr/share/fonts

$ for dir in * ; do if [  -d  "$dir"  ]; then cd "$dir";xset +fp "$PWD" ;mkfontscale; mkfontdir;cd .. ;fi; done && xset fp rehash

有時候 X 伺服器會無法成功載入字型資料夾,這時您需要重新掃描所有 fonts.dir 檔案:

# xset +fp /usr/share/fonts/misc # 告知 X 伺服器新的目錄
# xset fp rehash                # 強制進行新的掃描

檢查字型是否被包含進來:

$ xlsfonts | grep fontname
Note: 許多套件在安裝時會自動設定Xorg以使用字型,若是這種情況,則不需要執行本步驟。

這也可以在 /etc/X11/xorg.conf 或是 /etc/X11/xorg.conf.d 設定檔中全域設置。

以下是一個必須要加到 /etc/X11/xorg.conf 檔案中的例子。請依照特定字型的需求自行增減設定中的路徑。

# Let X.Org know about the custom font directories
Section "Files"
    FontPath    "/usr/share/fonts/100dpi"
    FontPath    "/usr/share/fonts/75dpi"
    FontPath    "/usr/share/fonts/cantarell"
    FontPath    "/usr/share/fonts/cyrillic"
    FontPath    "/usr/share/fonts/encodings"
    FontPath    "/usr/share/fonts/misc"
    FontPath    "/usr/share/fonts/truetype"
    FontPath    "/usr/share/fonts/TTF"
    FontPath    "/usr/share/fonts/util"
EndSection

Pango 警告訊息

若您的系統有在使用 Pango,它會從 fontconfig 讀取字型來源。

(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='common'
(process:5741): Pango-WARNING **: failed to choose a font, expect ugly output. engine-type='PangoRenderFc', script='latin'

如果您看到與上面類似的錯誤,或者應用程式內的字元變成了方框,您需要新增字型並更新字型快取。這個範例使用 ttf-liberation 字型演示(成功安裝此套件之後),並以 root 執行以套用至全系統。

# fc-cache
/usr/share/fonts: caching, new cache contents: 0 fonts, 3 dirs
/usr/share/fonts/TTF: caching, new cache contents: 16 fonts, 0 dirs
/usr/share/fonts/encodings: caching, new cache contents: 0 fonts, 1 dirs
/usr/share/fonts/encodings/large: caching, new cache contents: 0 fonts, 0 dirs
/usr/share/fonts/util: caching, new cache contents: 0 fonts, 0 dirs
/var/cache/fontconfig: cleaning cache directory   
fc-cache: succeeded

您可以測試預設字型是否已經設置:

# fc-match
LiberationMono-Regular.ttf: "Liberation Mono" "Regular"

終端機字型

Note: 本節是關於 Linux console。對於提供更多功能的其他的終端機(支援全 Unicode 字型、現代的顯示卡等等),請參考 fbtermKMSCON 或之類的相關專案。

預設的條件下 虛擬終端機 使用核心內建的字型與 CP437 [1]字元表, 但這是很容易修改的。

Linux 虛擬終端機 預設使用 UTF-8 編碼,但由於使用了標準的 VGA 相容偵緩衝,一個虛擬終端機被限制只能使用標準的 256 或 512 個字符。若一個字型超過 256 個字符,則色彩就會從 16 種降級到 8 種。為了指配正確的符號以顯示給訂的 Unicode,便需要一種特殊的轉換表,unimap。現在大多數虛擬終端機字型都有內建這個功能,傳統上則需要分開載入。

kbd 套件提供了改變虛擬終端機字型及字型對應的工具。可用的字型被存放在 /usr/share/kbd/consolefonts/ 目錄中,這些副檔名為 .psfu or .psfu.gz 的檔案具有內建的 Unicode 轉換表。

Keymaps, the connection between the key pressed and the character used by the computer, are found in the subdirectories of /usr/share/kbd/keymaps/, see Keyboard configuration in console for details.

鍵盤映射 (Keymap) 是按鍵和電腦使用字元的對應關係表,可以在 /usr/share/kbd/keymaps/ 的子目錄下找到。詳細資訊請參照 Keyboard configuration in console

Note: 替換這些字型可能造成某些問題,因為有些程式預期標準的 VGA 風格字型,如某些畫線的圖形軟體。

預覽和測試

提示: 一個整理過的預覽影像資料庫:Linux 終端機字型截圖

showconsolefont 指令會以表格形式顯示可用字與字元:

$ showconsolefont

setfont 工具可以暫時改變字型,讓使用者認為那是固定的字型。只要指定字型名稱即可 (這些字型位於 /usr/share/kbd/consolefonts/),例如:

$ setfont lat2-16 -m 8859-2

需注意字型名稱的大小寫呈現,不可混淆。如果對新換的字型不滿意,用以下指令可以還原至預設字型 (就算終端機顯示亂碼,這個指令依然可以執行,將指令「盲打」進去即可):

$ setfont
註記: setfont 只作用於目前正在使用的終端機。其它終端機無論活躍與否都不受影響。

持續性的設定

/etc/vconsole.confFONT 用來在開機時設定字型,對於所有的虛擬終端機都是固定的,詳情請參見 man 5 vconsole.conf 的說明。

若要顯示 Č, ž, đ, šŁ, ę, ą, ś 之類的字元,使用 lat2-16.psfu.gz 這個字型:

/etc/vconsole.conf
...
 FONT=lat2-16
 FONT_MAP=8859-2

這代表使用 ISO/IEC 8859 字元的第二部分,大小設定為 16。您可以使用其它值更改字型大小 (如 lat2-08)。您可以在維基百科的這張表查詢 8859 規格定義的區域。

若要為早期的使用者空間套用指定字型,在 /etc/mkinitcpio.conf 使用 keymap 的設定。更多資訊請參閱 Mkinitcpio#HOOKS

如果開機時字型沒有任何變化,或只變化一下就回復原樣,則有可能是因為圖形驅動啟動時字型被重設,然後終端機被切至幀緩衝 (framebuffer)。提早載入圖形驅動可以避免這個問題。若要在套用 /etc/vconsole.conf 之前將幀緩衝準備好,請參閱核心模式設定#提早啟動 KMS[2] 或其它方式。

字型軟體包

以下是收錄於官方軟體庫和 AUR 的字型軟體包列表,種類繁多,可依照需求選用。若字型有廣泛的萬國碼 (Unicode) 支援,會加註 "Unicode" 標記,詳情請參閱字型專案或相關的維基百科頁面。

一位 Github 使用者 Ternstor 用 python 腳本產生含有所有官方及 AUR 套件庫字型的 PNG 圖像的 HTML 文件,請參照 [3]

古文字

盲文點字

表情符號(顏文字)

設計用來表示表情的圖形化符號集合。

  • emojione-color-fontAUR - a complete, independent, open-source emoji set focused on design correctness
  • twemoji-color-fontAUR - Twitter's open-sourced emoji glyphs
  • ttf-symbola - provides many Unicode symbols, including emoji, in outline style
  • noto-fonts-emoji - Google's own emoji font, like on Android or Google Hangouts

部份新增的符號在 Noto 字型中的顯示不佳。

國際 (非英語系) 使用者

應用程式與瀏覽器會根據 fontconfig 設定和 Unicode 文字可用的字型來選擇其顯示字型。用指令 fc-list :lang="雙字母的語言代碼" 列舉系統安裝了哪些可對應該語言的字型。例如,列舉已經安裝的阿拉伯文字型,以及支援阿拉伯字的字型:

$ fc-list -f '%{file}\n' :lang=ar
/usr/share/fonts/TTF/FreeMono.ttf
/usr/share/fonts/TTF/DejaVuSansCondensed.ttf
/usr/share/fonts/truetype/custom/DroidKufi-Bold.ttf
/usr/share/fonts/TTF/DejaVuSansMono.ttf
/usr/share/fonts/TTF/FreeSerif.ttf

若要在多國語言的網站 (如維基百科、Arch Linux wiki) 正確描繪字形,請安裝下列軟體包組合之一:

阿拉伯和烏爾都文字

  • ttf-amiriAUR - A classical Arabic typeface in Naskh style poineered by Amiria Press
  • ttf-qurancomplex-fontsAUR - Fonts by King Fahd Glorious Quran Printing Complex in al-Madinah al-Munawwarah
  • ttf-qurancomplex-fontsAUR - 位於麥地那的 King Fahd Glorious Quran Printing Complex 製作的字型
  • ttf-arabeyes-fontsAUR - Collection of free Arabic fonts
  • ttf-sil-lateefAUR - 來自 SIL 的 Unicode 阿拉伯文字型
  • ttf-sil-scheherazadeAUR - 來自 SIL 的 Unicode 阿拉伯文字型
  • ttf-urdufontsAUR - Urdu fonts (Jameel Noori Nastaleeq (+kasheeda), Nafees Web Naskh, PDMS Saleem Quran Font) and font configuration to set Jameel Noori Nastaleeq as default font for Urdu

緬甸文

中日韓越文字

Pan-CJK
中文字
  • ttf-twAUR - 台灣 (中華民國) 教育部標準楷書、宋體字型。
  • wqy-microhei - 無襯線形式的高品質中日韓越 (CJKV) 輪廓字型。
  • wqy-zenhei - 黑體 (無襯線) 的中文輪廓字型,附帶點陣宋體 (也支援部分日韓字元)。
  • ttf-arphic-ukai - 楷書 (帶有筆觸) Unicode 字型 (建議啟用反鋸齒)
  • ttf-arphic-uming - 明體 (印刷) Unicode 字型
  • opendesktop-fonts - 新宋字型,之前為 ttf-fireflysung
  • wqy-bitmapfont - 點陣宋體 (襯線) 中文字型
  • ttf-hannom - 中文、越南文 TrueType 字型
日文字
  • otf-ipafont - 正規的日文哥特體 (無襯線) 與明朝體 (襯線) 字形集;其中一項高品質的開放原始碼字形。openSUSE-ja 的預設字形。
  • ttf-vlgothicAUR - 日文哥特體字形。Debian/Fedora/Vine Linux 的預設字型
  • ttf-mplusAUR - 現代哥特體的日文輪廓字型。包含所有日文平假名/片假名、Basic Latin、Latin-1 Supplement、Latin Extended-A、IPA Extensions。另外還有大部分日文漢字、希臘字母、西里爾字與越南文字,可以 7 磅 (等比例) 或 5 磅 (等寬) 字重顯示。
  • ttf-monapoAUR - 日文字型,可正確顯示 2ch 的 Shift JIS 藝術創作
  • ttf-sazanami - 自由的日文 TrueType 字型。已經過期無人維護,但在某些環境下可當作備案字型使用。
韓文字

希臘文字

幾乎所有 Unicode 字型都包含希臘字元集 (也包含多調變音符號)。某些額外的字型軟體包未包含完整的 Unicode 集,但擁有高品質的希臘字字形 (當然包含拉丁字):

  • otf-gfsAUR - 由 Greek Font Society 選用的 OpenType 字型
  • ttf-mgopenAUR - 來自 Magenta 的專業 TrueType 字型

希伯來文字

  • culmusAUR - 自由的希伯來文字型集合

印地文字

(This one contains a "look of disapproval" that might be more to your liking than the bdf-unifont one mentioned elsewhere in this document)
  • lohit-fontsAUR - 來自 Fedora 專案的印地文 TrueType 字型 (包含 Oriya 字型以及更多)

高棉文字

僧伽羅文字

  • ttf-lklugAUR - 僧伽羅文 (Sinhala) Unicode 字型

塔米爾文字

  • ttf-tamilAUR - 塔米爾文 (Tamil) Unicode 字型

藏文字

數學字型

Microsoft 字型

參閱微軟字型

Apple Mac OS X 字型

等寬字型

有一些建議要給各位。每個使用者所偏好的字型不同,因此要找到您心目中的理想字型,就請多加嘗試。 如果您沒有太多時間,可以閱讀 Dan Benjamin 的部落格文章:Top 10 Programming Fonts (前十名適合寫程式的字型)。

這裡有 Trevor Lowing 整理的一長串字型清單:http://www.lowing.org/fonts/

TrueType 字型

點陣字型

無襯線字型

手寫體

襯線字型

未分類字型

X11 的字型採用順序

Fontconfig 會自動選擇符合目前需求的字型。這麼說好了,假設有一個包含英文和中文的視窗,如果預設字型不支援中文,就會換成有中文字支援的字型來顯示。

Fontconfig 透過 $XDG_CONFIG_HOME/fontconfig/fonts.conf,讓每個使用者都可以設定自己的偏好順序。 如果您希望在自己偏好的襯線字體後面加上一種中文字型當候補,檔案會看起來像這樣:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
   <family>serif</family>
   <prefer>
     <family>您偏好的拉丁字襯線字型名稱</family>
     <family>您的中文字型名稱</family>
   </prefer>
 </alias>
</fontconfig>

您也可以新增無襯線和等寬字型的部分。更多資訊可參考 fontconfig 手冊。

字型別名

Linux 下有數個字型別名,實際上它們指向別的真實字型,這是為了讓所有應用程式使用的字型能夠相似。最常見的別名有:serif 襯線字型 (如 DejaVu Serif);sans-serif 無襯線字型 (如 DejaVu Sans);以及 monospace 等寬字型 (如 DejaVu Sans Mono)。不過這些別名所代表的字型可能會有變化,且通常它們不會顯示在 KDE 和其他桌面環境的字型管理工具之中。

若要查詢別名所代表的字型,執行:

$ fc-match monospace
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"

在上面的範例中,DejaVuSansMono.ttf 是 monospace 別名所指向的字型。

小提示

從官方軟體庫安裝字型

您可以將官方軟體倉庫有提供的字型全部抓下來安裝。

所有字型
# pacman -S $(pacman -Ssq font)
所有 TrueType 字型
# pacman -S $(pacman -Ssq ttf)

應用程式專用的字型快取

Matplotlib (python-matplotlibpython2-matplotlib) 使用自己的字型快取,因此更新字型後記得移除 $HOME/.matplotlib/fontList.cache,這樣它才會再產生一次快取並找到新字型 [4]

另請參閱