Пользовательские шрифты неправильно отображаются на iOS

Я пытаюсь получить набор шрифтов Neo Sans Pro, работающих на iPhone. У меня есть четыре веса: Light, Regular, Medium, Bold как файлы OTF (NeoSansPro-Light.otf, -Regular.otf и т. Д.). Файлы включены в сборку и зарегистрированы в info.plist.

Вызов [UIFont fontNamesForFamilyName: @ "Neo Sans Pro"] возвращает массив с 4 записями, например "NeoSansPro-Light".

Я могу получить объекты шрифтов для каждой из этих строк, используя UIFont fontWithName: size: .

Однако, когда я рисую с ними текст, я использую Light, Regular и Medium все версии рисуются одинаково,и похожа на Лайт версию. Версия Bold выглядит по-другому.

Согласно Font Book, каждый файл шрифта содержит разные глифы.

Я полностью озадачен - есть подсказки, что мне нужно делать?

[Добавлен] Еще одно исследование:

 NSArray *fonts = [UIFont fontNamesForFamilyName:@"Neo Sans Pro"];

    for (NSString *fname in fonts) {
        UIFont *font = [UIFont fontWithName:fname size:12.0];
        NSLog(@"name: %@ font: %@", fname, font);
    }

Выполнение этого кода дает следующий вывод журнала:

 name: NeoSansPro-Light font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
 name: NeoSansPro-Regular font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
 name: NeoSansPro-Medium font: <UICFFont: 0x66304a0> font-family: "Neo Sans Pro"; font-weight: normal; font-style: normal; font-size: 12px
 name: NeoSansPro-Bold font: <UICFFont: 0xaa06070> font-family: "Neo Sans Pro"; font-weight: bold; font-style: normal; font-size: 12px

Итак, три шрифта, которые отображают одно и то же, на самом деле одинаковы. Но в сборке есть четыре толщины шрифта и четыре шрифта.

8
задан Malcolm Box 19 July 2011 в 09:04
поделиться