為 iOS 項(xiàng)目嵌入 Freetype
Freetype 是一個(gè)用 C 語(yǔ)言編寫(xiě)的字體庫(kù)。從 OpenGL 的角度來(lái)看留荔,它可以為任何字符串的任何字體大小動(dòng)態(tài)創(chuàng)建 alpha 紋理。
第 1 步:將原始的 freetype 源代碼嵌入到代碼中確實(shí)很痛苦。對(duì)我們來(lái)說(shuō)幸運(yùn)的是,一個(gè)人完成了這項(xiàng)任務(wù)并在 github 上發(fā)布了代碼伸眶。 https://github.com/cdave1/freetype2-ios。因此刽宪,第 1 步是檢查該代碼厘贼。
第 2 步:創(chuàng)建您的新項(xiàng)目并將第 1 步下載的項(xiàng)目添加到您的項(xiàng)目中。
檢查 Xcode 是否已經(jīng)為您創(chuàng)建了兩個(gè)方案圣拄。
第 3 步:轉(zhuǎn)到您的項(xiàng)目設(shè)置嘴秸,選擇您的目標(biāo)并單擊“Build Phases”。在“Target Dependencies”下添加來(lái)自 freetype2 項(xiàng)目的靜態(tài)庫(kù)售担。
這將為您構(gòu)建靜態(tài)庫(kù)赁遗,而無(wú)需您顯式構(gòu)建它。
第 4 步:轉(zhuǎn)到“Link Binary with Libraries”并添加靜態(tài)庫(kù)族铆。
這將構(gòu)建 libFreetype2.a 并將其放在產(chǎn)品目錄中岩四。
第5步:接下來(lái),我們需要在產(chǎn)品目錄下添加freetype頭文件哥攘。為什么剖煌?因?yàn)椋琗code 項(xiàng)目被配置為自動(dòng)在產(chǎn)品目錄中查找頭文件逝淹,而無(wú)需我們指定搜索路徑耕姊。此外,如果將來(lái)我們對(duì) freetype 項(xiàng)目頭文件進(jìn)行一些更改(不太可能)栅葡,這些更改將在我們的產(chǎn)品目錄中自動(dòng)更新茉兰。
現(xiàn)在,打開(kāi) freetype2 項(xiàng)目設(shè)置并轉(zhuǎn)到“Build Phases”欣簇。單擊“Add Build Phase”和“Add Copy Files”
第 6 步:將“Destination”更改為“Products Directory”」媪常現(xiàn)在,這是 Xcode 最糟糕的部分熊咽,我們需要從 freetype2 項(xiàng)目中復(fù)制我們的頭文件莫鸭,但是這樣做會(huì)使復(fù)制的目錄結(jié)構(gòu)變平。
解決此問(wèn)題的一種方法是從 freetype2 項(xiàng)目中刪除包含文件并將它們?cè)俅翁砑訛椤癋older reference”
第 7 步:將include文件夾從 freetype2 項(xiàng)目拖到“Copy Files”階段横殴。(很重要被因,未加入,無(wú)法調(diào)用對(duì)應(yīng)的類(lèi))
如果到目前為止您已經(jīng)按照正確的方式進(jìn)行操作,那么您的項(xiàng)目應(yīng)該可以正常構(gòu)建梨与。它應(yīng)該編譯 freetype 目標(biāo)堕花,復(fù)制頭文件,然后編譯和鏈接您的項(xiàng)目蛋欣。
產(chǎn)品目錄應(yīng)該類(lèi)似于
對(duì)于最終測(cè)試航徙,嘗試將以下代碼行添加到您的 main.m 文件并編譯代碼:
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import <ft2build.h>
#import <freetype/freetype.h>
#import <assert.h>
voidtest_freetype(){
????FT_Librarylibrary;
????FT_Errorerror=FT_Init_FreeType(&library);
????assert(!error);
????FT_Done_FreeType(library);
}
intmain(intargc,char*argv[]){
????test_freetype();
????@autoreleasepool{returnUIApplicationMain(argc,argv,nil,NSStringFromClass([AppDelegateclass]));
????}
}
原文引用地址https://whackylabs.com/gamedev/ios/2013/09/13/freetype-in-ios/
.a編譯相關(guān)設(shè)置?https://blog.csdn.net/qq_34759481/article/details/83541346
?編譯使用的時(shí)候需要加上一些附加依賴(lài)庫(kù):libbz2.tbd,libz.tbd