4

我需要转储设备(9.x)上可用的所有字体(字体名称及其变体)

代码看起来很简单:

NSMutableArray *arr = [@[] mutableCopy];
    NSArray *familyNames = [UIFont familyNames];
    for (NSString *fn in familyNames) {
        NSArray *names = [UIFont fontNamesForFamilyName:fn];
        [arr addObjectsFromArray:names];
    }

产生以下内容:

(
"Copperplate-Light",
Copperplate,
"Copperplate-Bold",
"IowanOldStyle-Italic",
"IowanOldStyle-Roman",
"IowanOldStyle-BoldItalic",
"IowanOldStyle-Bold",
"KohinoorTelugu-Regular",
"KohinoorTelugu-Medium",
"KohinoorTelugu-Light",
Thonburi,
"Thonburi-Bold",
"Thonburi-Light",
"CourierNewPS-BoldMT",
"CourierNewPS-ItalicMT",
CourierNewPSMT,
"CourierNewPS-BoldItalicMT",
"GillSans-Italic",
"GillSans-Bold",
"GillSans-BoldItalic",
"GillSans-LightItalic",
GillSans,
"GillSans-Light",
"GillSans-SemiBold",
"GillSans-SemiBoldItalic",
"GillSans-UltraBold",
"AppleSDGothicNeo-Bold",
"AppleSDGothicNeo-Thin",
"AppleSDGothicNeo-UltraLight",
"AppleSDGothicNeo-Regular",
"AppleSDGothicNeo-Light",
"AppleSDGothicNeo-Medium",
"AppleSDGothicNeo-SemiBold",
"MarkerFelt-Thin",
"MarkerFelt-Wide",
"AvenirNextCondensed-BoldItalic",
"AvenirNextCondensed-Heavy",
"AvenirNextCondensed-Medium",
"AvenirNextCondensed-Regular",
"AvenirNextCondensed-HeavyItalic",
"AvenirNextCondensed-MediumItalic",
"AvenirNextCondensed-Italic",
"AvenirNextCondensed-UltraLightItalic",
"AvenirNextCondensed-UltraLight",
"AvenirNextCondensed-DemiBold",
"AvenirNextCondensed-Bold",
"AvenirNextCondensed-DemiBoldItalic",
TamilSangamMN,
"TamilSangamMN-Bold",
"HelveticaNeue-Italic",
"HelveticaNeue-Bold",
"HelveticaNeue-UltraLight",
"HelveticaNeue-CondensedBlack",
"HelveticaNeue-BoldItalic",
"HelveticaNeue-CondensedBold",
"HelveticaNeue-Medium",
"HelveticaNeue-Light",
"HelveticaNeue-Thin",
"HelveticaNeue-ThinItalic",
"HelveticaNeue-LightItalic",
"HelveticaNeue-UltraLightItalic",
"HelveticaNeue-MediumItalic",
HelveticaNeue,
"GurmukhiMN-Bold",
GurmukhiMN,
TimesNewRomanPSMT,
"TimesNewRomanPS-BoldItalicMT",
"TimesNewRomanPS-ItalicMT",
"TimesNewRomanPS-BoldMT",
"Georgia-BoldItalic",
Georgia,
"Georgia-Italic",
"Georgia-Bold",
AppleColorEmoji,
ArialRoundedMTBold,
"Kailasa-Bold",
Kailasa,
"KohinoorDevanagari-Light",
"KohinoorDevanagari-Regular",
"KohinoorDevanagari-Semibold",
"KohinoorBangla-Semibold",
"KohinoorBangla-Regular",
"KohinoorBangla-Light",
"ChalkboardSE-Bold",
"ChalkboardSE-Light",
"ChalkboardSE-Regular",
"SinhalaSangamMN-Bold",
SinhalaSangamMN,
"PingFangTC-Medium",
"PingFangTC-Regular",
"PingFangTC-Light",
"PingFangTC-Ultralight",
"PingFangTC-Semibold",
"PingFangTC-Thin",
"GujaratiSangamMN-Bold",
GujaratiSangamMN,
DamascusLight,
DamascusBold,
DamascusSemiBold,
DamascusMedium,
Damascus,
"Noteworthy-Light",
"Noteworthy-Bold",
GeezaPro,
"GeezaPro-Bold",
"Avenir-Medium",
"Avenir-HeavyOblique",
"Avenir-Book",
"Avenir-Light",
"Avenir-Roman",
"Avenir-BookOblique",
"Avenir-Black",
"Avenir-MediumOblique",
"Avenir-BlackOblique",
"Avenir-Heavy",
"Avenir-LightOblique",
"Avenir-Oblique",
AcademyEngravedLetPlain,
DiwanMishafi,
"Futura-CondensedMedium",
"Futura-CondensedExtraBold",
"Futura-Medium",
"Futura-MediumItalic",
Farah,
KannadaSangamMN,
"KannadaSangamMN-Bold",
"ArialHebrew-Bold",
"ArialHebrew-Light",
ArialHebrew,
ArialMT,
"Arial-BoldItalicMT",
"Arial-BoldMT",
"Arial-ItalicMT",
PartyLetPlain,
Chalkduster,
"HoeflerText-Italic",
"HoeflerText-Regular",
"HoeflerText-Black",
"HoeflerText-BlackItalic",
"Optima-Regular",
"Optima-ExtraBlack",
"Optima-BoldItalic",
"Optima-Italic",
"Optima-Bold",
"Palatino-Bold",
"Palatino-Roman",
"Palatino-BoldItalic",
"Palatino-Italic",
LaoSangamMN,
"MalayalamSangamMN-Bold",
MalayalamSangamMN,
"AlNile-Bold",
AlNile,
"BradleyHandITCTT-Bold",
"PingFangHK-Ultralight",
"PingFangHK-Semibold",
"PingFangHK-Thin",
"PingFangHK-Light",
"PingFangHK-Regular",
"PingFangHK-Medium",
"Trebuchet-BoldItalic",
TrebuchetMS,
"TrebuchetMS-Bold",
"TrebuchetMS-Italic",
"Helvetica-Bold",
Helvetica,
"Helvetica-LightOblique",
"Helvetica-Oblique",
"Helvetica-BoldOblique",
"Helvetica-Light",
"Courier-BoldOblique",
Courier,
"Courier-Bold",
"Courier-Oblique",
"Cochin-Bold",
Cochin,
"Cochin-Italic",
"Cochin-BoldItalic",
"HiraMinProN-W6",
"HiraMinProN-W3",
DevanagariSangamMN,
"DevanagariSangamMN-Bold",
OriyaSangamMN,
"OriyaSangamMN-Bold",
"SnellRoundhand-Bold",
SnellRoundhand,
"SnellRoundhand-Black",
ZapfDingbatsITC,
"BodoniSvtyTwoITCTT-Bold",
"BodoniSvtyTwoITCTT-Book",
"BodoniSvtyTwoITCTT-BookIta",
"Verdana-Italic",
"Verdana-BoldItalic",
Verdana,
"Verdana-Bold",
"AmericanTypewriter-CondensedLight",
AmericanTypewriter,
"AmericanTypewriter-CondensedBold",
"AmericanTypewriter-Light",
"AmericanTypewriter-Bold",
"AmericanTypewriter-Condensed",
"AvenirNext-UltraLight",
"AvenirNext-UltraLightItalic",
"AvenirNext-Bold",
"AvenirNext-BoldItalic",
"AvenirNext-DemiBold",
"AvenirNext-DemiBoldItalic",
"AvenirNext-Medium",
"AvenirNext-HeavyItalic",
"AvenirNext-Heavy",
"AvenirNext-Italic",
"AvenirNext-Regular",
"AvenirNext-MediumItalic",
"Baskerville-Italic",
"Baskerville-SemiBold",
"Baskerville-BoldItalic",
"Baskerville-SemiBoldItalic",
"Baskerville-Bold",
Baskerville,
KhmerSangamMN,
"Didot-Italic",
"Didot-Bold",
Didot,
SavoyeLetPlain,
BodoniOrnamentsITCTT,
Symbol,
"Menlo-Italic",
"Menlo-Bold",
"Menlo-Regular",
"Menlo-BoldItalic",
"BodoniSvtyTwoSCITCTT-Book",
Papyrus,
"Papyrus-Condensed",
"HiraginoSans-W3",
"HiraginoSans-W6",
"PingFangSC-Ultralight",
"PingFangSC-Regular",
"PingFangSC-Semibold",
"PingFangSC-Thin",
"PingFangSC-Light",
"PingFangSC-Medium",
"EuphemiaUCAS-Italic",
EuphemiaUCAS,
"EuphemiaUCAS-Bold",
Zapfino,
"BodoniSvtyTwoOSITCTT-Book",
"BodoniSvtyTwoOSITCTT-Bold",
"BodoniSvtyTwoOSITCTT-BookIt")

