iOS-获取UIFont 相关默认属性

2,193 阅读4分钟
原文链接: www.jianshu.com
目录
一 获取 UIFont 所有字体
NSArray *familyNames = [UIFont familyNames];
for( NSString *familyName in familyNames ){
    printf( "Family: %s \n", [familyName UTF8String] );
    NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
    for( NSString *fontName in fontNames ){
        printf( "\tFont: %s \n", [fontName UTF8String] );
    }
}

打印结果

Family: Copperplate 
    Font: Copperplate-Light 
    Font: Copperplate 
    Font: Copperplate-Bold 
Family: Heiti SC 
Family: Apple SD Gothic Neo 
    Font: AppleSDGothicNeo-Thin 
    Font: AppleSDGothicNeo-Light 
    Font: AppleSDGothicNeo-Regular 
    Font: AppleSDGothicNeo-Bold 
    Font: AppleSDGothicNeo-SemiBold 
    Font: AppleSDGothicNeo-UltraLight 
    Font: AppleSDGothicNeo-Medium 
Family: Thonburi 
    Font: Thonburi 
    Font: Thonburi-Light 
    Font: Thonburi-Bold 
Family: Gill Sans 
    Font: GillSans-Italic 
    Font: GillSans-SemiBold 
    Font: GillSans-UltraBold 
    Font: GillSans-Light 
    Font: GillSans-Bold 
    Font: GillSans 
    Font: GillSans-SemiBoldItalic 
    Font: GillSans-BoldItalic 
    Font: GillSans-LightItalic 
Family: Marker Felt 
    Font: MarkerFelt-Thin 
    Font: MarkerFelt-Wide 
Family: Hiragino Maru Gothic ProN 
    Font: HiraMaruProN-W4 
Family: Courier New 
    Font: CourierNewPS-ItalicMT 
    Font: CourierNewPSMT 
    Font: CourierNewPS-BoldItalicMT 
    Font: CourierNewPS-BoldMT 
Family: Kohinoor Telugu 
    Font: KohinoorTelugu-Regular 
    Font: KohinoorTelugu-Medium 
    Font: KohinoorTelugu-Light 
Family: Heiti TC 
Family: Avenir Next Condensed 
    Font: AvenirNextCondensed-Heavy 
    Font: AvenirNextCondensed-MediumItalic 
    Font: AvenirNextCondensed-Regular 
    Font: AvenirNextCondensed-UltraLightItalic 
    Font: AvenirNextCondensed-Medium 
    Font: AvenirNextCondensed-HeavyItalic 
    Font: AvenirNextCondensed-DemiBoldItalic 
    Font: AvenirNextCondensed-Bold 
    Font: AvenirNextCondensed-DemiBold 
    Font: AvenirNextCondensed-BoldItalic 
    Font: AvenirNextCondensed-Italic 
    Font: AvenirNextCondensed-UltraLight 
Family: Tamil Sangam MN 
    Font: TamilSangamMN 
    Font: TamilSangamMN-Bold 
Family: Helvetica Neue 
    Font: HelveticaNeue-UltraLightItalic 
    Font: HelveticaNeue-Medium 
    Font: HelveticaNeue-MediumItalic 
    Font: HelveticaNeue-UltraLight 
    Font: HelveticaNeue-Italic 
    Font: HelveticaNeue-Light 
    Font: HelveticaNeue-ThinItalic 
    Font: HelveticaNeue-LightItalic 
    Font: HelveticaNeue-Bold 
    Font: HelveticaNeue-Thin 
    Font: HelveticaNeue-CondensedBlack 
    Font: HelveticaNeue 
    Font: HelveticaNeue-CondensedBold 
    Font: HelveticaNeue-BoldItalic 
Family: Gurmukhi MN 
    Font: GurmukhiMN-Bold 
    Font: GurmukhiMN 
Family: Georgia 
    Font: Georgia-BoldItalic 
    Font: Georgia-Italic 
    Font: Georgia 
    Font: Georgia-Bold 
