歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> 更多Linux

XFree86的字體

  cathayan寫著 '我是菜鳥。看得也比較快。下面如果有譯得不對的地方,不必客氣,盡請指出。看這個東西也是因為總是不明白在 X 裡面的字體是怎麼回事,想搞搞清楚,總是用別人的漢化/美化方法也不是長久之計。而這個漢化/美化的工作,我認為是Linux在中國走向普通用戶,承擔起日常工作的最後一個溝坎。在網上找了一下,東西還不少,這個文檔是XFree86的,位置是在http: //www.xfree86.org/current/fonts.Html(http://www.xfree86.org/current/ 是Documentation for XFree86[tm] version 4.3.0)。它說得是比較全面而且權威的。希望能對像我一樣的Newbie(我折騰了2年了,還是Newbie)們有所幫助。之所以譯出來,也是逼自己看仔細點的一個方法。注意它是最新的XFree86 4.3.0的文檔,和4.2以及更早的版本也許會有不同。文中有幾段感覺沒什麼用的,也不太懂的,就沒譯。見諒。第5部分有些東西可以先看。第6部分有參考資料。希望Linux能越來越好。有什麼意見或建議,請發郵件至:[email protected] 。====================================名稱:XFree86的字體作者:Juliusz Chroboczek, [email protected]日期:17 January 2003譯者:[email protected]日期:28 April 2003====================================1.介紹本文檔描述了XFree86對字體的支持。“安裝字體”面向想在XFree86中安裝字體的用戶;其他部分比較詳細地描述了對字體的支持。我們假設你已經對數字字體有相當的了解。如果有什麼不清楚的,可以查看附錄:本文檔最後部分的背景信息。1.1 兩種字體系統XFree86包含兩種字體系統:核心X11字體系統,存在於所有X11實現中;xft字體系統,目前並未在除XFree86以外的X11實現中存在,但將來很有可能加入進去。核心X11字體系統是從1987年出現的X11R1中繼承下來的,它只能使用單色bitmap字體。在經過多年發展之後,它總算加入了可變形字體及旋轉象形文字的支持。Xft 最初設計的目的就是為了對可變形字體提供更有效更好的支持。它不像核心字體系統,它支持反鋸齒和子像素平滑等特性。可能這一點更重要,它為應用程序提供了對象形文字描繪方法的完整的控制,讓排版和所見即所得的顯示成為可能。最後,還還允許應用程序使用並未安裝在系統中的字體,而是使用文件中嵌入的字體來進行顯示。Xft同核心字體系統不兼容:使用Xft要求對開發工具(用戶接口庫)進行較多的改變。因此,目前XFree86繼續使用核心字體系統,而開發工具的作者們也已經准備盡快轉向Xft。2. 安裝字體這一部分解釋了如何對Xft和核心字體系統進行配置以便使用剛安裝的字體。2.1. 配置XftXft自己沒有配置機制,而是依賴於fontconfig庫來進行配置。這個庫並不專用於XFree86,也不限於某種特定的字體顯示機制。因此,本部分就是描述fontconfig而不是Xft如何工作的。2.1.1. 在Xft中安裝字體Fontconfig在一系列常見的目錄中尋找字體,包括所有的XFree86標准字體目錄(缺省是`/usr/X11R6/lib/X11/lib/fonts/*'),和用戶主目錄下的`.fonts/'。為Xft安裝字體只需將字體文件拷貝到這些目錄之一下面。$ cp lUCbr.ttf ~/.fonts/Fontconfig在下一次尋找時就能發現這些字體,並重建自己的字體列表。如果想在命令行上激活這個行為(比如想全面升級全系統的Fontconfig信息),可以使用`fc-cache'命令:$ fc-cache2.1.2. 微調XftXft的行為由一組配置文件控制:全系統的配置文件是`/etc/fonts/fonts.conf',用戶專用的是主目錄下的`.fonts.conf'(如果設定了`FONTCONFIG_FILE'全局變量,這個文件可能不起作用。)Fontconfig文件均由以下樣式開頭:並以此行結束:缺省的Fontconfig文件包括對`~/.fonts/'目錄的尋找,這裡是放置用戶專用字體的地方。如果要加入一個新的字體目錄,可用如下語法:/usr/local/share/fonts/另外一個有用的選項是關掉某個字體的防鋸齒(平滑)功能,語法如下:Lucida Consolefalse也可用下述命令關閉對所有字體的平滑功能:false在LCD顯示上,Xft支持子像素平滑。一般地,XFree86在使用LCD並用DVI連接到主機的筆記本電腦上會自動打開這一選項。以下命令可用以查證:$ xdpyinfo -ext RENDER grep sub-pixel如果該命令沒有印出任何東西,就需要手動配置。語法如下:rgb`'...`'之間的rgb用於指定像素元件在屏幕上顯示的順序,這必須和硬件相配:普通的LCD是rgb,backwards LCD使用bgr,順時針旋轉後用vrgb,反向用vbgr。2.1.3. 配置應用程序Because most current applications use the core fonts system by default, it is necessary to eXPlicitly configure them to use Xft. How this is done depends on the application.由於許多應用程序缺省是使用核心字體系統的,所以要使用Xft,就必須進行配置。方法根據程序不同而有所區別。XTerm使用 `-fa' 的命令行選項就可以使用Xft,也可以通過設定`XTerm*faceName':XTerm*faceName: Courieror$ xterm -fa "Courier"對GTK+ 2.0(GNOME 2程序)程序來說,把`GDK_USE_XFT'設為 1 即可:$ export GDK_USE_XFT=1GTK+ 2.2 缺省即使用 Xft 。對KDE程序來說,應在KDE的控制中心裡打開字體面板,選擇``Anti-alias fonts''。這個選項名詞寫錯了,它實際上就是使用 Xft,而不是打開反鋸齒選項,如果它已經在Xft的配置文件中關閉了的話。(What about Mozilla?)2.1.4. 難題如果有些基於Xft的程序沒胡注意到你做的這些修改,那可能是因為它們還在使用XFree86 4.2的Xft,只需讓它們使用當前版本的Xft即可。大多數情況下,只要安裝Xft和Fontconfig庫就可以了。如果不能升級共享庫,可以查閱XFree86 4.2的Xft(3)手冊頁,以確定其配置機制。2.2. 配置核心字體系統安裝核心字體系統的字體分兩步。第1步,必須創建一個目錄,其中放有字體文件和索引文件。第2步是把這個目錄放到字體路徑中,以便讓X服務器知道它的存在。2.2.1. 安裝bitmap字體XFree86可以使用bitmap字體,包括跨平台的BDF字體和更有效率的二進制PCF字體。(還支持較老的SNF字體)bitmap字體通常都用BDF格式發布,但在安裝之前,可以把它轉為PCF格式,可用命令`bdftopcf':$ bdftopcf courier12.bdf然後對它進行壓縮:$ gzip courier12.pcf轉換之後,把這些字體拷貝到任意目錄下,如`/usr/local/share/fonts/bitmap/',然後運行 `mkfontdir'命令來生成索引文件`fonts.dir'(可查看mkfontdir(1) manual page)$ mkdir /usr/local/share/fonts/bitmap/$ cp *.pcf.gz /usr/local/share/fonts/bitmap/$ mkfontdir /usr/local/share/fonts/bitmap/然後的工作就是告訴X服務器有個新的字體目錄;可參考下面的字體路徑設置部分。2.2.2. 安裝可變形字體XFree86支持4種格式的可變形字體:Type 1, Speedo, TrueType 和 CIDFont。本部分只討論前3種。最後一種放在後面討論。安裝可變形字體同安裝bigmap字體一樣:創建一個目錄,並運行`mkfontdir'來生成索引文件`fonts.dir'。但也有一處不同:`mkfontdir'不能自動認出這是可變形字體。因此,必須先建立一個名為`fonts.scale'的文件,使用如下命令:$ mkfontscale /usr/local/share/fonts/Type1/$ mkfontdir /usr/local/share/fonts/Type1/在某些情況下,可能要對生成的`fonts.scale'文件進行修改;為此可參考mkfontdir(1) 和 mkfontscale(1) manual page,也可參考本文檔後面的核心字體部分及國際化部分。2.2.3. 安裝 CID-keyed 字體這種字體是Adobe公司為大字符集語言設計的,其中包含了一象形文字,由字符ID(CID)進行索引。為使這種文字有意義,Adobe提供了一套CMap文件,從CIDFont文件中產生的PS字體名詞由CIDFont和CMap共同組成,中間用兩個短橫線相連,舉例來說,由CIDFont`Munhwa-Regular'生成,使用CMap`UniKS-UCS2-H'的字體就叫做:Munhwa-Regular--UniKS-UCS2-H在XFree86 中使用這種字體要求一個嚴格的目錄結構,主目錄必須是CID(缺省在`/usr/X11R6/lib/X11/fonts/CID'),但也可以放在任何地方,下面應該為每一個CID集合建立一個子目錄,下面有三個子目錄,分別是CIDFont,CMap和AFM(the font metric files)、CFM(初始情況下是空的)。如下所示:CID/Adobe-Korea1/CIDFont/Munhwa-RegularCID/Adobe-Korea1/CMap/UniKS-UCS2-HCID/Adobe-Korea1/AFM/Munhwa-Regular.afmCID/Adobe-Korea1/CFM/CID/fonts.dirCID/fonts.scale在生成這個目錄並拷貝了文件之後,應該再創建一個`tt/fonts.scale/'文件,這個文件的格式同其他可變形字體一樣,但第一列含有PS字體名,還帶有.cid的後綴。Adobe-Korea1/Munhwa-Regular--UniKS-UCS2-H.cid-adobe-munhwa-medium-r-normal--0-0-0-0-p-0-iso10646-1(上述文字是一行)。然後運行 `mkfontdir' 生成 `fonts.dir'文件:$ cd /usr/local/share/fonts/CID$ mkfontdir然後在CFM目錄中運行 `mkcfm':$ mkcfm /usr/local/share/fonts/CID如果沒有CFM文件,服務器也能使用CID字體,但查詢起來時間會有點長。如果有變化,就得再運行一次這個命令。2.2.4. 設置服務器字體路徑讓服務器知道新的字體目錄存在的方法就是把它放到字體路徑中。字體路徑是有順序的。如果客戶端請求的字體有多個選擇,把就用碰上的第一個。在尋找字體時,服務器會進行兩次查詢,第1次要求准確配合,第2次則尋找可變形的字體。所以,最好把可變形字體放到bitmap字體的前面。這樣,在有這個字體的情況下,服務器會合作bitmap,但如果有可變形字體可用也會忽略掉bitmap字體。(仍然可以使用`:unscaled',但在4.0及以後版本中已經不必須)可以通過以下命令顯示已經有的字體路徑:$ xset q2.2.4.1. 臨時修改字體路徑`xset'命令也可用於修改當前的字體路徑。設置命令為xset fp,加入新路徑是 xset +fp,加到最後則是xset fp+,如:$ xset +fp /usr/local/fonts/Type1$ xset fp+ /usr/local/fonts/bitmap反過來,從前面刪除一個用`xset -fp',從後面刪除一個用`xset fp-',設為缺省值是`xset fp default'。其他信息,可查詢 xset(1) manual page。2.2.4.2. 字體路徑的永久改變缺省的字體路徑(剛啟動或使用`xset fp default'之後)在文件`XF86Config' 中設置。在Files一節中用FontPath設置,要注意順序。FontPath "/usr/local/fonts/Type1"...FontPath "/usr/local/fonts/bitmap"如有疑問,可參考 XF86Config(5) manual page。2.2.5. 難題如果發現有哪種安裝好的字體不能使用,第1件事就是檢查`fonts.dir'文件是否正確,以及它是否能被X server讀(通常是root權限,但要注意NFS安裝的目錄)。如果不是這個問題,那就是這個字體可能不被服務器支持了。XFree86 支持 BDF, PCF, SNF, Type 1, Speedo, TrueType, OpenType 及 CIDFont 等字體,但並非所有的XFree86都配備了這些後端,並進行了配置。在大多數平台上,XFree86是模塊化的:字體後端也是模塊,在運行時可以載入。裝入模塊在`XF86Config'文件中用“Load”進行設置(注意大小寫敏感):Load "type1"如果還是有安裝問題,可以看一下X server的log文件,看模塊是否被正確載入了。模塊如下:"bitmap": bitmap fonts (`*.bdf', `*.pcf' and `*.snf');"freetype": TrueType fonts (`*.ttf' and `*.ttc'), OpenType fonts (`*.otf' and `*.otc') and Type 1 fonts (`*.pfa' and `*.pfb');"type1": alternate Type 1 backend (`*.pfa' and `*.pfb') and CIDFont backend;"xtt": alternate TrueType backend (`*.ttf' and `*.ttc');"speedo": Bitstream Speedo fonts (`*.spd').3. XFree86中包含的字體3.1. 標准 bitmap 字體X11的標准(樣本實現,SI)帶有大量的bitmap字體,包括fixed族,Courier、Times、Helvetica及Lucida族的bitmap版,它們都以ISO 8859-1(ISO Latin Western-European)編碼。In XFree86, a number of these fonts are provided in Unicode-encoded font files instead. At build time, these fonts are split into font files encoded according to legacy encodings, a process which allows us to provide the standard fonts in a number of regional encodings with no duplication of work.在XFree86中,這些字體中不少以Unicode編碼,在創建時,這些字體可以被分成其他編碼的字體文件,這樣就讓我們得以使用一些 地區編碼的 標准字體,而不用再去做重復性的工作。如字體文件/usr/X11R6/lib/X11/fonts/misc/6x13.bdfwith XLFD-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso10646-1是一個Unicode編輯的標准fixed字體,它可以支持 Latin, Greek, Cyrillic, Georgian, Armenian, IPA 以及其他符號。它裡面的字形數量超過2800,涵蓋了 ISO 8859 parts 1-5, 7-10, 13-15 編碼形式,還包含所有的歐洲 IBM、Microsoft 代碼頁,甚至還有 KOI8,WGL4 以及其他多種字符集的支持。這個字體在創建時會生成多種字體文件:6x13-ISO8859-1.bdf6x13-ISO8859-2.bdf...6x13-ISO8859-15.bdf6x13-KOI8-R.bdf他們各自都有 XLFDs :-misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-1...-misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-15-misc-fixed-medium-r-normal--13-120-75-75-c-60-koi8-rfixed這個名字是下述名字的簡寫:-misc-fixed-medium-r-normal--13-120-75-75-c-60-iso8859-13.2. ClearlyU Unicode 字體族ClearlyU族提供12pt、100dpi的比例字體,包含Unicode所需的眾多字形,總數約有7500個。主 ClearlyU 字體使用如下的 XLFD :-mutt-clearlyu-medium-r-normal--17-120-100-100-p-101-iso10646-1它存在於以下字體文件中:/usr/X11R6/lib/X11/fonts/misc/cu12.pcf.gz其他的 ClearlyU 字體包括:-mutt-clearlyu alternate glyphs-medium-r-normal--17-120-100-100-p-91-iso10646-1-mutt-clearlyu pua-medium-r-normal--17-120-100-100-p-111-iso10646-1-mutt-clearlyu arabic extra-medium-r-normal--17-120-100-100-p-103-fontspecific-0-mutt-clearlyu ligature-medium-r-normal--17-120-100-100-p-141-fontspecific-0Alternate Glyphs字體包含有額外的為某些語言所用的字型。很快就會有第2種這種字體出來,專為那些經常使用這種字型的地區設計(the Urdu heh,烏爾都?)PUA字體中包含有特殊的字形信息,以用於某些描繪方式。Arabic Extra字體為那些不含有所有字形的ISO 10646編碼字符提供字形,其排序也大體上根據ISO 10646來。Ligature字體包括有各種手寫體,在增強的文本演示時比較有用。3.3. 標准可變形字體XFree86 包含了所有在X11R6中的可變形字體。3.3.1. 標准 Type 1 字體IBM Courier 字體包含了 ISO 8859-1 和 ISO 8859-2 編碼,同時也有 Adobe Standard Encoding,其 XLFD 如下:-adobe-courier-medium-*-*--0-0-0-0-m-0-*-*字體文件是:/usr/X11R6/lib/X11/fonts/Type1/cour*.pfaAdobe Utopia 字體僅含有 ISO 8859-1 和 Adobe Standard Encoding,其 XLFD 如下:-adobe-utopia-*-*-normal--0-0-0-0-p-0-iso8859-1字體文件是:/usr/X11R6/lib/X11/fonts/Type1/UT*.pfa最後,XFree86 還包含有 Bitstream Courier 和 Charter 的 Type 1 版本,其字 XLFD 如下:-bitstream-courier-*-*-normal--0-0-0-0-m-0-iso8859-1-bitstream-charter-*-*-normal--0-0-0-0-p-0-iso8859-1字體文件是:/usr/X11R6/lib/X11/fonts/Type1/c*BT_.pfb3.3.2. 標准 Speedo 字體XFree86 包含 Bitstream Courier 和 Charter 字體的Speedo 版本,要想使用這種字體,必須載入`Speedo' 字體後端。這些字體都是 ISO 8859-1 編碼,差不多全部含有 ISO 8859-2,其 XLFD 如下:-bitstream-courier-*-*-normal--0-0-0-0-m-0-*-*-bitstream-charter-*-*-normal--0-0-0-0-p-0-*-*字體文件是:/usr/X11R6/lib/X11/fonts/Speedo/font*.spd3.4. Bigelow & Holmes Luxi字體族XFree86 包含 Luxi 族的可變形字體,TrueType 和 Type 1 格式都有,包含有 Luxi Serif, XLFD 如下:-b&h-luxi serif-medium-*-normal--*-*-*-*-p-*-*-*Luxi Sans:-b&h-luxi sans-medium-*-normal--*-*-*-*-p-*-*-*以及 Luxi Mono:-b&h-luxi mono-medium-*-normal--*-*-*-*-m-*-*-*這些字體都含有羅馬、斜體、粗體、粗斜體的變化。TrueType版的字型包含基本ASCII Unicode區,Latin 1區及擴展Latin 1區,還有一些附加的標點符號。通常這些字體都含有ISO 8859的1、2、3、4、9、13和15,還有Adobe Standard encoding和Windows 3.1 字符集。Type 1版的字形要略少一些,一般只有ISO 8859 1/2/15和Adobe Standard encoding。以下省略一些關於Luxi字體的說明。4. 關於核心字體的補充說明這一部分對XFree86專用的X11核心字體系統增強功能進行說明。4.1. 核心字體和國際化可變形字體後端(Type 1, Speedo and TrueType)可自動對字體進行重新編碼,只要在`fonts.dir'中對其 XLFD 進行了說明。如Type 1 Courier的說明如下:cour.pfa -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1cour.pfa -adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-2解釋時就會自動分出 ISO 8859-1 and ISO 8859-2 兩種編碼。4.1.1. fontenc(字體編碼) 層有3種可變形後端(Type 1, Speedo, FreeType)使用一個通用的字體編碼層進行字體的重新編碼,所以就能共享編碼數據,並可對字體的新locale進行簡單的配置。請注意:X-TrueType (X-TT)後端不使用“字體編碼”層,而使用它自己定義的一種方法來進行編碼工作。如果你只對X-TT有興趣,你可以跳過Using Symbol Fonts,而讓中間的信息不作用於X-TT。在fontenc層中,編碼都定義了一個名字(如iso8859-1),一般是一個數字和映射集號。映射定義了這種編碼可被映射到fontenc所知道的某個編碼的方法。現在這種映射有Unicode、Adobe字型名和任意的TrueType映射。有一些編碼已經被固定在fontenc中,總是可以使用的,而它們也不能輕易改動:iso10646-1: Unicode;iso8859-1: ISO Latin-1 (Western Europe);iso8859-2: ISO Latin-2 (Eastern Europe);iso8859-3: ISO Latin-3 (Southern Europe);iso8859-4: ISO Latin-4 (Northern Europe);iso8859-5: ISO Cyrillic;iso8859-6: ISO Arabic;iso8859-7: ISO Greek;iso8859-8: ISO Hebrew;iso8859-9: ISO Latin-5 (Turkish);iso8859-10: ISO Latin-6 (Nordic);iso8859-15: ISO Latin-9, or Latin-0 (Revised Western-European);koi8-r: KOI8 Russian;koi8-u: KOI8 Ukrainian (see RFC 2319);koi8-ru: KOI8 Russian/Ukrainian;koi8-uni: KOI8 ``Unified'' (Russian, Ukrainian, and Byelorussian);koi8-e: KOI8 ``European,'' ISO-IR-111, or ECMA-Cyrillic;microsoft-symbol and apple-roman: 只在TrueType字體中有用。定義編碼文件就可以把編碼加入進去。如果有哪種字體編碼是 fontenc 層不知道的,後端就會檢查字體文件所在的目錄(不一定非要是fonts.dir所在的目錄!),尋找一個 `encodings.dir' 文件。如果找到了,就掃描它尋找編碼,找到後讀入。`mkfontdir' 命令如果加上`-e'的選項,後面接上包含有編碼文件的目錄名,就能自動生成`encodings.dir'文件。可參考mkfontdir(1) manual page。常用的一些編碼文件都可在XFree86中找到。也可以自己寫編碼文件。不詳述。4.1.2. 針對各種後端的 fontenc 注意事項4.1.2.1. FreeType對TrueType 和 OpenType 字體,FreeType會依次掃描映射,有PS的映射會被忽略,如果是TrueType或Unicode的就會繼續掃描它的cmap,最後使用找到的第1個可用的。省略關於Type1字體的說明。如果不能找到一個可用的映射,FreeType會使用ISO 8859-1。4.1.2.2. Type 14.1.2.3. Speedo4.1.3. 編碼目錄文件格式要想使用一種編碼不被後端識別的字體,就需要在自己的字體目錄下或在系統全局目錄下(/usr/X11R6/lib/X11/fonts/encodings/)有一個`encodings.dir'文件。這個文件同 `fonts.dir'的格式差不多。第1行也是聲明共有多少個編碼,其後每1行分成兩列,名字和編碼文件,可用相對目錄,也可以用絕對目錄。名字和文件中定義的名字要符合。如:3mulearabic-0 /usr/X11R6/lib/X11/fonts/encodings/mulearabic-0.encmulearabic-1 /usr/X11R6/lib/X11/fonts/encodings/mulearabic-1.encmulearabic-2 /usr/X11R6/lib/X11/fonts/encodings/mulearabic-2.enc編碼的名字必須在文件的`STARTENCODING' 或 `ALIAS'行中進行說明。如果平台支持,編碼文件可以壓縮(compress or gzip)。`encoding.dir'可以用`mkfontdir'命令進行維護,可以參考mkfontdir(1)手冊頁。4.1.4. 編碼文件格式編碼文件本身是自由格式的。多個空格還是一個,關鍵詞大小寫不敏感,但在字型的名字上,大小寫還是很重要的。數字可用十進制、16進制或8進制。'#'開頭的行是注釋行,它可以出現在一行的任意地方,其後的字符會全部被忽略。開頭是名字或別名:STARTENCODING mulearabic-0ALIAS arabic-0這個名字應適用於XLFD字體名,只能有一個'-'。這個文件中可以聲明編碼的數量。Unicode (ISO 10646):STARTMAPPING unicodea given TrueType ``cmap'':STARTMAPPING cmap 3 1PostScript glyph names:STARTMAPPING postscript文件中每一行都說明了從一種編碼到另一種的映射關系。0x21 0x06600x22 0x0661...簡化的也可以一行說明一個區。最後是:ENDMAPPING映射完後是:ENDENCODING如果用了沒有定義的關鍵詞,這一行會被忽略。4.1.5. 符號字體4.1.6. 關於使用不良編碼的字體的提示4.1.6.3. 定義別名有些字體像 `adobe-fontspecific', `microsoft-win3.1' 等,其名稱不合規范,要想用它們,就必須給他們一個合適的名字。這可以寫在 `fonts.alias' 文件中,這個文件的格式很簡單,每一行寫一個別名到字體名的映射即可。如:"-ogonki-alamakota-medium-r-normal--0-0-0-0-p-0-iso8859-2""-ogonki-alamakota-medium-r-normal--0-0-0-0-p-0-adobe-fontspecific"其准確語法可參考 mkfontdir(1) manual page。4.2. 可變形核心字體的附加說明FreeTyep後端(即freetype模塊,以前也叫xfsft)可以處理TrueType和Type 1字體,這讓它和X-TT和Type 1後端有沖突。如果同時使用FreeType和Type 1後端,FreeType就會被用於處理Type 1字體。如果FreeType和X-TT同時使用,X-TT會被用於TrueType字體。4.2.1. 字型描繪延遲FreeType和X-TT在第一次使用某個字型時都會有一點延遲。因此,他們只能提供一個大致的字體“平均寬度”。兩種後端都支持character-cell字體的優化(幾何上相同的字型,或終端字型),其特征是在 XLFD 中有一個 c 。如:-misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0這種字體在描繪時就不用去計算尺寸,而相信它是一個character-cell字體,如覺得有用時可以使用。但需要注意的是並非所有的等寬字體都是這種字體。4.2.2. 關於 FreeType 後端FreeType目前基於FreeType 庫的第2版,支持 fontenc 形式的國際化。支持TTF/TTC/OTF/OTC等多種字體。為了讀取TTC文件中的一個字體,必須在 fonts.dir 文件中聲明它的號碼,如::2:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0指的就是這個TTC文件中的第2個字體。4.2.3. 有關X-TT`X-TrueType'基於FreeType 庫的第 1 版,它不使用fontenc層來管理字體編碼,它有自己的方法。XTT擴展了`fonts.dir'的語法,加入了幾個選項,主要是 TTCap ::option=value:在文件名前面聲明。最有用的TTCap是聲明TTC文件中字體號的,即 fn ::fn=2:mincho.ttc -misc-mincho-medium-r-normal--0-0-0-0-c-0-jisx0208.1990-0其他信息,可參考XTT的網站:http://x-tt.dsl.gr.jp/(好像連不上)5. 附錄:背景及術語5.1. 字符和字型擊鍵和顯示/打印出來的字型是不同的,有時候一對一,有時候不是,可能會有連字,如阿拉伯字。從擊鍵到字型有兩步,先是從擊鍵到字符,再從字符到字型。字符就是存儲在計算機裡的文件中的東西,關於它也有許多標准。在代碼和字符之間有一個映射關系,計算機必須知道哪個代碼是哪個字符,如 US-ASCII, ISO 8859-1, KOI8-R, and JIS X 0208(1990)等都是編碼。字符集通常是8位編碼,更早的有6位的。對象形文字來說,一般得用16位來編碼。5.2. 字體文件,字體和XLFD傳統上,印刷工叫它們字形和鉛板。字形就是某種專門設計的字體,如 Times Italic 。而鉛板就是一個用融化的鉛鑄出來的給定尺寸字形塊。數字字體存在字體文件裡,其中存儲著生成某種字形線條的信息。使用它的程序可以任意順序讀取其中的字形信息。字體中還可以包含 位圖 數據,這就是bitmap字體。它還可以包含數學描述,這就是可變形字體,常見的有Type 1(有時也叫ATM字體或PS字體)、TrueType和Speedo。字形信息又必須有一種索引方法,Type1裡一般是字形的名字,而TrueType裡一般是一種特定的索引機制,比如Unicode。X11核心字體系統使用字體文件中的數據來生成字體實例,它就是一系列特定尺寸字形的集合,並用一種給定的編碼進行索引。X11核心字體實例通常用一種XLFD來指定,即 X邏輯字體描述(X Logical Font Description),它以一個'-'開頭,共有14個由'-'分開的區域,如:-adobe-courier-medium-r-normal--12-120-75-75-m-70-iso8859-1最後的 `iso8859-1'表明了這個字體的編碼。可變字體的XLFD中用0來代替一些區域(因為它們大小是不定的):-adobe-courier-medium-r-normal--0-0-0-0-m-0-iso8859-1這些字體也可以用短的名字來稱呼,它就是一個名字,沒有結構。有兩個名字是一定要有的,如果它們打不開,X server就不能啟動,一個叫 fixed ,是一個後備字體,如果指定字體打不開,就用它來代替。另一個叫 cursor ,實際上是鼠標指針的形狀。短名字一般是XLFD的別名,標准的 `fixed' 和 `cursor' 定義在:/usr/X11R6/lib/X11/font/misc/fonts.alias文件中。5.3. UnicodeUnicode (http://www.unicode.org)是一個巨大的字符集,它定義現有及歷史上的所有字符。它是開放的,也就是說任何時候都可以加入新的編碼點(加入後不得改變)。因此,Unicode現在顯得比較零散,通常只有一個個的子集。Unicode同ISO 10646是並行的,其分配也經常是等同的,可以同時或交互使用這兩個名字。在X11核心字體中,Unicode編碼的字體應該在XLFD的最後加上 `iso10646-1' 。6. 參考fontconfig(3) man pagemkfontdir(1) man page及X(7), Xserver(1), xset(1), Xft(3), xlsfonts(1) and showfont(1) man pageXFree86當前文檔:http://www.xfree86.org/currentcomp.fonts FAQ:http://www.netmeg.net/faq/computers/fonts/fontconfig: http://www.fontconfig.org/xfsft: http://www.dcs.ed.ac.uk/home/jec/programs/xfsft/ , http://www.joerg-pommnitz.de/TrueType/xfsft.html作者:http://www.pps.jussieu.fr/~jch/software/X-TT:http://x-tt.dsl.gr.jp/CIDfonts:FTP://ftp.oreilly.com/pub/examples/nutshell/cjkv/adobe/Unicode:http://www.unicode.org/UTF-8 FAQ:http://www.cl.cam.ac.uk/~mgk25/unicode.htmlIANA RFC 373'




Copyright © Linux教程網 All Rights Reserved