Могу ли я встроить пользовательский шрифт в приложение для iPhone? - PullRequest
768 голосов
/ 11 декабря 2008

Я бы хотел, чтобы приложение включало пользовательский шрифт для рендеринга текста, загружал его, а затем использовал его со стандартными UIKit элементами, такими как UILabel. Это возможно?

Ответы [ 32 ]

12 голосов
/ 22 марта 2011

Вот пошаговые инструкции, как это сделать. Нет необходимости в дополнительной библиотеке или специальном кодировании.

http://shang -liang.com / блог / заказ-шрифты-в-iOS4 /

В большинстве случаев проблема связана со шрифтом, а не с методом. Лучший способ сделать это - использовать шрифт, который наверняка будет работать, например, verdana или geogia. Затем измените на нужный шрифт. Если это не работает, возможно, имя шрифта неверное, или шрифт плохо отформатирован.

11 голосов
/ 29 сентября 2015

Я бы порекомендовал следовать одному из моих любимых коротких руководств здесь: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/, из которого взята эта информация.

Шаг 1 - Перетащите .ttf или .otf из Finder в свой проект

ПРИМЕЧАНИЕ. - Обязательно установите флажок «Добавить к целям» в основной цели приложения

Drag font files into your project and click to add them to your target

Если вы забыли щелкнуть, чтобы добавить его к своей цели, затем щелкните файл шрифта в иерархии проекта и на правой боковой панели щелкните цель основного приложения в разделе Целевое членство

how to add fonts to app target if you forgot

Чтобы убедиться, что ваши шрифты являются частью цели вашего приложения, убедитесь, что они отображаются в ваших ресурсах набора копий в Фазах сборки

how to check resources to see if fonts are part of app target

Шаг 2 - Добавьте имена файлов шрифтов в свой Plist

Перейдите в Пользовательские целевые свойства iOS в своем Info разделе и добавьте ключ к элементам в этом разделе под названием Fonts provided by application (вы должны увидеть, что он появляется как опция когда вы набираете его, он становится массивом. Нажмите маленькую стрелку, чтобы открыть элементы массива, и введите имена добавленных вами файлов .ttf или .otf, чтобы приложение знало, что это шрифт. нужные вам файлы

ПРИМЕЧАНИЕ. - Если сразу после этого шага произойдет сбой приложения, проверьте правильность написания добавленных здесь элементов

example plist with custom fonts added

Шаг 3 - Узнайте названия ваших шрифтов, чтобы вы могли называть их

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

Swift

for family: String in UIFont.familyNames(){
  print("\(family)")
  for names: String in UIFont.fontNamesForFamilyName(family){
      print("== \(names)")
  }
}

Цель C

for (NSString* family in [UIFont familyNames]){
    NSLog(@"%@", family);
    for (NSString* name in [UIFont fontNamesForFamilyName: family]){
        NSLog(@"  %@", name);
    }
}

Ваш журнал должен выглядеть примерно так:

Example of searching log to find font names

Шаг 4 - Используйте новый пользовательский шрифт, используя имя из шага 3

Swift

 label.font = UIFont(name: "SourceSansPro-Regular", size: 18)

Цель C

 label.font = [UIFont fontWithName:@"SourceSansPro-Regular" size:18];
10 голосов
/ 07 декабря 2010

Найдите TTF в поиске и "Получить информацию". Под заголовком «Полное имя:» он дал мне имя, которое я затем использовал с fontWithName (я просто скопировал и вставил точное имя, в этом случае расширение «.ttf» не было необходимо).

8 голосов
/ 28 апреля 2009

Это еще не вышло, но следующая версия cocos2d (2d каркас игры) будет поддерживать растровые шрифты переменной длины в виде карт персонажей.

http://code.google.com/p/cocos2d-iphone/issues/detail?id=317

У автора нет точной даты выпуска этой версии, но я видел сообщение, в котором указывалось, что это будет в следующем месяце или двух.

8 голосов
/ 15 января 2011

Одно важное замечание: вы должны использовать «имя PostScript», связанное со шрифтом, а не его полное имя или фамилию. Это имя часто может отличаться от обычного имени шрифта.

6 голосов
/ 09 марта 2013

выполните этот шаг

1) Скопируйте свой шрифт в свой проект

2) открыть файл .plist в режиме исходного кода ... (Примечание. Не открывать info.plist)

3) До этого - щелкните правой кнопкой мыши на вашем шрифте и откройте его в fontforge или аналогичном редакторе и install в вашей системе. Это должно быть install

4) Введите это

 <key>UIAppFonts</key>
<array>
    <string>MyriadPro.otf</string>
</array>

5) Введите этот код в class .m

 [lblPoints setFont:[UIFont fontWithName:@"Myriad Pro" size:15.0]];

Здесь lblPoints будут меняться с вашего UILabel

Готово !! Если ваш шрифт по-прежнему не работает, сначала проверьте его совместимость

6 голосов
/ 01 мая 2009

Может быть, автор забыл дать шрифту имя Mac FOND ?

  1. Откройте шрифт в FontForge , затем перейдите в Элемент> Информация о шрифте
  2. Существует опция "Mac", в которой вы можете установить имя FOND.
  3. Под File> Export Font вы можете создать новый ttf

Вы также можете попробовать опцию «Apple» в диалоговом окне экспорта.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Я не разработчик для iPhone!

6 голосов
/ 28 октября 2009

Я пробовал различные предложения на этой странице на iOS 3.1.2, и вот мои выводы:

Простое использование [UIFont fontWithName:size:] со шрифтами в каталоге Resources не будет работать, даже если имя FOND установлено с помощью FontForge.

[UIFont fontWithName:size:] будет работать, если шрифты сначала загружаются с помощью GSFontAddFromFile. Но GSFontAddFromFile не является частью iOS 3.1.2, поэтому он должен быть динамически загружен, как описано в @ rpetrich.

5 голосов
/ 09 апреля 2009

Смотри вверх ATSApplicationFontsPath

Простая запись plist, которая позволяет вам включать файлы шрифтов в папку ресурсов вашего приложения, и они "просто работают" в вашем приложении.

5 голосов
/ 16 марта 2011

Лучшее решение - добавить новое свойство "Fonts provided by application" в ваш файл info.plist.

Затем вы можете использовать свой собственный шрифт как обычный UIFont.

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