第13章 使用X的字型和色彩
X支援多種的字型及幾乎無限多種變化的色彩,大多數的應用程式允許你指定應用視窗中各個不同部份的顏色,而幾乎所有的X程式均允許你指定你想要使用的字型。
在X中的字型(fonts):
.有固定的寬度(像啞終端機的字元)或成比例的間隙。
.由本文字元(text characters) 或符號組成,或以上兩者均有。
.具有多種的點尺寸(point size)。
.可以修改以適應特定的螢幕解析度(例如對於同一點尺寸的某一種字型,你可能對75 dpi (dots-per-inch 每寸若干點) 的螢幕有一種版本,對100 dpi 的螢幕有另一種版本)。
.有一種標准命名的傳統。
.可以以全名存取,也可以用通用字元(wildcard)。
.儲存在特定建構的目錄樹中,只要server在執行時,字型便可以加入或移出。
在系統間進行字型的交換有一套標准的格式,並且有工具程式可以將這個格式轉換成你的server能了解的格式,工具程式也包含了列出可用字型的目錄、觀察某一特定字型內容等功能。
本章先對字型作一簡短的介紹,讓你能盡快的使用它們,然後才轉而詳細地解釋字型的結構、格式、工具程式等,最後一節討論色彩:如何設定和使用它們。
13.1 字型初步
本節的目的是讓你盡快地能使用字型,我們將告訴你如何找出有哪些字型可用、指定你欲使用的字型名稱、看字型的外觀、如何在X應用程式中使用字型。
13.1.1 列出可用的字型
xlsfonts程式一行行的列出server上可用的字型,圖13-1顯示部份的
xlsfonts的輸出,內容為M99v 版標准的字型。
┌——————————————————┐
│ p146 fig 13.1 │
│ │
│ 圖13-1 典型的字型目錄列表 │
└——————————————————┘
13.1.2 字型命名
有些字型的名稱太長以致使用不便,但很幸運的,它們也不常被使用,並且,X支援字型名稱可使用通字元(wildcard):
? 對應任何一個字元
* 對應從(字元)長度為零至長度若干的字串
這和Unix shell傳統的通用字元檔案名稱相同,使用通用字元可使你更容易指定字型名稱。
注意:如果你在shell 的命令列指定一個通用字元的字型名稱,需要在名稱前後加上雙引號 。
13.1.3 觀察一個特定的字型
xfd (X font displayer 的縮寫) 程式由引數(argument)得到字型的名稱之後,建立一個視窗並且在視窗中顯示此名稱之字元字型,例如:
xfd -fn "*symbol*-180-*"
將顯示如圖13-2的視窗。
┌——————————————————┐
│ p147 fig 13.2 │
│ │
│ 圖13-2 字型的展示 │
└——————————————————┘
13.1.4 以X程式使用字型
大多數的X程式使用文字,並且允許你指定使用的字型,如何使用的詳細細節可能因不同的程式而異,如果有問題的話可以看指南頁。但是幾乎都是以命令列中選項 -fn fontname 或 -font fontname 來指定字型名稱,bitmap、xclock、xterm、xload、xmb 和 xedit都是這樣操作的。例如假設你是為了展示的緣故,以很大的字型執行xterm ,你可以用下列命令列:
xterm -fn "*courier-bold-r-*-240-*"
注意:如果你給程式的指定對應到一種以上的字型,則server會隨便在其中選取一個,例如:如果你省略了上例中的 -r 的指定,則你會使用到意大利斜體(italic)字型或反斜體(reverse oblique) 字型,和原來所指定的羅馬(roman) 字型的機會是一樣的。
現在你應該有一些概念了,我們將從不同的觀點詳細地討論。
13.2 字型如何命名
在X中,字型可以取成任何名稱,但幾乎所有的字型均依照它們的本質來命名,這樣的命名方式,名字是由幾個不相關的部份組合而成,而我們在使用應用程式時,光憑著字型名稱便可以大略了解字型的內涵。
我們以一個字型名稱為范例,逐一解釋它的組件,組件之間是由短橫線(-)所分開的,而且可以包含空白,字型名稱對字元大小寫並不會區別,范例如下:
-adobe-times-bold-normal--12-120-75-75-p-67-iso8859-1
adobe :字型的制造廠商。
times :型態家族(type family) ,其它尚包含courier ,helvetica 和 new century schoolbook。
bold :粗體字,其它包含light (細)和medium(中等)。
r :字體傾斜的型態,r 是roman (羅馬體),其它是 i(italic意大利體),o (oblique 傾斜體)。
12 :字元的高度,單位為像素。
120 :字型的點尺寸(point-size),為點的10倍(120 意為12點,一點約為1/72英□寬)。
75-75 :字型被設計在顯示裝置上的水平和垂直的解析度(每□若干點)。
p :字和字之間的間隙,p 是proportional(成比例的),相對的是m (monospaced固定寬度)。
如果你對某一欄有特別的興趣,在本版的說明文件檔
$TOP/doc/fontnames/fname.txt
中,有對每一個組件完整的說明。
你通常比較有興趣的項目為家族型態、字體粗細、何種斜體字以及字型大小,除了指定這幾項的值外,其它的項目不妨藉著通用字元的方式去指定。
13.2.1 通用字元和字型名稱
在第13.1節中,我們曾經解釋過通用字元的規則:星號(*)表示對應到零或多個字元,問號(?)對應到一個任意的單一字元。
你可以隨意的使用通用字元,當你的設定對應到一種以上的可用字型時,server會隨便挑一種字型來用,如果你的設定什麽字型也沒對應到,通常你會獲得一行訊息,而server將會使用預設字型。
你可以對字型的點尺寸使用通用字元,而不是像素尺寸,因為在顯示器上一個給定點尺寸的字型對不同的解析度有不同的像素尺寸,所以用通用字元指定點尺寸可以造成與裝備無關的效果,上述的范例你可以如此設定:
*-times-bold-r-*-120-*
也就是說以-120-取代-12-
13.2.2 列出可用的字型 -- xlsfonts
xlsfonts列出在你server上可用的字型(如果你使用用命令列中-display選項,便可列出其它server上可用的字型)。預設是列出所有的字型,但是就如同Unix的ls命令一樣,如果你加上限制,便只會列出合乎限制的項目,例如:
xlsfonts "*-times-*-180-*"
列出所有18點Times的字型。
原則上,xlsfonts試圖在每行列印出盡量多的字型名稱,但實際上,大部份的字型名稱都很長以致一次只能印一個名稱,但是要小心,當字型名稱含有空白時,一行有數個字型名稱常常容易混淆。
注意:許多的字型名稱開頭為一短橫線(-) ,所以xlsfonts會誤把此種狀況當成命令列的選項來解釋以致發生錯誤,例如:
xlsfonts "-adobe-*"
會失敗,你可以用選項-fn 加以區分,或者只要在設定之前加一個星號(*)即可:
xlsfonts "*-adobe-*"
xlsfonts -fn "-adobe-*"
13.3 觀察特定字型的內容 -- xfd
xfd 是一個”字型顯示”的程式,它建立一個視窗,而後在視窗中將字型的元素顯示在長方格子中。視窗可能沒有大到一次將字型中所有的字元顯示出來(尤其是你可能對它重定過大小),但你仍然可以存取它們:
向前移動:在xfd 視窗中碰觸滑鼠右按鈕,視窗的下一頁將會出現。
向後移動:碰觸滑鼠左按鈕。
獲取字元的資訊:在字元上碰觸滑鼠中按鈕,xfd 會給你字元號碼,如果你在程式一開始設定命令列選項-verbose,你將獲得一些更多的資訊,例如字元的大小以及它在字元”cell”中的位置。
13.4 如何儲存字型及存在何處
在本節中,我們描述字型不同的格式,以及轉換兩種不同格式的工具,然後討論server是如何存取字型和你如何更改對字型的選擇。最後,我們會給一個完整的范例來說明如何加入一種新的字型到你的系統。
13.4.1 字型的格式 -- Server Natural Format (SNF)
字型在server上是以Server Natural Format (SNF) 方式儲存,這種格式並不是一種標准,而且為server所專用,所以你不能將字型移到不同型態的server。
showsnf 程式印出儲存在SNF 檔中字型的資訊,對字型本身執行XProp 可獲得更多類似的資訊。(showsnf的引數為檔案名稱,xprop 則為字型的名稱,字型名稱和檔案名稱並不相關。)
Bitmap Distribution Format(位元映像分布格式)-- BDF
為了克服字型流傳的問題,X協會對字型交換指定了一種格式,就是Bitmap Distribution Format (BDF) ,BDF 以ASCII 的方式表示字元的位元映像,並且只包含可印出的字元,所以它具有完整的可攜性(portable)。
在”Bitmap Distribution Format”文件中包含了對BDF 完整的描述。
從BDF 轉換成SNF - bdftosnf
為了讓BDF 能夠有用,你必需能將BDF 字
13.4 如何儲存字型及存在何處
在本節中,我們描述字型不同的格式,以及轉換兩種不同格式的工具,然後討論server是如何存取字型和你如何更改對字型的選擇。最後,我們會給一個完整的范例來說明如何加入一種新的字型到你的系統。
13.4.1 字型的格式 -- Server Natural Format (SNF)
字型在server上是以Server Natural Format (SNF) 方式儲存,這種格式並不是一種標准,而且為server所專用,所以你不能將字型移到不同型態的server。
showsnf 程式印出儲存在SNF 檔中字型的資訊,對字型本身執行XProp 可獲得更多類似的資訊。(showsnf的引數為檔案名稱,xprop 則為字型的名稱,字型名稱和檔案名稱並不相關。)
Bitmap Distribution Format(位元映像分布格式)-- BDF
為了克服字型流傳的問題,X協會對字型交換指定了一種格式,就是Bitmap Distribution Format (BDF) ,BDF 以ASCII 的方式表示字元的位元映像,並且只包含可印出的字元,所以它具有完整的可攜性(portable)。
在”Bitmap Distribution Format”文件中包含了對BDF 完整的描述。
從BDF 轉換成SNF - bdftosnf
為了讓BDF 能夠有用,你必需能將BDF 字