CoreText: недопустимая подстрока 'kern' в CTFont

Я использую пользовательский шрифт, примененный к CATextLayer. Я использую учебник и пример кода, найденный здесь. http://www.freetimestudios.com/2010/09/13/custom-fonts-on-the-ipad-and-ios-4/

Однако время от времени я получаю следующую ошибку. Ничто, в частности, кажется, не вызывает это. Может кто-то пролить свет на то, что это значит? Что проверить?

CoreText: Invalid 'kern' Subtable In CTFont <name: Intellect, size: 20.000000, matrix: 0x0>
CTFontDescriptor <attributes: <CFDictionary 0xac07a80 [0x38295d98]>{type = mutable, count = 1, capacity = 3, pairs = (
    0 : <CFString 0x3833f750 [0x38295d98]>{contents = "NSFontNameAttribute"} = <CFString 0x159af0 [0x38295d98]>{contents = "Intellect"}

Я загружаю шрифт, используя следующий код. Этот код взят из проекта по ссылке выше.

- (CTFontRef)newCustomFontWithName:(NSString *)fontName
                            ofType:(NSString *)type
                        attributes:(NSDictionary *)attributes
{
    NSString *fontPath = [[NSBundle mainBundle] pathForResource:fontName ofType:type];

    NSData *data = [[NSData alloc] initWithContentsOfFile:fontPath];
    CGDataProviderRef fontProvider = CGDataProviderCreateWithCFData((CFDataRef)data);
    [data release];

    CGFontRef cgFont = CGFontCreateWithDataProvider(fontProvider);
    CGDataProviderRelease(fontProvider);

    CTFontDescriptorRef fontDescriptor = CTFontDescriptorCreateWithAttributes((CFDictionaryRef)attributes);
    CTFontRef font = CTFontCreateWithGraphicsFont(cgFont, 0, NULL, fontDescriptor);
    CFRelease(fontDescriptor);
    CGFontRelease(cgFont);
    return font;
}

2 ответа

Решение

Проверка установленного шрифта показала, что существует проблема со значениями шрифтов "kern". Это было то, что вызывало проблему.

У меня была та же проблема, и решение состояло в том, что я использовал неправильное подмножество. Сначала я загрузил Open Sans из Google Fonts, что вызвало ту же ошибку, что и выше. Я загрузил Open Sans из Font Squirrel, используя подмножество MacRoman, и это исправило мою ошибку.

Другие вопросы по тегам