天天看點

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][email protected][/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字型子系統

     核心字型子系統

請注意這裡說的是字型子系統而不是字型,因為這裡要說的是一種渲染字型的流程模式。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.點陣字型和矢量字型

點陣字庫是把每一個漢字都分成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的字型檔案

  擴充名為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)

  反鋸齒

這兩個術語是講字型渲染(就是把矢量字型顯示到螢幕上)時候用的一些技術。

在使用矢量字型的時候,我們會需要對漢字進行縮放。雖然理論上漢字的筆畫是圓滑的,但是由于

視覺的關系會産生鋸齒感。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.安裝點陣字型

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.安裝矢量字型

矢量字型的安裝跟點陣字型的安裝非常相似。主要步驟也是先準備好字型檔案,然後拷貝到某個目

錄中然後生成索引,最後把該目錄路徑加入到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,如需轉載請自行聯系原作者

繼續閱讀