从ttf文件获取字体 [英] Get font face from ttf file

查看:1383
本文介绍了从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