2010-03-31 108 views
4

我在iPhone项目中使用FreeType2库,并且如果可能的话,我试图简单地从系统加载TTF文件。iPhone上字体的位置?

FT_Library library; 
FT_Face face; 
int error; 


error = FT_Init_FreeType(&library); 

if (error == 0) 
    printf("Initialized FreeType2\r\n"); /* Prints */ 

error = FT_New_Face(library, "/System/Library/Fonts/Helvetica.ttf", 0, &face); 

if (error == FT_Err_Cannot_Open_Resource) 
    printf("Font not found\r\n");   /* Prints */ 

该错误似乎是为没有找到文件。/System/Library/Fonts不是字体的位置?或者,iPhone应用程序根本就没有对该目录的任何读取权限。

谢谢!

+0

另外,大家都知道。我确实继续并在我的项目中添加了一个.ttf文件,以查看它是否会加载该文件,并且确实如此。我只是不确定是否系统字体指定不正确,或者我无法访问它。 – Kyle 2010-03-31 22:33:05

+0

我想使用FreeType是因为可移植性的原因。 – Kyle 2010-03-31 23:08:01

回答

3

要找到安装在设备上的字体,加载字体清单(一的plist):

NSDictionary *cgFonts = [NSDictionary dictionaryWithContentsOfFile:@"/System/Library/Fonts/CGFontCache.plist"]; 

一旦你解析它,你会发现你的字体条目:

Helvetica = "/System/Library/Fonts/Cache/Helvetica.ttf"; 
+0

找不到 – Kyle 2010-04-01 00:24:27

+0

http://modmyi.com/wiki/index.php/IPhone_Fonts 不知道这个网页有多精确,但这是我用作参考。 – Kyle 2010-04-01 00:27:47

+0

您可以使用本文中列出的代码始终获取可用字体:http://excitabyte.wordpress.com/2010/03/24/the-font-family-names-available-on-iphone-os/ – Zack 2010-04-01 00:49:03

2

他们要么在/System/Library/Fonts/要么是/System/Library/Fonts/Cache。但是,我怀疑您可能没有访问这些目录所需的权限。