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