Family: Times New Roman 
    Font: TimesNewRomanPS-ItalicMT 
    Font: TimesNewRomanPS-BoldItalicMT 
    Font: TimesNewRomanPS-BoldMT 
    Font: TimesNewRomanPSMT 
Family: Sinhala Sangam MN 
    Font: SinhalaSangamMN-Bold 
    Font: SinhalaSangamMN 
Family: Arial Rounded MT Bold 
    Font: ArialRoundedMTBold 
Family: Kailasa 
    Font: Kailasa-Bold 
    Font: Kailasa 
Family: Kohinoor Devanagari 
    Font: KohinoorDevanagari-Regular 
    Font: KohinoorDevanagari-Light 
    Font: KohinoorDevanagari-Semibold 
Family: Kohinoor Bangla 
    Font: KohinoorBangla-Regular 
    Font: KohinoorBangla-Semibold 
    Font: KohinoorBangla-Light 
Family: Chalkboard SE 
    Font: ChalkboardSE-Bold 
    Font: ChalkboardSE-Light 
    Font: ChalkboardSE-Regular 
Family: Apple Color Emoji 
    Font: AppleColorEmoji 
Family: PingFang TC 
    Font: PingFangTC-Regular 
    Font: PingFangTC-Thin 
    Font: PingFangTC-Medium 
    Font: PingFangTC-Semibold 
    Font: PingFangTC-Light 
    Font: PingFangTC-Ultralight 
Family: Gujarati Sangam MN 
    Font: GujaratiSangamMN 
    Font: GujaratiSangamMN-Bold 
Family: Geeza Pro 
    Font: GeezaPro-Bold 
    Font: GeezaPro 
Family: Damascus 
    Font: DamascusBold 
    Font: DamascusLight 
    Font: Damascus 
    Font: DamascusMedium 
    Font: DamascusSemiBold 
Family: Noteworthy 
    Font: Noteworthy-Bold 
    Font: Noteworthy-Light 
Family: Avenir 
    Font: Avenir-Oblique 
    Font: Avenir-HeavyOblique 
    Font: Avenir-Heavy 
    Font: Avenir-BlackOblique 
    Font: Avenir-BookOblique 
    Font: Avenir-Roman 
    Font: Avenir-Medium 
    Font: Avenir-Black 
    Font: Avenir-Light 
    Font: Avenir-MediumOblique 
    Font: Avenir-Book 
    Font: Avenir-LightOblique 
Family: Mishafi 
    Font: DiwanMishafi 
Family: Academy Engraved LET 
    Font: AcademyEngravedLetPlain 
Family: Futura 
    Font: Futura-CondensedExtraBold 
    Font: Futura-Medium 
    Font: Futura-Bold 
    Font: Futura-CondensedMedium 
    Font: Futura-MediumItalic 
Family: Party LET 
    Font: PartyLetPlain 
Family: Kannada Sangam MN 
    Font: KannadaSangamMN-Bold 
    Font: KannadaSangamMN 
Family: Arial Hebrew 
    Font: ArialHebrew-Bold 
    Font: ArialHebrew-Light 
    Font: ArialHebrew 
Family: Farah 
    Font: Farah 
Family: Arial 
    Font: Arial-BoldMT 
    Font: Arial-BoldItalicMT 
    Font: Arial-ItalicMT 
    Font: ArialMT 
Family: Chalkduster 
    Font: Chalkduster 
Family: Kefa 
    Font: Kefa-Regular 
Family: Hoefler Text 
    Font: HoeflerText-Italic 
    Font: HoeflerText-Black 
    Font: HoeflerText-Regular 
    Font: HoeflerText-BlackItalic 
Family: Optima 
    Font: Optima-ExtraBlack 
    Font: Optima-BoldItalic 
    Font: Optima-Italic 
    Font: Optima-Regular 
    Font: Optima-Bold 
