码迷,mamicode.com
首页 > 移动开发 > 详细

IOS运行时动态注册字体

时间:2014-05-16 18:30:16      阅读:621      评论:0      收藏:0      [点我收藏+]

标签:des   android   c   a   文件   string   

  在IOS开发中,使用第三方字体,如ttf文件,otf文件,是很简单的。只需要两个步骤。1,讲 ttf文件,otf文件添加到工程根目录中。2,在info.plist中增加字体文件,是字体文件名。在使用时,双击打开字体文件,标题会显示字体名称,使用那个自体名称(setFontName)即可。在android中,是把字体文件拷贝到asset目录中,再使用typeface类根据文件得到其实例。

  现在的问题是,在我们玩图的开发中,由于中文字体过大,需要从线上下载,下载到本地使用,这就涉及到一个注册字体问题。IOS应用程学在启动时,会自动读取info.plist文件,如果在在当前目录找到对应的字体文件,就会向系统注册这个字体,然后才能根据字体名称使用。所以在字体在线下载这个功能中,提前在infp.plist中注册字体是不可行的,那就要动态注册字体了,就是运行时下载字体ttf文件,下载到documents目录中,然后根据字体文件全文件名(ttfFileName)去注册。下面是关键的代码。、

  

   NSURL *url = [NSURL fileURLWithPath:ttfFileName];

        CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);

        if (fontDataProvider == NULL)

            return ttfFileName;

        CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);

    

        CFErrorRef error;

        if(!CTFontManagerRegisterGraphicsFont(newFont, &error)){

            CFStringRef errorDescription = CFErrorCopyDescription(error);

            NSLog(@"Failed to load font: %@", errorDescription);

            CFRelease(errorDescription);

        }

        CFRelease(newFont);

        CFRelease(fontDataProvider);

  这就是根据字体文件的全文件名动态注册的代码。android就不存在注册不注册的问题,因为它本来就是根据字体文件全文件名来省城typeface实例的。

IOS运行时动态注册字体,布布扣,bubuko.com

IOS运行时动态注册字体

标签:des   android   c   a   文件   string   

原文地址:http://www.cnblogs.com/lsc183/p/iOS_font.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!