日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu 8.10字体美化原理初步探索

發布時間:2023/12/14 Ubuntu 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu 8.10字体美化原理初步探索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
網上介紹字體美化的帖子非常多,不過能講得比較透徹的就少只有少了。這個文章不錯,轉過來和大家分享。

幾個相關字體知識的鏈接:
http://en.wikipedia.org/wiki/Non-proportional_font#Proportion
http://en.wikipedia.org/wiki/Serif
http://zh.wikipedia.org/w/index.php?title=%E5%AD%97%E4%BD%93&variant=zh-cn

由于是從PDF貼出來的,格式變得有些糟糕,有一個大概印象就好。要通看全文,建議參考原文的PDF格式文件。地址:

[url]http://www.linuxsir.org/bbs/thread340087.html[/url]




????????????????? Ubuntu 8.10字體美化原理初步探索
前言
本人(Gary)對操作系統的美觀要求頗高,因為沒有一個看上去舒服的系統就很難激發學習使用的
熱情。而Linux跟Windows相比在字體顯示的美觀度方面(特指漢字)差距頗大。一來微軟投入了大
量的資源和財力開發出了一些特定的商業字庫供Windows使用,而來Windows本身也是以易用性強著
稱,所以微軟在背后也做了大量的工作讓使用者安裝好系統就能近乎完美的瀏覽各種文檔和頁面。
即使默認沒有安裝某種字體或者字庫,想要增加也僅僅靠點擊幾下鼠標就能達到目的,不可謂不是
已經做到極致。老實說至少在這個方面不管哪個Linux的發行版都是比不上。
雖然如此,但是由于Linux自身功能的強大性和自由性,我堅信可以定制修改出一個讓人滿意的字體
顯示效果,但是要達到這個目的可不是點點鼠標就可以的,背后隱藏著很多的知識。對于像我這樣
未入門的人來說門檻有些高。雖然網上有很多美化的方法和步驟,可是在我嘗試過后都不是那么令
人滿意。主要有這樣幾個方面的問題:1. 每個人的系統安裝情況不同,你有安裝過的包我不一定裝
了。你方便找到或者安裝上的包對于我來說卻可能非常困難;2. 命令繁雜且都沒有任何說明,讓人
難以理解,特別是對于初學者;3.美化以后絕大部分總會留有美中不足,比如大部分都好看了,可
是某某某應用程序還是不行之類的事情經常發生;4.即使幸運的美化好了讓你重新幫別人再弄一次
估計都很難重現,因為根本不懂原理或者理解很淺薄容易遺忘。我就是因為上面4點原因因此決心好
好研究一下Linux系統下的字體系統,以我目前新裝上的Ubuntu 8.10為藍本在網上搜索了大量的相
關文章撰寫本文,只是來源瑣碎,有一些來源鏈接丟失了,實在是不好意思。不過本文也融入了大
量的個人理解,并且修正了很多的錯誤。大家可以隨意轉載,沒有任何限制,也不用通知本人,只
需要連同前言部分也一起轉載就可以了。?????????? 如有錯誤歡迎批評指正,?? 以便及時修正,???? 免得誤人子弟。 如
有問題需要探討請發送郵件到<[email]qhgary@sina.com[/email]>
預備知識
1.有襯線字體 Serif)、無襯線字體
1.有襯線字體(Serif)、無襯線字體(Sans Serif)和等寬字體(Monospace)
? 有襯線字體(???????? )、無襯線字體(?????? Serif)和等寬字體 Monospace)
????????????????????????????????????? 和等寬字體(
初看到“衫線”這個詞時候以為是襯衫,心想字體還分什么有襯衫無襯衫?仔細一看才發現看錯了,
在字典里面查了一下發現原來“衫線”是一個術語起源于荷蘭語,指字母的拐角或端點位置的修飾線。
(如下圖所示)
我們平時所用的Times New Roman、Georgia等就屬于有衫線字體(Serif),? 而Arial、Tahoma、Verdana
等則屬于無衫線字體(Sans Serif)。對中文而言,同樣存在這兩大種類,很明顯,宋體、細明體
(繁體中常用)等就屬于Serif,而黑體、幼圓等則屬于Sans Serif。總結一下個人覺得有衫線字體
(Serif)就是有棱角而且粗細不一的,無衫線字體(sans serif)就是相對比較圓滑而且粗細均勻
的字體。正是由于這個特性使得無襯衫字體(Sans Serif)比較醒目,而且字體較小的時候依然容
易辨認,而有衫線字體(Serif)由于強調筆畫始末,因此前后字母看上去連續性更強,適合閱讀,
可是字號小了以后有些細的地方就變得更細顯得模糊或者發虛,但是大的時候卻更有型。因此各有
利弊,不同場合應該選擇不同的字體來顯示,這樣才更加美觀,也使得本文更有意義。
上面這兩種字體類別又叫比例字體(Proportional Font),另外還有一種字體叫做等寬字體
(Monospace Font)。顧名思義就是字符寬度相等。在等寬字體中,字母 i,j 顯得兩側餘白較多,
而字母 w,m 等的筆畫顯得相當擁擠。漢字因為都是方塊字,基本上都是作為等寬字體在處理,但是
有些字體同時還涵蓋了西文的半角文字字符,造成一個字體中兩種類型混雜的局面。
2.字體的
? 字體的DPI/PPI
2.字體的DPI/PPI
我們的屏幕是由一個個小方格組成,我們稱這些方格為像素,LCD 中有個術語叫屏幕的物理解析度
(native resolution),指的的就是屏幕所包含的像素數量,比如我的 TFT LCD 14"物理解析度為
1024x768,即水平由1024個像素組成,垂直由768個像素組成。通常讓我們的 LCD 工作在物理解析
度成像效果最好。DPI(Dot Per Inch)的意思就是每英寸的點陣數,通常適合于CRT顯示器,而PPI
(Pixel Per Inch)是每英寸的像素數針對LCD。
換算比例: 1 cm = 0.39 inch, 1 inch = 2.54 cm (以1024*768的LCD為例)
水平 dpi = 水平 resolution * 2.54 / width = 1024 * 2.54 / 28.7 = 90.6
垂直 dpi = 垂直 resolution * 2.54 / height = 768 * 2.54 / 21.5 = 90.7
我們知道顯示器分辨率越高說明點陣越密集,從而相同DPI的字在高分辨率上會顯得較小,這也是為
什么我們有時候需要修改DPI的原因。由于跟分辨率相關所以DPI無法反映出漢字的實際大小,這里
我們引入另外一個重要單位磅(point)。
1 point = 1/72 inch
比如一個9磅的漢字,9 * 1/72 = 1/8 inch = 1/8 * 2.54 cm = 3.175 mm。這是一個絕對值,所以
在比較漢字大小的時候需要用磅而不是像素。
3.X11核心字體子系統、xft字體子系統
3.X11核心字體子系統、xft字體子系統
???? 核心字體子系統
請注意這里說的是字體子系統而不是字體,因為這里要說的是一種渲染字體的流程模式。X里面有兩
種字體系統,一種是核心X11字體子系統,由X客戶端發起向X服務器提出請求,然后X服務器利用內
置的渲染引擎(默認是freetype)渲染并顯示。另一種是xft字體子系統,它允許應用程序直接使用
字體文件,自己渲染(通過X Font Server協調控制)然后交由X服務器來顯示。X11核心字體子系統
對于現在的Linux發行版來說并不常用,只是被一些老的GTK1.x程序或者一些終端程序沿用著。不過
隨著時間的推移和更為強大的功能,xft將會取代核心X11字體子系統。
X11核心字體系統的字體配置信息是被嵌入在/etc/X11/xorg.conf中的,而xft字體子系統來說,由
于它使用fontconfig庫來完成匹配的動作,???????? 所以對應的字體配置信息是在fontconfig的配置文件中。
因此,當我們添加一個字體的時候需要同時修改兩個配置文件才能讓使用不同字體子系統的應用程
序都能享用到。否則就會出現有的程序字體選擇列表里有這個字體而有的則找不到。
這里有必要把xfs、xft以及fontconfig的關系進一步明確一下。實際上fontconfig和xft是兩個不同
的庫,其中fontconfig負責找到某種字體,而xft負責在X系統中把fontconfig庫找到的字體顯示出
來。當客戶端像X服務器請求字體的時候,X服務器會將請求轉發給xfs(X Font Server),然后xfs
會利用xft庫控制字體的匹配(通過fontconfig)、渲染(通過X協議調用渲染引擎)然后交還給X
顯示出來。
因此我們美化字體的時候對于xft子系統只需要跟fontconfig相關的配置文件打交道就可以了。
Fontconfig會自動搜索字體路徑,發現新拷貝的字體,當需顯示的字體不存在時,會自動選擇其它
字體代替顯示。因此有時候我們需要調整該配置文件里面字體的排列順序達到英文和漢字使用不同
字體顯示的目的。
目前,使用Qt3或GTK2工具包(包括KDE和GNOME應用程序)的應用程序使用xft字體子系統;其它部
分程序(如 xmms 、gimp) 還在使用核心X字體。注意以上列出的字體子系統用法有兩個例外,它們
是 OpenOffice.org (使用它自己的字體繪制技術) Mozilla 和???????? (使用 fontconfig,? 但不是 GTK 2)。
正是上面不同的字體子系統以及各種不同類型的應用程序使得我們在對其美化的時候需要區別對
待,這也是美化步驟繁雜且難以一次完美的主要原因。
4.Freetype
FreeType不是一個字體的格式,???? 而是開源字體渲染引擎,它并不只為X設計。???????????????? 其功能就是讀取Truetype
字體信息, 如大小、?????? 分辨率、編碼等, 然后渲染成所需的位圖數據輸出。??????????????? Freetype 現在的版本是 2.x,
與1.0 相比, 最大的差別就是加入了抗鋸齒功能。
5.點陣字體和矢量字體
5.點陣字體和矢量字體
點陣字庫是把每一個漢字都分成16×16或24×24個點,然后用每個點的虛實來表示漢字的輪廓,常用
來作為顯示字庫使用,這類點陣字庫漢字最大的缺點是不能放大,一旦放大后就會發現文字邊緣的
鋸齒。矢量字庫保存的是對每一個漢字的描述信息,比如一個筆劃的起始、終止坐標,半徑、弧度
等等。在顯示、打印這一類字庫時,要經過一系列的數學運算才能輸出結果,但是這一類字庫保存
的漢字理論上可以被無限地放大,筆劃輪廓仍然能保持圓滑,打印時使用的字庫均為此類字庫。不
過要注意一點,當我們具體談到某一個字體文件的時候,里面可能既有矢量字體信息又同時內置了
對應的點陣字體信息。
6.TrueType、Type1和
6.TrueType、Type1和OpenType
這三種都是矢量字體,其中Type1字體由Adobe公司開發,從post.演變而來。蘋果和微軟為了
不受制于Adobe,??? 自己開發了TrueType字體。這兩者原理上沒什么大區別,????? 但是相互不兼容。? 后來adobe
又開發了opentype字體,兼容前兩種。因為Windows用的是TrueType字體,所以這種字體的資源豐富
一些。? 把文件從windows平臺直接拷貝過來就可以用了。???????? 我們一般美化矢量字體都是選擇的TrueType,
當然除了矢量字體有時候我們也需要點陣字體,原因是有些情況下點陣字體的效果也會比矢量字體
來得好,這個需要具體原因具體分析,同時也需要不斷嘗試。
7.擴展名為ttf和ttc的字體文件
7.擴展名為ttf和ttc的字體文件
? 擴展名為ttf
上面兩種字體文件都是屬于常見的TrueType字體類型文件,ttf叫做TrueType Font而ttc叫做
TrueType Collection。顧名思義ttf才是TrueType字體的最小單位而ttc則是ttf的集合,就是說一
個ttc文件里面可以包含多個ttf的集合。??????? 舉個例子Windows上面的simsun.ttc文件實際上就包含了宋
體和新宋體兩個ttf,利用字體相關工具甚至可以將ttc里面的ttf分別提取出來或者將多個ttf合并
成一個ttc。
8.反鋸齒(Anti-aliasing)和微調(Hinting)
8.反鋸齒(Anti-aliasing)和微調(Hinting)
? 反鋸齒
這兩個術語是講字體渲染(就是把矢量字體顯示到屏幕上)時候用的一些技術。
在使用矢量字體的時候,我們會需要對漢字進行縮放。雖然理論上漢字的筆畫是圓滑的,但是由于
視覺的關系會產生鋸齒感。Antialiasing是將字體在后臺先以數倍的大小來繪畫,然后再縮成想要
的大小從而使字體的邊角變得圓滑。Anti-aliasing會讓人一種朦朧的感覺,習慣了Windows XP下清
晰,銳利的字體顯示時,Antialiasing會讓人不太適應,會讓用戶覺得Linux下的字體顯示不如
Windows。但其實Antialiasing是一種很先進的顯示技術,當長時間顯示器上閱讀的時候,Windows
下的銳利的字體顯示風格,會讓眼睛更加容易疲勞。使用Antialiasing技術能夠使得字體顯示更加
柔和,更加適合長時間的上閱讀,減少眼睛的疲勞。 微軟從Vista操作系統開始也采用具有類似渲
染效果的ClearType字體來取代傳統的黑白、銳利的英文字體顯示和點陣漢字顯示。
由于屏幕的像素有限,矢量字型的縮放需要有更多的考慮,例如當一條線位在兩個像素格子中間時,
該取左邊的格子還是右邊的格子? 如果這方面的控制沒有做好,就常常會出現字型的襯線沒有對齊,
或是小字歪七扭八的情況。Hinting是內嵌在字體文件中的額外信息,它告訴渲染引擎該如何處理這
些細節的部份,使得矢量字在小字的時候也能夠好看。
因為中文的筆畫繁多,在字號更小的情況下根本無法顯示全部的筆畫,這時候還需要設計師在不影
響整體的情況下,對筆畫進行取舍,去掉一些不影響識別的筆畫,否則這個文字就會因糊成一團無
法識別。 Hinting調整的范圍需要涵蓋各級小字號,一般最少要包括 9px - 18px 這個常用的字號
區間。這種Hinting,即使是對于非常有經驗的設計師,也是非常高難度而且費時費力的工作。
我們知道英文只有 26 個字母,但是對于中文的漢字情況就復雜的多了,僅僅是最常用的漢字就有
6000 個,然后為了在簡繁體混排時候能完美的顯示,就必須同時包含繁體和簡體兩套字符,再加上
眾多的不常用但是會在古籍文獻中非常重要的生僻字,一套比較完整的大字符集字庫所包含的字符
數目將接近 3 萬個。僅僅是這矢量造字的工作就是非常浩大的。
這還不算,作為一套功能完整的正文字體,還需要考慮到斜體和粗體的顯示。所有的斜體狀態,也
同樣必須由設計師對不同的字號指定不同的Hinting,否則就會有顯示問題,因此要開發一套優秀的
中文大型字庫,耗費的人力物力是驚人的。
安裝字體
前言當中我們已經討論過X中使用的兩種字體子系統,那么如何將我們的新字體分別加入到里面去
呢?注意,在這里我們先只討論安裝的問題,就是讓我們的新字體能夠被識別并加入到這兩個字體
子系統中可供應用程序選擇使用。具體如何讓不同類型的應用程序使用到并且盡可能為了完美而做
的一些參數調整工作將是下節的目標。
為X11的核心字體子系統安裝新字體
? X11的核心字體子系統安裝新字體
安裝的步驟分為兩步,第一個步當然是先拿到字體文件并且將其放入到我們的系統目錄中。理論上
說你把這些文件放在哪里都行,???????????? 但是最好還是將新加入的字體文件跟原始的X11核心字體集中放置比
較好。字體文件本身可以網上下載也可以從你的windows系統中間直接拷貝過來使用。
1.安裝點陣字體
1.安裝點陣字體
X同時支持跨平臺的點陣字體格式BDF和效率更為高效一些的PCF格式。一般來說點陣字體是以BDF格
式發布的,所以你可以用bdftopcf命令將其轉換成PCF后再使用,當然你也可以不必這么做。當轉換
完成以后,你也可以用gzip來壓縮一下使其變成.pcf.gz,然后再拷貝到任意的一個目錄中,比如
/usr/local/share/fonts/bitmap/,然后切換到該目錄下用mkfontdir命令生成fonts.dir文件。這
個命令會掃描當前目錄下的所有文件,自動識別出里面的字體并且在分析之后給每一個字體都取一
個XLFD字體名(這個名字很長包含了各種相關信息,比如制造商、字體字號、解析度、字間距、字
符集等)和其它相關信息或者參數(比如所屬的文件名、是否傾斜、是否加粗等等)這個fonts.dir
就像該目錄下所有字體文件的索引數據庫一樣,通過它能夠獲得該目錄下所有字體的信息并且定位
到對應的文件。
準備好這些以后下一步就是要讓X知道這個目錄以及這個索引文件的存在了。????????????????????? 有兩種方式一種是臨時
性的,以Session為單位,利用xset命令。不是很常用,所以就不贅述。另外一種是永久性的,將對
應的路徑信息加入到/etc/X11/xorg.conf的Section “Files”中即可。類似如下這樣:
Section “Files”
???????? FontPath "/usr/local/fonts/Type1"
???????? ...
???????? FontPath "/usr/local/fonts/bitmap"
End Section
不過在Ubuntu8.10中似乎已經找不到對應的Section ”Files”了,我查閱了相關的資料,似乎Ubuntu
8.10減少了對xorg.conf的依賴,對于硬件設備這一塊盡可能都自動探測和設置了,有興趣的可以去
研究一下HAL,Ubuntu8.10是利用fdi配置文件而非xorg.conf了。對于FontPath,原來的那些核心字
體路徑都從xorg.conf中移除了,但是X11仍然是支持的(從log文件可以看出來)而且我手工在
xorg.conf做過實驗,??? 從log文件可以看出來把字體加入到X11核心字體子系統依然是通過上面說的這
個方法。
2.安裝矢量字體
2.安裝矢量字體
矢量字體的安裝跟點陣字體的安裝非常相似。主要步驟也是先準備好字體文件,然后拷貝到某個目
錄中然后生成索引,最后把該目錄路徑加入到xorg.conf中去就可以了。但是要注意一點區別,在生
成索引的時候,針對點陣字體我們是用的mkfontdir生成了fonts.dir。但是對于矢量字體我們必須
先用mkfontscale(不需要任何參數,直接切換到包含字體的目錄打入運行)生成fonts.scale,然
后再運行mkfontdir生成fonts.dir索引文件。????????? 之所以需要這樣是因為mkfontdir不能直接從矢量字體
文件生成對應的索引文件,而mkfontscale可以。Mkfontdir運行以后會把mkfontscale生成的過渡性
文件fonts.scale變成fonts.dir。如果該目錄里面只有矢量字體,那么fonts.dir跟fonts.scale是
完全一樣的,你也可通過改名將fonts.scale變成fonts.dir,但是如果矢量點陣同時存在,我想這
兩個文件一定是有區別的,估計fonts.scale里面只有矢量字體的信息,fonts.dir是包括點陣和矢
量字體的。
為X11的xft字體子系統安裝新字體
? X11的xft字體子系統安裝新字體
相較于前面而言,為xft字體子系統安裝新字體要容易一些。只需要把對應的字體文件拷貝到指定字
體目錄中并且讓系統重建一下字體列表就可以了。我們前面說過xft字體子系統是通過fontconfig
來搜索匹配字體的。Fontconfg會去從/usr/X11R6/lib/X11/lib/fonts/以及~/.fonts目錄下搜索新
的字體文件。其實如果你要重新隨便再建一個路徑也是可以的,那你就要去修改fontconfig的配置
文件。不過個人覺得沒有這個必要,字體文件放在一塊比較好。因此把對應的文件拷貝到上面任何
一個目錄中就可以了。Fontconfig會在下一個合適的時機發現這些新字體并且更新它自己的字體列
表索引。不過你也可以用命令fc-cache來強制fontconfig現在就做這個動作,這樣立馬所有利用xft
字體子系統的軟件都能夠在字體選擇中找到這些新加入的字體格式。??????????????????????????? 另外你可以利用fc-list來查看
fontconfig的字體列表。
應用和調整字體
在我們把點陣或者矢量字體爭正確安裝之后只是完成了第一部分。通過安裝,系統以及應用軟件都
已經能夠有能力來使用這些字體了,可是有能力不等于已經施展了該能力。同時字體文件本身并不
是十分完善,比如某些字體顯示英文好看,某些字體顯示中文好看,或者還有其它的一些個性需求,
所以需要在字體配置文件中做一些手工的調整達到我們的目的。
關于字體配置文件
核心X11字體子系統通常都是gtk1.x的應用程序在使用,對應的字體配置信息是在/etc/gtk/gtkrc
中設置和調整的。對于gtk2.x的應用程序則是在/etc/gtk2.0/gtkrc中。(請注意具體的文件跟你所
處的環境有關,比如如果你的locale是zh_CN,那么對應的文件可能是gtkrc.zh_CN)另外gtk2.0的
應用程序如果要使用xft需設置環境變量GDK_USE_XFT=1,否則也是使用的核心X11字體。不過要注意
的是如果找不到以上路徑可能該發行版已經不再支持或者不推薦使用了。畢竟是已經過時的了,比
如在我的Ubuntu8.10里面就已經找不到/etc/gtk這個目錄了。??????????????? 對于gtk2.2以上的Gnome應用程序或者
基于qt的KDE應用程序都是默認使用fontconfig來配置字體的。fontconfig有三個配置文件分別是
/etc/fonts/fonts.conf, /etc/fonts/local.conf 以及~/.fonts/.fonts.conf。要注意最好針對你
的系統man fontconfig具體查看一下,一般來說/etc/fonts/fonts.conf是全局的配置文件,
~/.fonts/.fonts.conf是本地用戶的。至于那個local.conf有的發行版已經去掉了,但是如果你添
加上仍然支持。所以請一定man一下。我個人的建議是盡可能把對字體配置的修改在
~/.fonts/.fonts.conf中進行。該文件是被全局的/etc/fonts/fonts.conf文件include在內的,所
以效果是一樣的。如果你有多個配置文件都要被使用,你可以在~/.fonts/.fonts.conf里面再分別
include進來。因為在全局配置文件中修改有可能在升級之后該文件就被替換掉了,所以請不要像有
些美化教程說的那樣去修改局配置文件/etc/fonts/fonts.conf。
正是因為應用程序類別有分這么多種,而且對應調整字體的配置文件又有好幾個,所以在某某應用
程序中沒法找到某個自以為已經成功安裝了的字體,或者已經修改了配置文件但是沒有效果的情況
經常被初學者碰到。請在碰到類似情況的時候先確認該應用程序是基于什么開發的,是Gtk1.x還是
Gtk2.0或者Gtk2.2以上的,還是Qt?字體文件是否針對以上類型正確安裝到了對應的字體子系統
中?(核心X11?xft?)并且還要確保系統已經識別并刷新過了。最后要確認所修改的字體配置文
件是否跟該應用程序的類型所匹配。不要在網上搜索出來某某大俠修改了fonts.conf使得宋體可用
了,你就依葫蘆畫瓢想用同樣的方式讓你的xmms也能使用宋體。這是不可能的,因為xmms是gtk1.x
的,它是使用核心字體的,宋體添加到xft中是沒辦法讓xmms找到的更別說使用了,而且對應的配置
信息應該是/etc/gtk/gtkrc。
如何讀懂并能自己修改配置文件
任何 fontconfig 配置文件,都被包含在 XML 結構之中:(不要跟我說不知道什么是XML,如果真
不知道那就是普通的文本文件,但是具有某種特殊邏輯格式)
?????? <?xml version="1.0"?>
?????? <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
?????? <fontconfig>
?????? ...
??????? </fontconfig>
我們之前提到過,應用程序在需要字體的時候會向xft來請求,xft會讓fontconfig來匹配尋找到系
統里面最接近該需求的字體,然后才由渲染模塊完成相應動作后交由X去顯示出來。也就是說
fontconfig將會有一個輸入,而且不管找到與否都會有一個輸出。在這里我們可以簡單的理解這個
輸入其實就是一個字體屬性列表,而這個輸出就是系統能提供的最接近的字體屬性列表。既然
fontconfig有輸入,所以為了達到我們的特殊目的,使得匹配能夠按照我們的需求來進行就需要對
這個輸入先做一些修改然后再繼續。再舉個例子,比如系統在匹配過程中可能需要和系統內部的字
體列表逐一去比較,一旦找到符合要求的就返回不再繼續了,但是有可能這個匹配從人的視覺角度
來說效果并不好,這個時候我們就需要讓效果好的那個字體先被匹配并且命中返回,因此可能需要
對匹配的順序做一些調成。剛才我們說了fontconfig的輸出也是一個字體屬性,為了使顯示效果好,
我們對這個輸出也需要修改,比如在某些特定尺寸關閉字體的反鋸齒使用點陣(矢量字體文件里面
有些也內嵌某些字號的點陣)等等,所有這些動作都可以在配置文件中做到。
我們不妨用windows的顯示效果做為我們的目標,??????????? 畢竟微軟耗費了大量的人力物力才使得界面字體如
此美觀,而且也適應了,因此先看看windows里面是怎么做到的。
字體名稱??????????????????????? 版本 反鋸齒(AA)?? 微調(Hinting) AA + Hinting
Andale Mono???????????????? 2.00 0-6???? 7-20??????? 21+
Arial?????????????????????? 2.82 0-6???? 7-13??????? 14+
Arial Black???????????????? 2.35 0-6???? 7-12??????? 13+
Arial Bold????????????????? 2.82 0-6???? 7-8???????? 9+
Arial Bold Italic?????????? 2.82 0-6???? 7-8???????? 9+
Arial Italic??????????????? 2.82 0-6???? 7-13??????? 14+
Comic Sans MS?????????????? 2.10 0-6???? 7-11??????? 12+
Comic Sans MS Bold????????? 2.10 0-6???? 7-8???????? 9+
Courier New???????????????? 2.82 0-6???? 7-27??????? 28+
Courier New Bold??????????? 2.82 0-6???? 7-11??????? 12+
Courier New Bold Italic???? 2.82 0-6???? 7-12??????? 13+
Courier New Italic????????? 2.82 0-6???? 7-27??????? 28+
Georgia???????????????????? 2.05 0-6???? 7-12??????? 13+
Georgia Bold??????????????? 2.05 0-6???? 7-12??????? 13+
Georgia Bold Italic???????? 2.05 0-6???? 7-12??????? 13+
Georgia Italic????????????? 2.05 0-6???? 7-12??????? 13+
Impact????????????????????? 2.35 0-6???? 7-16??????? 17+
Times New Roman???????????? 2.82 0-6???? 7-13??????? 14+
Times New Roman Bold??????? 2.82 0-6???? 7-10??????? 11+
Times New Roman Bold Italic 2.82 0-6???? 7-13??????? 14+
Times New Roman Italic????? 2.82 0-6???? 7-15??????? 16+
Trebuchet MS??????????????? 1.22 0-6???? 7-12??????? 13+
Trebuchet MS Bold?????????? 1.22 0-6???? 7-8???????? 9+
Trebuchet MS Bold Italic??? 1.22 0-6???? 7-8???????? 9+
Trebuchet MS Italic???????? 1.22 0-6???? 7-12??????? 13+
Verdana???????????????????? 2.35 0-6???? 7-12??????? 13+
Verdana Bold??????????????? 2.35 0-6???? 7-12??????? 13+
Verdana Bold Italic???????? 2.35 0-6???? 7-12??????? 13+
Verdana Italic????????????? 2.35 0-6???? 7-12??????? 13+
Webdings??????????????????? 1.03 0-6???? 7-21??????? 22-1536 1537+
Tahoma????????????????????? 3.09 0-6???? 7-12??????? 13+
Tahoma Bold???????????????? 3.09 0-6???? 7-12??????? 13+
SimSun??????????????????? 3.03??? 0-6?????????? 7-18???????? 19+
MingLiU?????????????????? 5.03??? 0-6?????????? 7-36???????? 37+
Arial Unicode MS????????? 1.01??? 0-6?????????? 7-18???????? 19+
MS 雅黑???????????????????? 0.72??? 0-6?????????? 7-17???????? 18+
MS 雅黑 Bold??????????????? 0.72??? 0-6??? 7-13??????????? 14+
Segoe UI????????????????? 0.98??? 0-6?????????? 7-14???????? 15+
Segoe UI Bold???????????? 0.98??? 0-6?????????? 7-14???????? 15+
Segoe UI Italic?????????? 0.96??? 0-6?????????? 7-14???????? 15+
Segoe UI Bold Italic????? 0.95??? 0-6?????????? 7-14???????? 15+
這里你或許要問難道對于每個不同的字體(黑體,斜體,黑斜體都算是不同字體)都要一個個去定
制,對每個不同的字號大小分別告訴系統該不該打開AA,該不該微調?對!就是如此。而且還不僅
如此,我之前說過了,某些情況下我們使用矢量字體時還需要使用內嵌的點陣字體而不是去縮放。
如此大量的配置信息這要寫到什么時候去?而且還要會寫才行啊。
原理基本都講完了,剩下的就是如何操作了,你可以去詳細閱讀一下fontconfig的man page。不過
為了節省時間可以參考quanliking兄的一篇帖子,他幫我們把這些配置都寫好了,實在是感激。請大家參
閱該鏈接,弄懂了的部分可以節省時間直接跳過了,個人推薦從:“三、字體配置”開始往下繼續,別忘了表示
支持一下頂一下本帖哦,當然還有quanliking兄的,呵呵:
參考鏈接:[url]http://www.linuxsir.org/bbs/showthread.php?t=266659[/url]









本文轉自 h2appy? 51CTO博客,原文鏈接:http://blog.51cto.com/h2appy/126821,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的Ubuntu 8.10字体美化原理初步探索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。