Пользовательские шрифты в приложении 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, просто измените расширение файла на верхний.