亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: Fontconfig用戶手冊(cè) [打印本頁]

作者: hahaghost    時(shí)間: 2004-12-13 15:09
標(biāo)題: Fontconfig用戶手冊(cè)
Linux的字體引擎已經(jīng)統(tǒng)一采用fontconfig+xft2體系。Fontconfig負(fù)責(zé)字體的安裝確認(rèn)和匹配,xft2則負(fù)責(zé)字體渲染。這篇翻譯的Fontconfig手冊(cè)希望可以讓大家更深入地了解Fontconfig的配置和機(jī)理。
原文:http://www.fontconfig.org/fontconfig-user.html
作者:Keith Packard , HP Cambridge Research Lab
翻譯:Conner Mo  
(connermo@hotmail.com)  中國Linux公社 (www.linuxfans.org )
Fonts-conf

名稱
fonts.conf - 字體配置文件
文件綱要
/etc/fonts/fonts.conf
/etc/fonts/fonts.dtd
~/.fonts.conf
描述
fontconfig 是提供系統(tǒng)范圍內(nèi)字體設(shè)置,定制和允許應(yīng)用程序訪問的函數(shù)庫。
功能概述
fontconfig
包含兩個(gè)基本的模塊,即讀取XML文件并建立內(nèi)部配置的配置模塊和接受請(qǐng)求的字體樣板并返回最接近所需字體的匹配模塊。
字體設(shè)置
fontconfig的配置模塊由FcConfig 數(shù)據(jù)類型,libexpat和FcConfigParse
組成。它掃描一個(gè)XML樹并將其中的數(shù)據(jù)處理成一個(gè)配置文件。從外部來看,函數(shù)庫的配置就是生成一個(gè)有效的XML樹并將其填充到FcConfigParse里。應(yīng)用程序改變運(yùn)行中的函數(shù)庫配置的唯一途徑就是添加字體和目錄到用戶的字體文件列表中。
這樣做的目的就是讓字體的配置變得相對(duì)靜態(tài),并且可以盡可能多地讓其他應(yīng)用程序共享。這種做法預(yù)計(jì)可以在應(yīng)用程序相互傳遞字體名稱的時(shí)候獲得相對(duì)穩(wěn)定的字體選擇。XML被選為配置文件的標(biāo)準(zhǔn)格式是因?yàn)樗且粋(gè)既便于外部程序編輯又可以保留正確結(jié)構(gòu)和語法的格式。
字體的配置和字體的是分開的。需要采取自身特定匹配方式的應(yīng)用程序可以從庫中訪問已有的字體并執(zhí)行獨(dú)立的匹配操作。這樣做是為了讓應(yīng)用程序可以從字體庫中
挑選并選定合適的庫功能,而不是強(qiáng)迫他們選擇這個(gè)庫或者私有的設(shè)置機(jī)制。這種做法預(yù)計(jì)可以讓所有應(yīng)用程序的字體配置可以集中在一處。集中的字體配置可以標(biāo)
準(zhǔn)化和簡化字體安裝和定制。
字體屬性
雖然字體樣板可能包含任意基本屬性,但還是有一些眾所周知的屬性及其附帶的類型。Fontconfig利用這些屬性來匹配和完成字體配置。其他屬性則被用來為應(yīng)用程序的渲染機(jī)制提供方便。
  
   
      屬性
      
      類型
      
      描述
      
   
   
      family
      
      String
      
      字體家族名稱 (宋體,仿宋體等)
      
   
   
      style
      
      String
      
      字體風(fēng)格,包括粗度(weight)和傾斜度(slant)。
      
   
   
      slant
      
      Int
      
      傾斜度,分為Italic(斜體),
oblique(傾斜羅馬體)或者roman(羅馬體)
      
   
   
      weight
      
      Int
      
      Light
(微粗),medium(稍粗),demibold(略粗),bold(粗)或者black(黑體)
      
   
   
      size
      
      Double
      
      尺寸大小
      
   
   
      aspect
      
      Double
      
      在微調(diào)(hinting)前水平拉伸字體
      
   
   
      pixelsize
      
      Double
      
      像素大小
      
   
   
      spacing
      
      Int
      
      間距,Proportial (可變),monospace
