2009-09-03 2 views
30

Похоже, есть несколько рабочих решений для использования пользовательских шрифтов истинного типа (ttf) на iPhone, в первую очередь Can I embed a custom font in an iPhone application? Однако этот метод не поддерживает шрифты открытого типа (otf).У кого-нибудь был успех с использованием пользовательских шрифтов otf на iPhone?

Есть ли у кого-нибудь возможность использовать шрифты otf?

ответ

22

Должен ли использоваться шрифт otf на устройстве или вы можете преобразовать его в ttf? Сравнительно просто преобразовать шрифт OTF в шрифт TTF с помощью такого инструмента, как fontforge, возможно, это было бы легким решением.

+0

Спасибо, это сработало хорошо, а затем преобразованный шрифт otf-> ttf был принят кодом FontLabel, связанным с выше. FYI для всех: Попытка установить FontForge на Snow Leopard, запустив пакет, вы не можете установить ошибку в «этой версии» ОС. Тем не менее, приложение все же было установлено в папку приложений и работало без ошибок. Вероятно, 64-разрядная ошибка с пакетом установщика. –

+0

Существует некоторая ошибка, поскольку работают не все шрифты. Постарайтесь с другими шрифтами, чтобы быть уверенными. В моем случае я успешно установил шрифт на свой Mac, но шрифт не работал на iOS. –

+1

здесь онлайн-инструмент для преобразования OTF в TTF http://www.freefontconverter.com/index.php –

70

Для моего проекта я хотел использовать шрифт OpenType, и я в основном использовал этот метод:

Добавить файл пользовательского шрифта в свой проект, используя XCode как ресурс Добавить ключ в файл info.plist (шрифты, представленные приложения) для каждого шрифта вы должны ввести полное имя файла шрифта (включая расширение) сохранить info.plist затем использовать для наклеек (напр :)

UIFont* font = [UIFont fontWithName:@"Harrowprint" size:20]; 

В моей case @"Harrowprint" было filename witho ut расширение, а не имя шрифта, предоставленное Finder.

Мой шрифт был otf, и он работал ... так что я думаю, что это поддерживается ... или мне повезло. Я буду тестировать еще font..and держать вас в курсе ..

ссылки:

+1

Спасибо, чувак, ваше решение действительно простое и работает хорошо. Большое спасибо. –

+7

Это действительно должен быть принятый ответ. Принятый ответ - скорее ненужная работа. – Dermot

+0

[This] (http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/) - действительно хороший источник информации. В отличие от того, что указано выше, вы не можете предположить, что имя файла шрифта будет равно фактическому имени шрифта (что вам нужно для вызова UIFont fontwithName). – zero0cool

3

Что касается первого ответа - решение правильно (т.е. просто конвертируйте шрифт в TTF), но предлагаемое программное обеспечение представляет собой сложную проблему для компиляции и установки. Вместо этого я просто сделал быстрый поиск в Google и использовал это вместо: http://www.freefontconverter.com/, и это сработало отлично.

(Убедитесь в том, чтобы добавить шрифт в файл info.plist а)

+0

+1 для хорошей справки. Тем не менее, не полагайтесь на ответы, появляющиеся в определенном порядке (например, «первый ответ») - порядок изменяется с настройками пользователя, голосами и т. Д. – Caleb

17

У меня была проблема с этим, тоже. Вот что для меня работало:

  1. Скопируйте файлы шрифтов в Ресурсы.
  2. Убедитесь, что файлы шрифтов находятся в разделе «Фазы сборки» -> «Скопировать ресурсы пакета» (Xcode поместил их туда для меня, когда я добавил файлы в Ресурсы. Если по какой-то причине их там нет, добавьте их
  3. Добавьте имена файлов в свой файл info.plist, как описано выше. Включите расширения.
  4. Откройте книгу шрифтов, выберите шрифт и предварительный просмотр информации о шрифте и посмотрите на «Семья», например, Foo»
  5. Поместите это в вашем коде где-то и установить точку останова, чтобы проверить массив имен: NSArray *names = [UIFont fontNamesForFamilyName:@"Foo";
  6. Запустить приложение и когда он ломается, щелкните правой кнопкой мыши на„имена переменных“в отладчике. Это покажет вам имена шрифтов для использования, например .: <__NSCFArray 0xe9c4da0>( Foo-100Italic, Foo-100)
    Обратите внимание, что мои имена шрифтов не были показаны правильно нигде, а не в имени файла или в Шрифтовой книге.
  7. Вы должны быть хорошо идти с:
    myLabel.font = [UIFont fontWithName:@"Foo-100Italic" size:24];
+0

В Font-Book реальное имя моего шрифта было таким же, как «PostScript имя". Это единственное, что сработало для меня. Я использовал пользовательские шрифты в прошлом и до сих пор не имел проблемы. Не знаю, что изменилось, но спасибо. – Dcritelli

+0

Это работает для меня.Спасибо огромное! –

+0

Очки 4, 5 и 6 действительно полезны! – Ravi

2

Я исследовал это тщательно, и это самый лучший метод, который я нашел:

1) Преобразовать файл шрифта TTF с помощью этого онлайн-инструмент: http://www.freefontconverter.com/

2) Добавить файлы TTF для вашего проекта

3) Сделайте несколько конфигураций для вашего info.plist файла:

3,1) Редактировать info.plist в виде исходного кода (правой кнопкой мыши на файле -> Открыть как -> исходный код)

3.2) Добавить это:

<key>UIAppFonts</key> 
<array> 
    <string>font1.ttf</string> 
    <string>font2.ttf</string> 
    ...etc... 
</array> 

3,3) Ваш info.plist должны иметь это сейчас:

info plist should look like this now

4) Используйте новые шрифты только например, системные шрифты:

[UIFont fontWithName: @ "font1" size: 16.0];

(Заметьте, не «.ttf» во имя шрифта)

+0

Это работает отлично, спасибо! Стоит отметить, что вам не нужно редактировать исходный код plist, вы можете добавить их в разделе «Пользовательские свойства объектов iOS». В области «Информация» цели вашего приложения. http://jednorog.sneakyness.com/image/2Q2O1j1l2E2Z – Sneakyness

Смежные вопросы