从ttf文件获取字体 [英] Get font face from ttf file
本文介绍了从ttf文件获取字体的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我的iOS应用程序中,我使用从文件动态加载的自定义字体。
要在代码中使用它们,我需要知道加载的字体的族。那么,有没有办法做到这一点?
UPDATE:
不能以某种方式硬编码字体家族,导致我的应用程序从服务器加载它。当然,还有一种方法可以在服务器响应中传递字体系列,但现在我正在寻找一个不影响服务器的更好的版本(不需要改变它)。
解决方案
字体加载我做了...
NSData * fontData = [NSData dataWithContentsOfFile:filePath];
if(fontData){
//从加载的数据创建字体并获取其后缀名称
CGDataProviderRef fontDataProvider = CGDataProviderCreateWithCFData((CFDataRef)fontData);
CGFontRef loadedFont = CGFontCreateWithDataProvider(fontDataProvider);
NSString * postScriptName =(NSString *)CGFontCopyPostScriptName(loadedFont);
//如果具有相同脚本名称的字体尚未注册 - 请执行
if(postScriptName&&![UIFont fontWithName:postScriptName size:10]){
NSError *错误;
if(!CTFontManagerRegisterGraphicsFont(loadedFont,(CFErrorRef *)& error)){
NSLog(@Can not load font:%@,error);
}
}
CGFontRelease(loadedFont);
CGDataProviderRelease(fontDataProvider);
}
In my iOS app I use custom fonts, dynamically loaded from files.
To use them in code, I need to know loaded fonts' families. So, is there any way to do it?
UPDATE:
I can't somehow hardcode font families, cause my app loads it from server. Of course, there is a way to pass font families in server response, but for now I'm looking for a better version that doesn't influence the server (doesn't need to change it).
解决方案
Font loading I did...
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);
}
这篇关于从ttf文件获取字体的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文