精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
iOS使用自定義字體的方法(內置和任意下載ttf\otf\ttc字體文件)

最近做了個有關閱讀的應用,使用了自定義字體,學習了一下這方面的知識。

1.首先是最簡單也普遍的做法,打包內置字符庫文件:

把字體庫文件添加到工程,如font1.ttf添加到工程,然后在工程plist添加一項Fonts provided by application,這是個數組,然后添加key item1,value就是剛才說的font1.ttf,如圖:

 

那么在工程里就可以直接使用這個字體,直接用

+ (UIFont *)fontWithName:(NSString *)fontName size:(CGFloat)fontSize; 即可。

不過需要注意的是,這個fontName不是文件名,而是里面真正的字體名。如上面的font1.ttf里面的字體是MFQingShu_Noncommercial-Regular,那就直接用

UIFont *font = [UIFont fontWithName:@"MFQingShu_Noncommercial-Regular" size:12];就能去到正確的字體。

 

2.但是一般來說,字體文件比較大,不該內置,而且如果都用plist預定義的方式,那肯定就沒法覆蓋全,導致用戶不能使用更多自己喜歡的字體。所以應該用代碼讀取字體的方式:

提供字體文件路徑,返回所需要字體:

-(UIFont*)customFontWithPath:(NSString*)path size:(CGFloat)size{    NSURL *fontUrl = [NSURL fileURLWithPath:path];    CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)fontUrl);    CGFontRef fontRef = CGFontCreateWithDataProvider(fontDataProvider);    CGDataProviderRelease(fontDataProvider);    CTFontManagerRegisterGraphicsFont(fontRef, NULL);    NSString *fontName = CFBridgingRelease(CGFontCopyPostScriptName(fontRef));    UIFont *font = [UIFont fontWithName:fontName size:size];    CGFontRelease(fontRef);    return font;}

 

這樣就不需要在plist設定任何東西,只需要得到字體庫文件的路徑,就可以取出對應的字體。

上面的方法對于TTF、OTF的字體都有效,但是對于TTC字體,只取出了一種字體。因為TTC字體是一個相似字體的集合體,一般是字體的組合。所以如果對字體要求比較高,所以可以用下面的方法把所有字體取出來:

-(NSArray*)customFontArrayWithPath:(NSString*)path size:(CGFloat)size{    CFStringRef fontPath = CFStringCreateWithCString(NULL, [path UTF8String], kCFStringEncodingUTF8);    CFURLRef fontUrl = CFURLCreateWithFileSystemPath(NULL, fontPath, kCFURLPOSIXPathStyle, 0);    CFArrayRef fontArray =CTFontManagerCreateFontDescriptorsFromURL(fontUrl);    CTFontManagerRegisterFontsForURL(fontUrl, kCTFontManagerScopeNone, NULL);    NSMutableArray *customFontArray = [NSMutableArray array];    for (CFIndex i = 0 ; i < CFArrayGetCount(fontArray); i++){        CTFontDescriptorRef  descriptor = CFArrayGetValueAtIndex(fontArray, i);        CTFontRef fontRef = CTFontCreateWithFontDescriptor(descriptor, size, NULL);        NSString *fontName = CFBridgingRelease(CTFontCopyName(fontRef, kCTFontPostScriptNameKey));        UIFont *font = [UIFont fontWithName:fontName size:size];        [customFontArray addObject:font];    }        return customFontArray;}

不過這個方法只支持7.0以上,暫時在7.0以下沒有找到方法。

個人看法,因為ttc里面的字體都比較相似,所以其實使用一個也足以。

 

附:(字體的介紹)

TTF(TrueTypeFont)是一種字庫名稱。TTF(TrueTypeFont)是Apple公司和Microsoft公司共同推出的字體文件格式,隨著windows的流行,已經變成最常用的一種字體文件表示方式。

TTC字體是TrueType字體集成文件(. TTC文件),是在一單獨文件結構中包含多種字體,以便更有效地共享輪廓數據,當多種字體共享同一筆畫時,TTC技術可有效地減小字體文件的大小。
TTC是幾個TTF合成的字庫,安裝后字體列表中會看到兩個以上的字體。兩個字體中大部分字都一樣時,可以將兩種字體做成一個TTC文件,常見的TTC字體,因為共享筆劃數據,所以大多這個集合中的字體區別只是字符寬度不一樣,以便適應不同的版面排版要求。
而TTF字體則只包含一種字型。
本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
iOS 設置字體 自定義字體
字庫不安裝也可以使用,你要試試嗎
推薦30款復古好看的英文字體
字體縮小/修改教程② - iOS9 iOS10具體需要修改哪些文件?
什么是@font
CSS調用遠程字體
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 澳门| 会东县| 阿瓦提县| 广南县| 濮阳市| 迁安市| 定边县| 娱乐| 宁波市| 南川市| 治多县| 苏尼特右旗| 泸州市| 宁陕县| 理塘县| 弥渡县| 台湾省| 沙田区| 城步| 正镶白旗| 和林格尔县| 海城市| 霞浦县| 海阳市| 隆安县| 合山市| 巴青县| 成都市| 石渠县| 临朐县| 胶州市| 永城市| 南川市| 济阳县| 新野县| 农安县| 扎兰屯市| 娄烦县| 高阳县| 阳城县| 磐石市|