(等寬) 或者charcell (字符單元)
      
   
   
      foundry
      
      String
      
      字體廠商名稱
      
   
   
      antialias
      
      Bool
      
      字體渲染是否采用抗鋸齒功能
      
   
   
      hinting
      
      Bool
      
      渲染引擎是否采用微調(diào)
      
   
   
      verticallayout
      
      Bool
      
      采用豎直排版
      
   
   
      autohint
      
      Bool
      
      采用自動(dòng)微調(diào)代替普通微調(diào)
      
   
   
      globaladvance
      
      Bool
      
      使用字體全局間距數(shù)據(jù)
      
   
   
      file
      
      String
      
      存儲(chǔ)字體的文件名稱
      
   
   
      index
      
      Int
      
      字體文件內(nèi)的字體索引
      
   
   
      ftface
      
      FT_Face
      
      使用指定的Freetype格式對(duì)象
      
   
   
      rasterizer
      
      String
      
      正在使用的渲染引擎
      
   
   
      outline
      
      Bool
      
      字型是否中空
      
   
   
      scalable
      
      Bool
      
      字型是否可以放縮
      
   
   
      scale
      
      Double
      
      尺寸->像素的放縮比例
      
   
   
      dpi
      
      Double
      
      目標(biāo)點(diǎn)數(shù)/英寸
      
   
   
      rgba
      
      Int
      
      unkonw, rgb, brg, vrgb, vbgr,
none -子像素的幾何排列
      
   
   
      minspace
      
      Bool
      
      是否采用最小行間距
      
   
   
      charset
      
      CharSet
      
      字體的編碼
      
   
   
      lang
      
      String
      
      字體支持的RFC-3066-style 語言列表。
      
   
  
字體匹配
Fontconfig用計(jì)算輸入的字體樣板和現(xiàn)有系統(tǒng)中字體的距離來實(shí)現(xiàn)字體匹配。最接近的字體將被選擇。這樣可以保證任何時(shí)候都能夠返回一個(gè)字體,但不能保證它和所需要的樣板類似。
字體的匹配是從應(yīng)用程序所創(chuàng)建的樣板開始的。請(qǐng)求字體的所有屬性會(huì)被搜集到一個(gè)樣板里。每個(gè)屬性可以包含一個(gè)或多個(gè)值。它們按照優(yōu)先等級(jí)排列。匹配列表前的被認(rèn)為是比符和列表后的更加接近所需屬性。
最初的字體樣板會(huì)按照配置文件中的編輯指令按順序修改。每個(gè)修改的過程包括匹配和其它一系列的編輯操作,并且每個(gè)匹配的過程都會(huì)執(zhí)行相應(yīng)的編輯操作。
當(dāng)字體樣板編輯修改完后,將會(huì)執(zhí)行一系列默認(rèn)的替換操作,從而標(biāo)準(zhǔn)化已有的一套屬性。這樣可以避免較低層程序在渲染的時(shí)候?yàn)椴煌淖煮w屬性提供一成不變的默認(rèn)值。
標(biāo)準(zhǔn)化后的字體樣板最后將和系統(tǒng)所有擁有的字體進(jìn)行匹配。樣板和字體的距離是用它的每個(gè)屬性,廠商,編碼,家族,語言,間距,像素大小,風(fēng)格,斜度,粗度,防鋸齒,渲染引擎和中空測量出來的。這個(gè)列表是按照優(yōu)先級(jí)排序的,排在前面的元素比后面的元素占的比重大。
 