Family: Palatino 
    Font: Palatino-Italic 
    Font: Palatino-Roman 
    Font: Palatino-BoldItalic 
    Font: Palatino-Bold 
Family: Malayalam Sangam MN 
    Font: MalayalamSangamMN-Bold 
    Font: MalayalamSangamMN 
Family: Al Nile 
    Font: AlNile 
    Font: AlNile-Bold 
Family: Lao Sangam MN 
    Font: LaoSangamMN 
Family: Bradley Hand 
    Font: BradleyHandITCTT-Bold 
Family: Hiragino Mincho ProN 
    Font: HiraMinProN-W3 
    Font: HiraMinProN-W6 
Family: PingFang HK 
    Font: PingFangHK-Medium 
    Font: PingFangHK-Thin 
    Font: PingFangHK-Regular 
    Font: PingFangHK-Ultralight 
    Font: PingFangHK-Semibold 
    Font: PingFangHK-Light 
Family: Helvetica 
    Font: Helvetica-Oblique 
    Font: Helvetica-BoldOblique 
    Font: Helvetica 
    Font: Helvetica-Light 
    Font: Helvetica-Bold 
    Font: Helvetica-LightOblique 
Family: Courier 
    Font: Courier-BoldOblique 
    Font: Courier-Oblique 
    Font: Courier 
    Font: Courier-Bold 
Family: Cochin 
    Font: Cochin-Italic 
    Font: Cochin-Bold 
    Font: Cochin 
    Font: Cochin-BoldItalic 
Family: Trebuchet MS 
    Font: TrebuchetMS-Bold 
    Font: TrebuchetMS-Italic 
    Font: Trebuchet-BoldItalic 
    Font: TrebuchetMS 
Family: Devanagari Sangam MN 
    Font: DevanagariSangamMN 
    Font: DevanagariSangamMN-Bold 
Family: Oriya Sangam MN 
    Font: OriyaSangamMN 
    Font: OriyaSangamMN-Bold 
Family: Rockwell 
    Font: Rockwell-Italic 
    Font: Rockwell-Regular 
    Font: Rockwell-Bold 
    Font: Rockwell-BoldItalic 
Family: Snell Roundhand 
    Font: SnellRoundhand 
    Font: SnellRoundhand-Bold 
    Font: SnellRoundhand-Black 
Family: Zapf Dingbats 
    Font: ZapfDingbatsITC 
Family: Bodoni 72 
    Font: BodoniSvtyTwoITCTT-Bold 
    Font: BodoniSvtyTwoITCTT-BookIta 
    Font: BodoniSvtyTwoITCTT-Book 
Family: Verdana 
    Font: Verdana-Italic 
    Font: Verdana 
    Font: Verdana-Bold 
    Font: Verdana-BoldItalic 
Family: American Typewriter 
    Font: AmericanTypewriter-CondensedBold 
    Font: AmericanTypewriter-Condensed 
    Font: AmericanTypewriter-CondensedLight 
    Font: AmericanTypewriter 
    Font: AmericanTypewriter-Bold 
    Font: AmericanTypewriter-Semibold 
    Font: AmericanTypewriter-Light 
Family: Avenir Next 
    Font: AvenirNext-Medium 
    Font: AvenirNext-DemiBoldItalic 
    Font: AvenirNext-DemiBold 
    Font: AvenirNext-HeavyItalic 
    Font: AvenirNext-Regular 
    Font: AvenirNext-Italic 
    Font: AvenirNext-MediumItalic 
    Font: AvenirNext-UltraLightItalic 
    Font: AvenirNext-BoldItalic 
    Font: AvenirNext-Heavy 
    Font: AvenirNext-Bold 
    Font: AvenirNext-UltraLight 
Family: Baskerville 
    Font: Baskerville-SemiBoldItalic 
    Font: Baskerville-SemiBold 
    Font: Baskerville-BoldItalic 
    Font: Baskerville 
    Font: Baskerville-Bold 
    Font: Baskerville-Italic 
