美文网首页
自定义字体使用

自定义字体使用

作者: 梓华 | 来源:发表于2018-09-07 11:10 被阅读9次

    参考:
    https://www.jianshu.com/p/5c061b15d2e1
    https://www.jianshu.com/p/a02be724b7ec

    这里5M左右的字体文件 会导致内存增长5M多多
    虽然逻辑正确 但增加内存更多的使用 毫无疑问是个bug

    优化后 有2个需要注意点
    CGDataProviderCreateWithCFData和CGDataProviderCreateWithURL
    CTFontManagerRegisterGraphicsFont和CTFontManagerRegisterFontsForURL

    使用data比使用url增加了step 中间变量

    @autoreleasepool
        {
            if(fontPath.length <= 0)
            {
                return;
            }
            
            NSURL *fontUrl = [NSURL fileURLWithPath:fontPath];
            
            if(!fontUrl)
            {
                return;
            }
            
            CGDataProviderRef provider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);
            
            CGFontRef font = CGFontCreateWithDataProvider(provider);
            
            if(font == nil)
            {
                CFRelease(provider);
                
                return;
            }
            
            CFErrorRef error;
            
            if(!CTFontManagerRegisterFontsForURL((__bridge CFURLRef)fontUrl, kCTFontManagerScopeProcess, &error))
            {
                CFStringRef errorDescription = CFErrorCopyDescription(error);
                
                CFRelease(errorDescription);
            }
            
            NSString *fontName = (__bridge NSString *)CGFontCopyPostScriptName(font);
            
            CGFontRelease(font);
            
            CFRelease(provider);
            
            if([UIFont fontWithName:fontName size:12])
            {
                return;
            }
            else
            {
                return;
            }
        }
    

    相关文章

      网友评论

          本文标题:自定义字体使用

          本文链接:https://www.haomeiwen.com/subject/jroqgftx.html