這個(gè)規(guī)則中有一個(gè)特殊的例子:家族的名稱分成兩個(gè)部分,strong(強(qiáng))和weak
(弱)。強(qiáng)家族名稱在匹配中比語言元素優(yōu)先級(jí)要高,而弱家族名稱在匹配中比語言元素的優(yōu)先級(jí)別要低。這樣允許在文檔指定字體都不存在的時(shí)候,文檔的語言屬性可以指導(dǎo)字體的選擇。
代表所屬字體的樣板會(huì)包含所有在那個(gè)樣板找到的屬性,而不只是在字體中找到的。這允許應(yīng)用程序通過匹配系統(tǒng)傳送渲染指令和其它數(shù)據(jù)。最后,在配置文件中找到字體的編輯指令列表將被應(yīng)用到樣板。修改過的樣板會(huì)返回給應(yīng)用程序。
返回的值包括充足的字體定位和渲染信息,包括文件名,像素大小和其他渲染數(shù)據(jù)。因?yàn)闆]有任何包含的信息屬于Freetype庫,引用程序可以自由選擇渲染引擎,甚至直接獲取和訪問字體文件。
在編輯文件中,匹配和編輯的序列是按照兩步執(zhí)行的,
因?yàn)樾枰袃蓚(gè)不同操作。第一步是修改如何選取字體,為字體家族取別名和添加合適的默認(rèn)值。第二步是修改如何渲染已選擇的字體。這些步驟必須應(yīng)用在已選擇的字體上,而不是原有的字體樣板,因?yàn)榻?jīng)常會(huì)發(fā)生錯(cuò)誤的匹配。
字體名稱
Fontconfig
為樣板提供一個(gè)可以讓函數(shù)庫接受和產(chǎn)生的文本表達(dá)。表達(dá)有三個(gè)部分,第一個(gè)是字體家族名稱列表,第二個(gè)是尺寸大小列表,最后是附加屬性列表:
-:=:=...
-:=:=...
在列表中的賦值用逗號(hào)分開。名稱不需要包含家族或者尺寸大小,它們可以省略。另外,還有一些字符常量可以同時(shí)說明名稱和賦值。這里有一些例子:
  
   
      名稱
      
      含義
      
   
   
      Times-12
      
      尺寸12的Times Roman
      
   
   
      Times-12:bold
      
      尺寸12的Times粗體
      
   
   
      Courier:italic
      
      Courier默認(rèn)尺寸的斜體
      
   
   
      Monospace:matrix=1 .1 0 1
      
      用戶首選的采用人工斜體的等寬字體
      
   
  
語言標(biāo)記
每種在數(shù)據(jù)庫中的字體包括一個(gè)它所支持的語言列表。這是用比較字體的unicode范圍和語言的正詞法(orthography)計(jì)算出來的。語言使用一個(gè)兼容RFC-3066的命名標(biāo)準(zhǔn)并且具有兩個(gè)部分——ISO693語言標(biāo)記跟一個(gè)連字符,然后是ISO3166國家代碼。連字符和國家代碼可以省略。
Fontconfig在函數(shù)庫中有幾種語言的正詞法。除了重新編譯函數(shù)庫外,還沒有其他途徑添加新的正詞法。Fontconfig現(xiàn)在支持ISO639-1中命名的139種語言的122種,ISO
639-2的141種有雙字符編碼的語言和另外30種三字符編碼的語言。
配置文件的格式
Fontconfig的配置文件的存儲(chǔ)格式為XML格式。這種格式可以讓延伸的配置工具更加方便的編寫并且可以保證他們可以生成語法結(jié)構(gòu)正確的文件。由于XML文件是純文本文件,專家用戶可以用文本編輯器處理它們。
Fontconfig
文件類型定義在延伸的實(shí)體“fonts.dtd”中,通常存儲(chǔ)在默認(rèn)的字體設(shè)置目錄(/etc/fonts)。每個(gè)配置文件必須包括下列的結(jié)構(gòu):
            
            
     
    ...        
   
