Подтвердить что ты не робот

Приложения ios могут загружать следующие шрифты, если необходимо

В списке шрифтов iOS 7, расположенном здесь, http://support.apple.com/kb/HT5878, внизу находится раздел с заголовком "приложения могут загружать следующие шрифты, если необходимо".

Что это значит? Как включить эти шрифты и как это отличается от пользовательских шрифтов?

4b9b3361

Ответ 1

Это интересно, это почти недокументированная функция, но, похоже, это нормально использовать и не будет отклонять ваше приложение. Просто пытаясь провести исследование, это привело меня к этому вопросу и не к чему. Все, что я смог найти, было документировано, это пример кода, показывающий, как его использовать: DownloadFont.

Демонстрирует, как загружать шрифты по запросу на iOS 6 и более поздних версиях.

На iOS 6 мы добавили возможность загрузки приложений по требованию. Помимо шрифтов, установленных с iOS 6, приложения могут при необходимости устанавливать список дополнительных шрифтов.

Указанные шрифты уже лицензированы Apple для использования в iOS, однако они не поставляются со стандартной прошивкой iOS из-за использования дополнительного дискового пространства. Я бы предположил, что это будет продолжаться так, как Apple предоставляет новые шрифты (если только часть пользовательского интерфейса ОС не использует). Кроме того, в отличие от добавления шрифтов с помощью ключа UIAppFonts в вашем Info.plist, после загрузки шрифта, он доступен для всех приложений.

Ответ 2

Вот простой пример того, как асинхронно загружать шрифт и устанавливать его на UITextView.

- (void)asynchronouslySetFontName:(NSString *)fontName toTextView:(UITextView *)textView {
    CGFloat size = 24.0f;
    UIFont *font = [UIFont fontWithName:fontName size:size];

    if (font && ([font.fontName compare:fontName] == NSOrderedSame || [font.familyName compare:fontName] == NSOrderedSame)) {
        textView.font = font;
        return;
    }

    NSMutableDictionary *attrs = [NSMutableDictionary dictionaryWithObject:fontName forKey:kCTFontNameAttribute];
    CTFontDescriptorRef desc = CTFontDescriptorCreateWithAttributes((__bridge CFDictionaryRef)attrs);

    NSMutableArray *descs = [NSMutableArray array];
    [descs addObject:(__bridge id)desc];
    CFRelease(desc);

    __weak UITextView *weakTextView = textView;

    CTFontDescriptorMatchFontDescriptorsWithProgressHandler((__bridge CFArrayRef)descs, NULL,  ^(CTFontDescriptorMatchingState state, CFDictionaryRef progressParameter) {
        if (state == kCTFontDescriptorMatchingDidFinish) {
            dispatch_async(dispatch_get_main_queue(), ^{
                weakTextView.font = [UIFont fontWithName:fontName size:size];
            });
        }

        return YES;
    });
}

И вот список всех загружаемых шрифтов. http://iosfontlist.com