Family: Khmer Sangam MN 
    Font: KhmerSangamMN 
Family: Didot 
    Font: Didot-Bold 
    Font: Didot 
    Font: Didot-Italic 
Family: Savoye LET 
    Font: SavoyeLetPlain 
Family: Bodoni Ornaments 
    Font: BodoniOrnamentsITCTT 
Family: Symbol 
    Font: Symbol 
Family: Charter 
    Font: Charter-BlackItalic 
    Font: Charter-Bold 
    Font: Charter-Roman 
    Font: Charter-Black 
    Font: Charter-BoldItalic 
    Font: Charter-Italic 
Family: Menlo 
    Font: Menlo-BoldItalic 
    Font: Menlo-Bold 
    Font: Menlo-Italic 
    Font: Menlo-Regular 
Family: Noto Nastaliq Urdu 
    Font: NotoNastaliqUrdu 
Family: Bodoni 72 Smallcaps 
    Font: BodoniSvtyTwoSCITCTT-Book 
Family: DIN Alternate 
    Font: DINAlternate-Bold 
Family: Papyrus 
    Font: Papyrus-Condensed 
    Font: Papyrus 
Family: Hiragino Sans 
    Font: HiraginoSans-W3 
    Font: HiraginoSans-W6 
Family: PingFang SC 
    Font: PingFangSC-Medium 
    Font: PingFangSC-Semibold 
    Font: PingFangSC-Light 
    Font: PingFangSC-Ultralight 
    Font: PingFangSC-Regular 
    Font: PingFangSC-Thin 
Family: Myanmar Sangam MN 
    Font: MyanmarSangamMN 
    Font: MyanmarSangamMN-Bold 
Family: Noto Sans Chakma 
    Font: NotoSansChakma-Regular 
Family: Zapfino 
    Font: Zapfino 
Family: Telugu Sangam MN 
Family: Bodoni 72 Oldstyle 
    Font: BodoniSvtyTwoOSITCTT-BookIt 
    Font: BodoniSvtyTwoOSITCTT-Book 
    Font: BodoniSvtyTwoOSITCTT-Bold 
Family: Euphemia UCAS 
    Font: EuphemiaUCAS 
    Font: EuphemiaUCAS-Italic 
    Font: EuphemiaUCAS-Bold 
Family: Bangla Sangam MN 
Family: DIN Condensed 
    Font: DINCondensed-Bold
二 获取 UIFont 系统默认字体

当我们创建一个 UILabel 的时候,往往会设置字体大小,但是系统使用的是哪一种默认字体呢?

UILabel *lbe = [[UILabel alloc] init];
lbe.font = [UIFont systemFontOfSize:16];

接下来我们就看看系统默认的是哪一种字体

#import <CoreText/CoreText.h>

- (void)getDefFont {
    UIFont *font = [UIFont systemFontOfSize:17];
    CTFontRef fontRef = CTFontCreateWithName((CFStringRef)font.fontName, 11, NULL);
    if (fontRef) {
        CFStringRef cfName1 = CTFontCopyFamilyName(fontRef);
        CFStringRef cfName2 = CTFontCopyFullName(fontRef);
        CFStringRef cfName3 = CTFontCopyDisplayName(fontRef);
        CFStringRef cfName4 = CTFontCopyPostScriptName(fontRef);
        NSLog(@"FamilyName - %@",cfName1);
        NSLog(@"FullName - %@",cfName2);
        NSLog(@"DisplayName - %@",cfName3);
        NSLog(@"PostScriptName - %@",cfName4);
    }
    NSLog(@"----------------");
    NSLog(@"%@", font);
}

打印结果

FamilyName - .SF UI Text
FullName - System Font Regular
DisplayName - System Font
PostScriptName - .SFUIText
----------------
<UICTFont: 0x7fb3c8602460> font-family: ".SFUIText"; font-weight: normal; font-style: normal; font-size: 17.00pt

通过打印可知,系统默认字体为System Font Regular