這是字體配置頂層的單元,可以按照任意順序包括dir, cache, include, match和alias單元。
dir
這個(gè)單元包含一個(gè)會(huì)被掃描目錄名稱,掃描到字體文件將被包括到可用的字體列表中里。
cache
這個(gè)單元包含一個(gè)為每個(gè)用戶設(shè)置的緩存字體信息的文件名稱。如果它以“~”開始的話,代表一個(gè)在用戶主目錄的文件。這個(gè)文件是用來保留在為每個(gè)目錄設(shè)置的
緩存文件中沒有的字體信息的。Fontconfig將會(huì)自動(dòng)處理緩存文件。默認(rèn)的緩存文件是“~/.fonts.cache-version”,這里
version是字體配置文件的版本號(hào)。(目前是1)。
include ignore_missing="no"
這個(gè)單元包含一個(gè)附加的配置文件名稱。當(dāng)XML數(shù)據(jù)類型被FcConfigParse掃描處理后,這個(gè)文件的內(nèi)容也將會(huì)通過傳送文件名稱到
FcConfigLoadAndParse,從而被包括在配置中。如果“ignore_missing”設(shè)成“yes”而不是默認(rèn)的“no”的話,一個(gè)丟
失的文件將不會(huì)引起函數(shù)庫的警告信息。
config
這個(gè)單元提供一個(gè)整合附加的配置信息的地方。config可以按照任意順序包含blank和rescan單元。
blank
字體通常包含“破碎”的字型,它們?cè)诰幋a中存在但在屏幕上卻被繪制成空白。我們?cè)赽lank單元中放置每個(gè)預(yù)計(jì)是空白的unicode字符到int單元中。這些繪制為空白的字符將從字體支持的字符集中忽略。
rescan
rescan單元存放一個(gè)表示自動(dòng)掃描字體配置文件變化間隔時(shí)間的int單元。每次間隔過后,F(xiàn)ontconfig都將驗(yàn)證所有的配置文件和目錄并且自動(dòng)重建內(nèi)部的數(shù)據(jù)結(jié)構(gòu)
。
match target="pattern"
這個(gè)單元先存放(可能是空的)test元素列表,然后是一個(gè)edit元素列表(也可能是空的)。匹配檢測(test元素)條件的樣板將受到
edit元素列表的影響。如果“target”設(shè)定為“font”而不是默認(rèn)的“pattern”的話,那么這個(gè)單元就將應(yīng)用到一個(gè)匹配后的字體名稱,而
不是一個(gè)需要匹配的字體樣板。
test qual="any" name="property"
compare="eq"
這個(gè)單元包含一個(gè)單獨(dú)的值,用來和樣本的屬性“property”比較(可以替換property為任意一個(gè)上面列出的屬性)。
“compare”可以是“eq”(等于),“not_eq”(不等于),“l(fā)ess”(小于),“l(fā)ess_eq”(小于等于),“more”(大
于),“more_eq”(大于等于)。“qual”可以為默認(rèn)的“any”,在這種情況下,只要任意一個(gè)之字體屬性符合比較的值,匹配就成功。如果
“qual”為“all”的話,只有當(dāng)所有的字體屬性都符合比較的值的時(shí)候,匹配才成功。
edit name="property" mode="assign"
binding="weak"
這個(gè)單元包括一個(gè)表達(dá)式單元的列表(任何賦值和操作單元)。表達(dá)式單元將在運(yùn)行的時(shí)候被執(zhí)行并且將修改屬性“property”。是否修改依賴于
“property”的值是否匹配相應(yīng)的test單元。如果匹配的話,這個(gè)修改將會(huì)影響第一個(gè)匹配的值。任何插入到屬性的值都可以給出綁定
(binding)說明!癿ode”可以是以下列表其中的一個(gè):
  
   
      Mode
      
      有匹配條件
      
      沒有匹配條件
      
   
   
      "assign"
      
      替換匹配的值
      
      替換所有值
      
   
   
      "assign_replace"
      
      替換所有值
      
      替換所有值
      
   
   
      "prepend"
      
      在匹配前插入
      
      在列表頭部插入
      
   
   
      "prepend_first"
      
      在列表頭部插入
      
      在列表頭部插入
      
   
   
      "append"
      
      在匹配后添加
      
      在列表底部添加
      
   
   
      "append_last"
      
      在列表底部添加
      在列表底部添加
   
  
