3

我想创建一个使用用户自定义字体的应用程序,因此我希望我的应用程序在运行时加载 ttf 文件。我熟悉通过 UIAppFonts 键 添加自定义字体,如在 iphone 上添加自定义字体中所述。如果提供用户创建的自定义版本,大概我不会成功创建可以由我的应用程序换出的占位符自定义字体?

4

1 回答 1

3

我使用的字体文件是这样的:http ://www.webpagepublicity.com/free-fonts/a/Almagro%20Regular.ttf

我使用以下代码做到了:

 CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename([fontFilepath UTF8String]);

 // Create the font with the data provider, then release the data provider.
CGFontRef customFont =  CGFontCreateWithDataProvider(fontDataProvider);
CGDataProviderRelease(fontDataProvider);

CFErrorRef error = nil;
CTFontManagerRegisterGraphicsFont(customFont, &error);

CGFontRelease(customFont);

if (error != nil)
{
    NSError* err = (__bridge NSError*)error;
    NSLog(@"error code %d desc: %@",err.code, [err description]);
}

UIFont* f = [UIFont fontWithName:@"Almagro" size:14.0];

不过也有一些陷阱。您需要知道字体名称,因为它可能与文件名略有不同。在我的示例中,文件名是“Almagro Regular.ttf”,但字体名称只是“Almagro”。在另一个论坛上,有人说您需要注意名称中带有空格的字体,因为像“Sans Serif”这样的字体将被注册为 UIFont fontWithName:size 的“SansSerif”:

让我知道它是否有效。

于 2012-08-07T15:24:52.283 回答