但它仍然缺少我可以使用的基本系统字体:

(lldb) po [UIFont systemFontOfSize:12]
<UICTFont: 0x15de34a40> font-family: ".SFUIText-Regular"; font-weight: normal; font-style: normal; font-size: 12.00pt

<UICTFont: 0x15de947d0> font-family: ".SFUIText-Semibold"; font-weight: bold; font-style: normal; font-size: 12.00pt

(lldb) po [UIFont italicSystemFontOfSize:12]
<UICTFont: 0x15de841b0> font-family: ".SFUIText-Italic"; font-weight: normal; font-style: italic; font-size: 12.00pt

甚至更特殊的字体使用权重:

(lldb) po [UIFont systemFontOfSize:12 weight:0.0]
<UICTFont: 0x15dfd0ae0> font-family: ".SFUIText-Regular"; font-weight: normal; font-style: normal; font-size: 12.00pt

(lldb) po [UIFont systemFontOfSize:12 weight:0.05]
<UICTFont: 0x15dfd11b0> font-family: ".SFUIText-RegularG3"; font-weight: normal; font-style: normal; font-size: 12.00pt

(lldb) po [UIFont systemFontOfSize:12 weight:0.5]
<UICTFont: 0x15dfce2a0> font-family: ".SFUIText-BoldG3"; font-weight: bold; font-style: normal; font-size: 12.00pt

显然更多取决于重量。

我试图迭代preferredFontForTextStyle,但它总是返回“Helvetica”

NSArray *styles = @[
    @"UIFontTextStyleTitle1",
    @"UIFontTextStyleTitle2",
    @"UIFontTextStyleTitle3",
    @"UIFontTextStyleHeadline",
    @"UIFontTextStyleSubheadline",
    @"UIFontTextStyleBody",
    @"UIFontTextStyleCallout",
    @"UIFontTextStyleFootnote",
    @"UIFontTextStyleCaption1",
    @"UIFontTextStyleCaption2"];

    for (NSString *st in styles) {
        UIFont *f = [UIFont preferredFontForTextStyle:st];
        [arr addObject:[f fontName]];
    }

所以基本上问题是如何获得所有字体名称,包括systemFont...API提供的字体名称

4

0 回答 0