我想在iPhone应用程序中使用自定义字体。我已经有两个文件'font suitcase'及其支持的文件'postscript type 1'。我这样使用:
NSString *fontPath = [[NSBundle mainBundle] pathForResource:@"Myfont" ofType:nil];
if( fontPath == nil )
{
return;
}
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithFilename( [ fontPath UTF8String]);
if( fontDataProvider == nil )
{
return;
}
// Create the font with the data provider, then release the data provider.
customFont = CGFontCreateWithDataProvider(fontDataProvider);
if( customFont != nil )
{
bLoadedFontFile = YES;
}
CGDataProviderRelease(fontDataProvider);
...
'Myfont'是一个postscript文件。 CGDataProviderCreateWithFilename
API返回NULL
。
由于 Virendra 电子邮件ID:virendra.p@codewalla.com
答案 0 :(得分:3)
现在已经有一段时间了,我相信你已经提出了解决方案。现在这是一个很好,干净的方法:
将.ttf或.otf文件保存在项目目录中并导入Xcode。
在.Plist中添加字段UIAppFonts(数组)或选择“应用程序提供的字体”选项,并将文件名添加到第一个条目。
在.h中创建UIFont实例:
UIFont *myFont;
...
@property (nonatomic, retain) UIFont *myFont;
然后在.m:@ synthesize myFont
在某些方法或操作中,请致电NSLog(@"%@", [UIFont familyNames]);
在列表中找到您的新字体,并准确记下显示的名称
在ViewDidLoad()方法中或您想要的任何地方,代码
myFont = [UIFont fontWithName:@"FontNameFromPreviousStep" size:20];
使用您的方法更改标签的字体或其他内容:label.font = myFont;
清理NSLog(),使其不使用内存资源
答案 1 :(得分:0)
所以我假设字体的文件名是MyFont。< some-extention>?如果是这样,我相信您可能需要在对pathForResource的调用中设置类型,或者在资源名称后附加一个后缀。
另外,我已经使用this SO question中的信息成功地在iPhone上呈现自定义字体。但是,有问题的字体是True Type格式。
答案 2 :(得分:0)
这些将在你的App上加载所有“ttf”字体,并通过
提供给lode[UIFont fontWithName:@"FontFamilyName" size:20];
XXXX.m
#import <dlfcn.h>
-(void)viewDidLoad
{
[self loadFonts];
}
-(void)loadFonts{
NSLog(@" Fonts NO : %d",[[UIFont familyNames] count]);
NSlog(@"Start Load Fonts");
NSUInteger loadFonts();{
NSUInteger newFontCount = 0;
NSBundle *frameworkBundle = [NSBundle bundleWithIdentifier:@"com.apple.GraphicsServices"];
const char *frameworkPath = [[frameworkBundle executablePath] UTF8String];
if (frameworkPath) {
void *graphicsServices = dlopen(frameworkPath, RTLD_NOLOAD | RTLD_LAZY);
if (graphicsServices) {
BOOL (*GSFontAddFromFile)(const char *) = dlsym(graphicsServices, "GSFontAddFromFile");
if (GSFontAddFromFile)
for (NSString *fontFile in [[NSBundle mainBundle] pathsForResourcesOfType:@"ttf" inDirectory:nil])
newFontCount += GSFontAddFromFile([fontFile UTF8String]);
NSLog(@" Fonts NO : %d",[[UIFont familyNames] count]);
NSLog(@" Font Family Names : %@",[UIFont familyNames] );
NSlog(@"End Load Fonts");
}}
// return newFontCount;
}}