Пользовательские шрифты в приложении iOS - работают в симуляторе, но не в iPad - PullRequest
11 голосов
/ 26 марта 2011

Обнаружение странной проблемы здесь.Я разрабатываю игру для своего школьного проекта (некоммерческого) и использую собственный шрифт Black Chancery (бесплатно под GNU GPL).Я следовал инструкциям из нескольких источников, в том числе:

  • Добавить шрифт к проекту (TTF).
  • Изменить app-Info.plist, чтобы добавить к нему шрифт («Шрифты предоставлены»by application ").
  • Использование [UIFont fontWithName:@"BlackChancery" size:30], когда необходим шрифт.

Я мог получить шрифт, отображаемый в симуляторе, однако, когда я загружаю его в свой iPad,используется системный шрифт по умолчанию.Я почти уверен, что нет проблемы с самим шрифтом, так как он отображается в симуляторе, и я использовал FontForge, чтобы открыть шрифт без каких-либо предупреждений (следует из This Question ).

Любая помощь очень ценится.Спасибо!:)

Ответы [ 8 ]

39 голосов
/ 26 марта 2011

Я могу только догадываться, так как вы не опубликовали содержимое своего plist или списка каталогов пакета, но многие случаи «работы ресурса на симуляторе, но не на устройстве» вызваны тем, что ОС Файловая система X обычно настраивается на регистр без учета регистра, тогда как файловая система на устройстве чувствительна к регистру. Например, если ваш файл называется «BlackChancery.TTF» и ваш plist ссылается на него как «BlackChancery.ttf», он будет найден на симуляторе, но не на устройстве.

11 голосов
/ 30 июня 2011

У меня были проблемы с распознаванием шрифта, я исправил его, проверив правильное имя шрифта, проверив информацию о файле шрифта с помощью опции Получить информацию .В моем случае имя файла было написано xyzfont.ttf , но на самом деле это было XyzFont.TTF в информации, я заменил, и это сработало.

Надеюсь, это помогаеткто-то другойи выберите User now из File-> Add Fonts, выберите шрифт, который вы хотите добавить в свое приложение, после небольшой обработки FontBook покажет шрифт, указанный в названии Correct, используйте имя в FontBook, игнорируя фактическое имя файла ttf, которое выимпортировали или добавили в листинг .. Должно работать ..

3 голосов
/ 07 ноября 2011

У меня была та же проблема, которая была решена с небольшим изменением решения iphonc.Чувствительность к регистру была напрямую связана с расширением файла.Проблема была связана с моим файлом шрифта с именем: Choc.TTF

  1. Мне пришлось удалить ссылку на файл в xCode 4.1
  2. Переименовать файл в Choc.ttf (обратите внимание на расширение файла в нижнем регистре)
  3. Добавить ссылку обратно в xCode
  4. Выполнить очистку и перестроить устройство

Заключение (в моем конкретном случае) :

Чувствительность к регистру применяется не ТОЛЬКО к имени файла, а также к расширению файла (т.е. устройство iOS допускает только нижний регистр).

2 голосов
/ 27 августа 2013

Мой ответ отличается от всех остальных.У меня была проблема, потому что шрифт был одним словом и строчным «compassnormal.ttf», а имя в файле было Compass.Итак, мой код:

[UIFont fontWithName:@"Compass" size:24]]

Ресурс пакета сказал: compassnormal.ttf

~ info.plist сказал: compassnormal.ttf

Ничего из этого не работало, пока я не изменилсяфактическое имя файла совпадает с его официальным именем в книге шрифтов.

  1. удалил все ссылки из Bundle Resources и ~ info.plist;
  2. добавил шрифт с обновленным именем в Bundle Resources;
  3. обновлен список с новым именем;
  4. протестирован в симуляторе и на устройстве, вуаля!
0 голосов
/ 06 октября 2014

У меня такая же проблема на Xcode 6. Имя моего файла My Font.ttf , оно не работает. Мне удается заставить его работать, когда я переименую его в My Font.TTF , просто измените расширение файла на верхний регистр.

0 голосов
/ 27 октября 2013

Вы должны использовать реальное имя шрифта в методе [UIFont fontWithName: @ "...!

Это настоящее имя в основном далеко от имени файла. Просто откройте rtf в утилите шрифтов Mac. В шапке вы видите семейство шрифтов !!! Только семья !!! если вы сейчас используете

NSArray *fontNames = [UIFont fontNamesForFamilyName:@"MyFontNameFamily"];
NSLog(@"%@", fontNames);

в вашем коде вы получите реальное настоящее имя в консоли; -)

Но в записи plist вам все еще нужно (с учетом регистра) имя файла !!!

0 голосов
/ 30 августа 2013

Также убедитесь, что ваши шрифты не равны нулю. У меня была такая же проблема, и оказалось, что мои шрифтовые файлы на каком-то этапе опустели. Вероятно, при перестановке их в XCode и AppCode.

0 голосов
/ 10 августа 2012

У меня также возникла проблема со шрифтами, содержащими символ тире (-). Удалите этот символ из имен шрифтов и попробуйте с этим.

Таким образом, ваш шрифт с именем Gotham-Black.ttf должен называться GothamBlack.ttf

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...