为 iOS 项目嵌入 Freetype
Freetype 是一个用 C 语言编写的字体库。从 OpenGL 的角度来看,它可以为任何字符串的任何字体大小动态创建 alpha 纹理。
第 1 步:将原始的 freetype 源代码嵌入到代码中确实很痛苦。对我们来说幸运的是,一个人完成了这项任务并在 github 上发布了代码。 https://github.com/cdave1/freetype2-ios。因此,第 1 步是检查该代码。
第 2 步:创建您的新项目并将第 1 步下载的项目添加到您的项目中。
检查 Xcode 是否已经为您创建了两个方案。
第 3 步:转到您的项目设置,选择您的目标并单击“Build Phases”。在“Target Dependencies”下添加来自 freetype2 项目的静态库。
这将为您构建静态库,而无需您显式构建它。
第 4 步:转到“Link Binary with Libraries”并添加静态库。
这将构建 libFreetype2.a 并将其放在产品目录中。
第5步:接下来,我们需要在产品目录下添加freetype头文件。为什么?因为,Xcode 项目被配置为自动在产品目录中查找头文件,而无需我们指定搜索路径。此外,如果将来我们对 freetype 项目头文件进行一些更改(不太可能),这些更改将在我们的产品目录中自动更新。
现在,打开 freetype2 项目设置并转到“Build Phases”。单击“Add Build Phase”和“Add Copy Files”
第 6 步:将“Destination”更改为“Products Directory”。现在,这是 Xcode 最糟糕的部分,我们需要从 freetype2 项目中复制我们的头文件,但是这样做会使复制的目录结构变平。
解决此问题的一种方法是从 freetype2 项目中删除包含文件并将它们再次添加为“Folder reference”
第 7 步:将include文件夹从 freetype2 项目拖到“Copy Files”阶段。(很重要,未加入,无法调用对应的类)
如果到目前为止您已经按照正确的方式进行操作,那么您的项目应该可以正常构建。它应该编译 freetype 目标,复制头文件,然后编译和链接您的项目。
产品目录应该类似于
对于最终测试,尝试将以下代码行添加到您的 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编译相关设置 https://blog.csdn.net/qq_34759481/article/details/83541346
编译使用的时候需要加上一些附加依赖库:libbz2.tbd,libz.tbd