Пользовательские шрифты в приложении iOS - работают в Simulator, но не iPad
Встречайте странную проблему. Я разрабатываю игру для своего школьного проекта (некоммерческого), и я использую собственный шрифт Black Chancery (бесплатно по GNU GPL). Я следовал инструкциям из нескольких источников, который включает в себя:
- Добавить шрифт в проект (TTF).
- Изменить
app-Info.plist
, чтобы добавить к нему шрифт ( "Шрифты, предоставленные приложением" ).
- Использование
[UIFont fontWithName:@"BlackChancery" size:30]
при необходимости шрифта.
Я мог бы получить шрифт, отображаемый в Simulator, однако, когда я загружаю его в свой iPad, используется системный шрифт по умолчанию. Я уверен, что проблема с самим шрифтом не возникает, поскольку он отображается в симуляторе, и я использовал FontForge, чтобы открыть шрифт без каких-либо предупреждений (следуя из Этот вопрос).
Любая помощь приветствуется. Благодарю!:)
Ответы
Ответ 1
Я могу только догадываться, поскольку вы не размещали содержимое вашего plist или список каталогов пакета, но многие случаи работы с ресурсами на симуляторе, но не на устройстве, вызваны тем, что ОС X, как правило, сконфигурирована как чувствительная к регистру, в то время как файловая система на устройстве чувствительна к регистру. Например, если ваш файл называется "BlackChancery.TTF", и ваш plist относится к нему как "BlackChancery.ttf", он будет найден на симуляторе, но не на устройстве.
Ответ 2
У меня возникла проблема с не распознаванием шрифта, я исправил его, проверив правильное имя шрифта, проверив информацию о файле шрифта с помощью опции Получить информацию. В моем случае имя файла было написано xyzfont.ttf, но на самом деле это было XyzFont.TTF в информации, я заменил и сработал.
Надеюсь, это помогает кому-то.
Другой способ
Я нашел еще один способ найти правильное имя, это установить шрифт в FontBook..
Просто откройте FontBook из Finder и выберите "Пользователь сейчас" из "Файл- > Добавить шрифты", выберите шрифт, который вы хотите добавить в свое приложение, после небольшой обработки FontBook покажет Шрифт, указанный в списке с правильным именем, используйте имя в FontBook игнорирует фактическое имя файла ttf, которое вы импортировали или добавили в plist. Оно должно работать.
Ответ 3
У меня была та же проблема, которая была решена с небольшим изменением в решении iphonc. Чувствительность к регистру была напрямую связана с расширением файла. Проблема связана с моим файлом шрифта с именем: Choc.TTF
- Мне пришлось удалить ссылку на файл в xCode 4.1
- Переименуйте файл в Choc.ttf (обратите внимание на расширение файла нижнего регистра)
- Добавить ссылку обратно в xCode
- Выполните очистку и перезагрузку устройства
Заключение (в моем конкретном случае):
Чувствительность к регистру применяется не только к имени файла, но и к расширению файла (например, устройство iOS допускает только нижний регистр).
Ответ 4
Мой ответ отличается от всего остального. У меня была проблема, потому что шрифтом было все одно слово и нижний регистр "compassnormal.ttf", а именем в файле был Compass. Итак, мой код:
[UIFont fontWithName:@"Compass" size:24]]
Bundle Resource сказал:
compassnormal.ttf
~ info.plist сказал:
compassnormal.ttf
Ничего из этого не сработало, пока я не изменил фактическое имя файла, чтобы оно соответствовало его официальному названию в книжке.
- удалены все ссылки из Bundle Resources и ~ info.plist;
- добавлен шрифт с обновленным именем в Bundle Resources;
- обновленный plist с новым именем;
- тестируется в симуляторе и на устройстве Voila!
Ответ 5
У меня также возникла проблема с шрифтами, содержащими тире (-). Удалите этот символ из ваших имен шрифтов и попробуйте с этим.
Итак, ваш шрифт Gotham-Black.ttf должен быть назван GothamBlack.ttf
Ответ 6
Также проверьте, что ваши шрифты не равны нулю. У меня была эта же проблема, и оказалось, что мои файлы шрифтов опустошили себя на определенном этапе. Возможно, при перестановке их в XCode и AppCode.
Ответ 7
Вы должны использовать реальное имя шрифта в методе [UIFont fontWithName: @"... Не имя файла ttf!!!
Это настоящее имя в основном далеко от имени файла. Просто откройте rtf в утилите шрифтов Mac. В заголовке вы видите семейство шрифтов!!! Только семья!!! если вы сейчас используете
NSArray *fontNames = [UIFont fontNamesForFamilyName:@"MyFontNameFamily"];
NSLog(@"%@", fontNames);
в вашем коде, вы получите реальное реальное имя в консоли; -)
Но в записи plist вам все равно нужно имя (с учетом регистра)!!!
Ответ 8
У меня такая же проблема на Xcode 6. Мое имя файла My Font.ttf, оно не работает. Мне удалось заставить его работать, когда я переименую его в My Font.TTF, просто измените расширение файла на верхний.