39

使用するアプリに追加するフォントが 2 つあります。

フォント画像はこちら。現在、ファイルの名前は

name.font       = [UIFont fontWithName:@"Helvetica Neue LT Pro-Medium" size:10];
headline.font   = [UIFont fontWithName:@"Helvetica Neue LT Pro-Light" size:8];

に同じ名前を入れFont Avaliable option in plist fileます。

次のようなファイル名も追加しようとしました

HelveticaNeueLTPro-Lt
HelveticaNeueLTPro-Md

しかし、何も機能していないようです。フォントの正確な名前を取得するにはどうすればよいですか。

ここに画像の説明を入力

4

11 に答える 11

85

+[UIFont familyNames]システムで認識されているすべてのフォント ファミリ名を一覧表示するために使用します。ファミリ名ごとに、 を使用+[UIFont fontNamesForFamilyName:]して、システムに認識されているすべてのフォント名を一覧表示できます。それらを印刷して、システムが期待する名前を確認してください。コード例:

static void dumpAllFonts() {
    for (NSString *familyName in [UIFont familyNames]) {
        for (NSString *fontName in [UIFont fontNamesForFamilyName:familyName]) {
            NSLog(@"%@", fontName);
        }
    }
}

それをアプリに入れ、呼び出して、何が得られるかを確認してください。出力にフォントに適した名前が表示された場合は、それを使用してください。それ以外の場合は、アプリにフォントが適切に追加されていない可能性があります。

スウィフトの場合:

func dumpAllFonts() {
    for familyName in UIFont.familyNames {
        for fontName in UIFont.fontNames(forFamilyName: familyName) {
            print(fontName)
        }
    }
}
于 2013-04-13T06:49:35.827 に答える
3

迅速なバージョン:

static func printAllFontNames() {
    for familyname in UIFont.familyNames() {
        for fname in UIFont.fontNamesForFamilyName(familyname) {
            print(fname)
        }
    }
}
于 2017-01-05T15:31:10.277 に答える
3

すべてのフォントを印刷するだけでなく、必要なフォント名のみを印刷するコードをいくつか書きます。

- (NSString *)realNameOfFont:(NSString *)fullFontName {
    NSString *fontName = [[fullFontName componentsSeparatedByString:@"."] firstObject];
    NSString *ext = [fullFontName pathExtension];

    NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:fontName ofType:ext]];
    if (data == nil) {
        NSLog(@"Failed to load font. Data at path %@ is null", fullFontName);
        return nil;
    }
    CFErrorRef errorRef;
    CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)data);
    CGFontRef font = CGFontCreateWithDataProvider(provider);
    NSString *realFontName = (__bridge NSString *)CGFontCopyPostScriptName(font);
    if (!CTFontManagerRegisterGraphicsFont(font, &errorRef)) {
        NSError *error = (__bridge NSError *)errorRef;
        if (error.code != kCTFontManagerErrorAlreadyRegistered) {
            NSLog(@"Failed to load font: %@", error);
        }
    }
    NSLog(@"Real font name: %@", realFontName);
    CFRelease(font);
    CFRelease(provider);
    return realFontName;
}

例:

 NSArray *fonts = @[@"bg_en_AmaticSC-Bold111.otf", @"bg_en_segoescb_0.ttf", @"bg_en_UTM Cookies_2.ttf", @"bg_en_VSCOProximaExtrabold_0.otf"];
for (NSString *fontFullName in fonts) {
    [self realNameOfFont:fontFullName];
}

結果:

Failed to load font. Data at path bg_en_AmaticSC-Bold111.otf is null
Real font name: SegoeScript-Bold
Real font name: UTM-Cookies
Real font name: ProximaNova-Extrabld
于 2015-08-12T04:14:15.907 に答える