int, double, string, bool
這些單元保存單獨(dú)一個(gè)聲明的類型。bool
單元保存true或者false。在賦浮點(diǎn)數(shù)的時(shí)候有一個(gè)重要的限制——fontconfig要求尾數(shù)必須以一個(gè)數(shù)字開始,而不是一個(gè)小數(shù)點(diǎn),所以應(yīng)該碰到純小數(shù)的時(shí)候應(yīng)該插入一個(gè)起始的"0"。(例如用0.5而不是.5,-0.5而不是-.5。)
matrix
這個(gè)單元保存一個(gè)防射變換的四個(gè)double元素。
name
保存一個(gè)屬性名稱。從字體屬性的第一個(gè)值判斷出來的,而不是樣板的第一個(gè)值。
const
保存一個(gè)常量的名稱。以下這些數(shù)值總是整數(shù)并且作為一般字體值的字符表達(dá)。
  
   
      常量
      
      屬性
      
      值
      
   
   
      light
      
      weight
      
      0
      
   
   
      medium
      
      weight
      100
      
   
   
      demibold
      
      weight
      
      180
      
   
   
      bold
      
      weight
      
      200
      
   
   
      black
      
      weight
      
      210
      
   
   
      roman
      
      slant
      
      0
      
   
   
      oblique
      
      slant
      
      110
      
   
   
      proportional
      
      spacing
      0
      
   
   
      mono
      
      spacing
      
      100
      
   
   
      charcell
      
      spacing
      
      110
      
   
   
      unknow
      
      rgba
      
      0
      
   
   
      rgb
      rgba
      
      1
      
   
   
      bgr
      
      rgba
      
      2
      
   
   
      vrgb
      
      rgba
      
      3
      
   
   
      vbgr
      
      rgba
      
      4
      
   
   
      none
      
      rgba
      
      5
      
   
  
or(與), and(或), plus(加), minus(減),
times(乘), divide(除)
這些元素在一個(gè)表達(dá)試列表上執(zhí)行特定的操作。or和and是布爾操作,不是位操作。
eq(等于), not_eq(不等于), less(小于),
less_eq(小于等于), more(大于), more_eq(大于等于)
這些元素比較兩個(gè)值,產(chǎn)生一個(gè)布爾值。
not
對(duì)一個(gè)表達(dá)式的布爾值進(jìn)行“非”操作。
if
這個(gè)單元包含三個(gè)表達(dá)單元。如果第一個(gè)單元為真,則產(chǎn)生第二個(gè)單元的值,否則產(chǎn)生第三個(gè)單元的值。
alias
Alias
(別名)單元為需要替代一個(gè)字體家族名稱到另一個(gè)的一套通用匹配操作提供簡化符號(hào)。它們包含一個(gè)family單元,緊跟著是可選的prefer,
accept和default單元。匹配family單元的字體將被編輯,使得prefer家族在匹配family的前面,accept家族在匹配的
family后面并且default家族在家族列表的最后。
family
保存一個(gè)單獨(dú)的字體家族名稱
prefer, accpet, default 
這些單元保存一個(gè)讓alias單元使用的字體列表。
配置文件舉例
系統(tǒng)配置文件
這是一個(gè)系統(tǒng)范圍的配置文件例子
/usr/X11R6/lib/X11/fonts/truetype
/usr/X11R6/lib/X11/fonts/Type1
        mono
        monospace
        sans
        serif
        monospace
        sans
~/.fonts.conf
        Times
        Times New Roman
        serif
        Helvetica
        Verdana
        sans
        Courier
        Courier New
        monospace
        serif
        Times New Roman
        sans
        Verdana
        monospace
        Andale Mono
   
用戶配置文件
這是一個(gè)以用戶為單位的字體配置文件例子,文件名為 ~/.fonts.conf
~/misc/fonts
        rgb
   
文件
fonts.conf   
   
包含了fontconfig函數(shù)庫的配置信息,其中有用來尋找字體及相關(guān)信息的目錄名稱,還有在嘗試匹配現(xiàn)有字體前執(zhí)行的字體樣板編輯指令。它使用的是xml格式。
fonts.dtd    
    是一個(gè)描述配置文件格式的DTD文件。
~/.fonts.conf  
是當(dāng)前用戶字體配置的默認(rèn)位置,實(shí)際的位置可以在fonts.conf文件里指定。
~/.fonts.cache-*
是在沒有發(fā)現(xiàn)字體目錄中的緩存文件時(shí),在當(dāng)前用戶目錄存儲(chǔ)字體信息的文件。這個(gè)文件是fontconfig自動(dòng)維護(hù)的。
版本號(hào)
Fontconfig version2.2.0


本文來自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/1931/showart_7948.html




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2