我希望创建一个应用程序,使用用户自定义的字体,因此我希望我的应用程序能够在运行时加载ttf文件。 我熟悉通过UIAppFonts密钥添加自定义字体,如在iPhone上添加自定义字体中所讨论的那样。如果提供了用户创建的自定义版本,我是否可以成功创建一个占位符自定义字体,供我的应用程序交换?
我希望创建一个应用程序,使用用户自定义的字体,因此我希望我的应用程序能够在运行时加载ttf文件。 我熟悉通过UIAppFonts密钥添加自定义字体,如在iPhone上添加自定义字体中所讨论的那样。如果提供了用户创建的自定义版本,我是否可以成功创建一个占位符自定义字体,供我的应用程序交换?
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”这样的字体将被注册为“SansSerif”用于UIFont fontWithName:size:
如果有效,请告诉我。