版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、《The design of FreeType 2》中譯版 》中譯版介紹 介紹這份文檔提供了 FreeType 2 函數(shù)庫設(shè)計(jì)與實(shí)現(xiàn)的細(xì)節(jié)。本文檔的目標(biāo)是讓開發(fā)人員更好的 理解 FreeType 2 是如何組織的,并讓他們擴(kuò)充、定制和調(diào)試它。 首先,我們先了解這個(gè)庫的目的,也就是說,為什么會(huì)寫這個(gè)庫: * 它讓客戶應(yīng)用程序方便的訪問字體文件,無論字體文件存儲(chǔ)在哪里,并且與字體格式無 關(guān)。 * 方便的提取全局字體數(shù)據(jù),這些數(shù)據(jù)在平常的字
2、體格式中普遍存在。 (例如:全局度量標(biāo) 準(zhǔn),字符編碼/字符映射表,等等) * 方便的提取某個(gè)字符的字形數(shù)據(jù)(度量標(biāo)準(zhǔn),圖像,名字,其他任何東西) * 訪問字體格式特定的功能(例如,SFNT 表,多重控制,OpenType 輪廓表)Freetype 2 的設(shè)計(jì)也受如下要求很大的影響: * 高可移植性。這個(gè)庫必須可以運(yùn)行在任何環(huán)境中。這個(gè)要求引入了一些非常激烈的選 擇,這些是 FreeType2 的低級(jí)系統(tǒng)界面的一部分。 * 可擴(kuò)展性。
3、新特性應(yīng)該可以在極少改動(dòng)庫基礎(chǔ)代碼的前提下添加。這個(gè)要求引入了非常 簡(jiǎn)單的設(shè)計(jì):幾乎所有操作都是以模塊的形式提供的。 * 可定制。它應(yīng)該能夠很容易建立一個(gè)只包含某個(gè)特定項(xiàng)目所需的特性的版本。當(dāng)你需要 集成它到一個(gè)嵌入式圖形庫的字體服務(wù)器中時(shí),這是非常重要的。 * 簡(jiǎn)潔高效。這個(gè)庫的主要目標(biāo)是只有很少 cpu 和內(nèi)存資源的嵌入式系統(tǒng)。 這份文檔的其他部分分為幾個(gè)部分。首先,一些章節(jié)介紹了庫的基本設(shè)計(jì)以及 Freetype 2 內(nèi)部對(duì)象
4、/數(shù)據(jù)的管理。 接下來的章節(jié)專注于庫的定制和與這個(gè)話題相關(guān)的系統(tǒng)特定的界面,如何寫你自己的模塊 和如何按需裁減庫初始化和編譯。一、組件和 一、組件和 API FT 可以看作是一組組件,每個(gè)組件負(fù)責(zé)一部分任務(wù),它們包括 * 客戶應(yīng)用程序一般會(huì)調(diào)用 FT 高層 API,它的功能都在一個(gè)組件中,叫做基礎(chǔ)層。 * 根據(jù)上下文和環(huán)境,基礎(chǔ)層會(huì)調(diào)用一個(gè)或多個(gè)模塊進(jìn)行工作,大多數(shù)情況下,客戶應(yīng)用 程序不知道使用那個(gè)模塊。 * 基礎(chǔ)層還包含一組例
5、程來進(jìn)行一些共通處理,例如內(nèi)存分配,列表處理、io 流解析、固 定點(diǎn)計(jì)算等等,這些函數(shù)可以被模塊隨意調(diào)用,它們形成了一個(gè)底層基礎(chǔ) API。 如下圖,表明它們的關(guān)系:請(qǐng)注意一些要點(diǎn): * 一個(gè)可選的組件可以用在高層 API,也可以用在底層 API,例如上面的 ftglyph; * 有些可選組件使用模塊特定的接口,而不是基礎(chǔ)層的接口,上例中,ftmm 直接訪問 Type1 模塊來訪問數(shù)據(jù); * 一個(gè)可替代的組件能夠提供一個(gè)高層 AP
6、I 的函數(shù),例如,ftinit 提供 FT_Init_FreeType() 二、公共對(duì)象和類 二、公共對(duì)象和類 1、FT 中的面向?qū)ο?中的面向?qū)ο?雖然 FT 是使用 ANSI C 編寫,但是采用面向?qū)ο蟮乃枷?,是這個(gè)庫非常容易擴(kuò)展,因此, 下面有一些代碼規(guī)約。 1. 每個(gè)對(duì)象類型/類都有一個(gè)對(duì)應(yīng)的結(jié)構(gòu)類型和一個(gè)對(duì)應(yīng)的結(jié)構(gòu)指針類型,后者稱為類型/ 類的句柄類型 設(shè)想我們需要管理 FT 中一個(gè) foo 類的對(duì)象,可以定義如下 t
7、ypedef struct FT_FooRec_* FT_Foo; typedef struct FT_FooRec_ { // fields for the foo class … }FT_FooRec; 依照規(guī)約,句柄類型使用簡(jiǎn)單而有含義的標(biāo)識(shí)符,并以 FT_開始,如 FT_Foo,而結(jié)構(gòu)體使 用相同的名稱但是加上 Rec 后綴。Rec 是記錄的縮寫。每個(gè)類類型都有對(duì)應(yīng)的句柄類型; 2. 類繼承通過將基類包裝到一個(gè)新類中實(shí)現(xiàn),例如,
8、我們定義一個(gè) foobar 類,從 foo 類繼 承,可以實(shí)現(xiàn)為 typedef struct FT_FooBarRec_ * FT_FooBar; typedef struct FT_FooBarRec_ { FT_FooRec root; //基類 }FT_FooBarRec; 可以看到,將一個(gè) FT_FooRec 放在 FT_FooBarRec 定義的開始,并約定名為 root,可以確 保一個(gè) foobar 對(duì)象也是一個(gè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于FreeType的ttf字體算法研究與應(yīng)用.pdf
- 畢業(yè)設(shè)計(jì)--機(jī)床的發(fā)展與使用
- 路面分析與設(shè)計(jì)系統(tǒng)使用說明
- c++課程設(shè)計(jì)---棧類的設(shè)計(jì)與使用
- 課程設(shè)計(jì)報(bào)告---實(shí)用工具的設(shè)計(jì)與使用
- c25噴射混凝土配合比設(shè)計(jì)與使用
- 教學(xué)空間的設(shè)計(jì)方法與功能使用研究
- 危險(xiǎn)化學(xué)品安全標(biāo)簽的設(shè)計(jì)與使用
- 貼片機(jī)的使用與維護(hù)畢業(yè)設(shè)計(jì)
- 體育設(shè)備使用管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn).pdf
- ups不間斷電源設(shè)計(jì)使用與維護(hù)
- 采煤機(jī)的使用與維護(hù)畢業(yè)設(shè)計(jì)
- 高中語文導(dǎo)學(xué)案設(shè)計(jì)與使用研究.pdf
- 采煤機(jī)的使用與維護(hù)畢業(yè)設(shè)計(jì)
- 體育設(shè)備使用管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(1)
- 輪胎使用與保養(yǎng)
- 禽類藥物使用方法與使用劑量
- 漢語課堂漫畫使用的教案設(shè)計(jì)與分析.pdf
- 服裝設(shè)計(jì)與工程專業(yè)(專科)課程使用教材
- 論新型手機(jī)支架的外觀設(shè)計(jì)與使用研究
評(píng)論
0/150
提交評(píng)論