最近學(xué)習(xí)狀態(tài)不佳,感覺什么都想做卻什么也做不下去,浮躁之極。大的庫一下子研究不下來,索性找一下小庫來看看。
游戲里面一般都涉及到文本、壓縮、圖像、腳本的概念,為了將來有機(jī)會研究游戲所以先下手這些小庫,不求甚解只求用好。
先從字體著手,F(xiàn)reeType字體作為一種字體文件編程開發(fā)包,廣泛易用在游戲里面。網(wǎng)上漢語資料比較少,只能看它的faq。翻譯了部分如下:
FreeType 2 Library
FAQ
(當(dāng)前下載地址:
http://sourceforge.net/project/showfiles.php?group_id=3157
版本
1、? FreeType2 是什么?
它是一個為各種應(yīng)用程序提供通用的字體文件訪問的軟件包。尤其值得注意的以下特性:
l???????? 提供統(tǒng)一的字體文件訪問接口。支持位圖和向量格式,包括 TrueType 、 OpenType 、 Typel 、 CID 、 CFF 、 Windows FON/FNT 、 X11 PCF 。
l???????? 提供高效反走樣的基于 256 灰度級的位圖字形的生產(chǎn)。
l???????? 模塊清晰,每種字體格式對于一個模塊。類庫的構(gòu)建可以按照你需要支持的格式進(jìn)行裁減以減小代碼尺寸。(最小的反走樣 FreeType 庫 <30Kb )
2、? FreeType2 能做什么?
FT2 已經(jīng)易用于許多領(lǐng)域。例如:
l???????? 圖形子系統(tǒng)和文本顯示庫
l???????? 文本排版(布局、分頁、渲染)
l???????? 字體識別和轉(zhuǎn)換工具
一般來說,該庫使得你能輕松的操縱字體文件。
3、? FreeType2 不能做什么?
FT2 并不包含大量豐富的高級特性,它只定位于出色的字體服務(wù)。也就是說下面的一些特性 FT2 類庫并不直接提供支持,然而你可以以它為基礎(chǔ)在上層進(jìn)行實(shí)現(xiàn):
l???????? 任意表面的文字渲染
FT2 不是圖形庫所以它僅支持兩種象素格式的文本渲染: 1-bit 的單色位圖和 8-bit 的灰度象素。
如果你需要繪制其它格式的表面(例如 24-bit RGB 象素),你就得選擇其它你喜愛的圖形庫來做。
注意:為了渲染向量輪廓文本而不是放走樣的象素,應(yīng)用程序可以提供自己的渲染回調(diào)以繪制或者直接組合反走樣文本到任意目標(biāo)表面。
l???????? 文本緩存
每次從字體中請求文本圖象, FT2 都要解析字體文件 / 流相關(guān)部分,通過它的字體格式進(jìn)行解釋。對于某些特殊格式可能會很慢包括像 TrueType (或者 Type1 )這樣的向量字體。
注意:自從
l???????? 文本布局
不支持文本布局操作。高級操作例如文本替換、字距調(diào)整、兩端調(diào)整等都不屬于字體服務(wù)本身職責(zé)。
4、? FreeType2 可移植性?
FT2 源碼可移植性很好由于以下原因:
l???????? 代碼書寫遵循 ANSI C 標(biāo)準(zhǔn)
l???????? 對于各種編譯警告我們都謹(jǐn)慎的避免。當(dāng)前代碼在很多編譯器上編譯通過且沒有產(chǎn)生一條警告。
l???????? 庫沒有使用任何硬編碼,是嵌入式系統(tǒng)開發(fā)的一個好的選擇。(例如它能夠直接在 ROM 中運(yùn)行)
同時(shí),我們盡最大努力確保庫的高效、緊湊和友好性。
5、? FreeType2 與 FreeType1.x 的區(qū)別?
最大的區(qū)別就是:
l???????? FT1 僅支持 TrueType 格式,而 FT2 支持很多格式。
l???????? FT2 APIs 比 FT1 APIs 簡單且強(qiáng)大。
l???????? FT1 包括 OpenType 文本布局處理擴(kuò)展,而 FT2 中則不包括而是移到獨(dú)立的工程里面―― FreeType Layout 。( FT 布局目前無法獲取)
6、? FreeType2 是否兼容 FreeType 1.x ?
FreeType2 不直接兼容 FreeType 1.x ,但是我們可以提供一個二進(jìn)制兼容層使得應(yīng)用程序重鏈接到新版本。我們最終放棄了這種想法因?yàn)閮蓚€版本可以共存在一個系統(tǒng)中。(沒有命名沖突)
FT2 API 比 1.x 簡單且強(qiáng)大,所以我們鼓勵你采用新版本,這樣可以使你減少很多不必要的工作。
7、? 是否可以使用 FreeType2 編輯字體或者創(chuàng)建新字體?
答案是明確的:不可以。因?yàn)樵搸煸O(shè)計(jì)明確,用較少代碼和內(nèi)存讀取字體文件。所以我們不打算以任何方式在字體引擎里面支持編輯或者創(chuàng)建功能,因?yàn)檫@樣將導(dǎo)致整個代碼重寫。這并不意味我們將來不會引入字體編輯 / 創(chuàng)建功能庫,這取決于需求(或者說有多少人愿意為此買單)。
在我們正式發(fā)布前不要在這方面進(jìn)行揣測,對我們而言這個項(xiàng)目存在其他一些更重要的部分需要解決(像文字布局、文本緩存)。
編譯 & 配置
1、? 如何編譯 FreeType2 庫?
可以采取多種編譯方式,在 freetype2/docs/build 下有詳細(xì)說明文檔。
這里介紹最簡單的基于
VS IDE
的編譯方式。
freetype\builds\win32\visualc
下有
VC6
和
VC7.1
的工作區(qū)文件。
VC6
打開后直接編譯,有幾個警告。
光看或許無法到感性認(rèn)識,于是來兩個demo。網(wǎng)上比較少,我是參考nehe教程寫的。總體來說會簡單使用了,如果想深入了解怕是非看他的document不可。
簡單使用示例



























































截圖:
導(dǎo)出的文字C
示例下載
目前還不知道如何顯示漢字。