在我的iOS应用我使用自定义字体,从文件动态加载。
要在代码中使用它们,我需要知道装载的字体的家庭。 那么,有没有办法做到这一点?
更新:
我不能以某种方式进行硬编码字体系列,从服务器引起我的应用程序加载它。 当然,是通过在服务器响应字体系列的一种方式,但现在我正在寻找一个更好的版本,不影响服务器(不需要去改变它)。
在我的iOS应用我使用自定义字体,从文件动态加载。
要在代码中使用它们,我需要知道装载的字体的家庭。 那么,有没有办法做到这一点?
更新:
我不能以某种方式进行硬编码字体系列,从服务器引起我的应用程序加载它。 当然,是通过在服务器响应字体系列的一种方式,但现在我正在寻找一个更好的版本,不影响服务器(不需要去改变它)。
字体加载我没有...
NSData *fontData = [NSData dataWithContentsOfFile:filePath];
if (fontData) {
// create font from loaded data and get it's postscript name
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((CFDataRef)fontData);
CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString *postScriptName = (NSString *)CGFontCopyPostScriptName(loadedFont);
// if the font with same postscript name wasn't already registered - do it
if (postScriptName && ![UIFont fontWithName:postScriptName size:10]) {
NSError *error;
if (!CTFontManagerRegisterGraphicsFont(loadedFont, (CFErrorRef *)&error)) {
NSLog(@"Can't load font: %@", error);
}
}
CGFontRelease(loadedFont);
CGDataProviderRelease(fontDataProvider);
}
在文档看到名为获取可用字体名称的部分。 你可以列出所有的姓氏,并希望家人的个人字体名称。 我通常只是暂停调试器和命令行调用的函数自己。 这是获取iOS版将使用名称最安全的方式。 或者你说的是下载字体和加载它们? 这将需要比只知道他们的名字了。
编辑好了,那么你正在下载的字体。 在这种情况下,你将不得不放到核心文本的世界。 请参见本参考上手(讲究所谓的功能“注册字体”)。 如果注册成功,然后它会显示使用上述方法。
我从堆栈溢出的地方得到这个代码。 希望能帮助到你。 它列出了所有加载的字体名称...
NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]];
NSArray *fontNames;
NSInteger indFamily, indFont;
for (indFamily=0; indFamily<[familyNames count]; ++indFamily) {
NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]);
fontNames = [[NSArray alloc] initWithArray:
[UIFont fontNamesForFamilyName:
[familyNames objectAtIndex:indFamily]]];
for (indFont=0; indFont<[fontNames count]; ++indFont) {
NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]);
}
}