Я хотел бы, чтобы приложение включало пользовательский шрифт для рендеринга текста, загружал его, а затем использовал его со стандартными UIKit
элементами, такими как UILabel
. Это возможно?
ios
cocoa-touch
fonts
Airsource Ltd
источник
источник
Ответы:
iOS 3.2 и более поздние версии поддерживают это. Прямо из документа « Что нового в iPhone OS 3.2» :
После того, как шрифты были установлены в
Info.plist
, вы можете использовать свои собственные шрифты как любой другой шрифт в IB или программно.На форумах Apple для разработчиков существует постоянная тема:
https://devforums.apple.com/thread/37824 (требуется вход в систему)
И вот отличное и простое учебное пособие из 3 шагов о том, как этого добиться (неработающая ссылка удалена)
Info.plist
файлу с именемUIAppFonts
.UIAppFonts
массива.Info.plist
[UIFont fontWithName:@"CustomFontName" size:12]
чтобы получить пользовательский шрифт для использования с вашими UILabels и UITextViews и т. Д.Также: убедитесь, что шрифты есть в ваших ресурсах Copy Bundle.
источник
Изменить: Начиная с iOS 3.2, эта функциональность встроена. Если вам нужно поддерживать pre-3.2, вы все равно можете использовать это решение.
Я создал простой модуль, который расширяет
UILabel
и обрабатывает загрузку файлов .ttf. Я выпустил его с открытым исходным кодом под лицензией Apache и поместил его на github .Важные файлы
FontLabel.h
иFontLabel.m
.Он использует часть кода из ответа Genericrich .
Просмотрите источник здесь.
ИЛИ
Скопируйте ваш файл шрифта в ресурсы
Добавьте ключ к вашему
Info.plist
файлу с именем UIAppFonts. («Шрифты, предоставленные приложением)Сделать этот ключ массивом
Для каждого имеющегося шрифта введите полное имя файла шрифта (включая расширение) в качестве элементов массива UIAppFonts.
Сохранить
Info.plist
Теперь в вашем приложении вы можете просто позвонить,
[UIFont fontWithName:@"CustomFontName" size:15]
чтобы получить собственный шрифт для использования с вашимUILabels
иUITextViews
т. Д.За дополнительной информацией
источник
В iOS 4 есть простой способ использовать пользовательские шрифты .
Chalkduster.ttf
) в папку ресурсов проекта в XCode.info.plist
и добавьте новый ключ с именемUIAppFonts
. Тип этого ключа должен быть массивом.Chalkduster.ttf
).[UIFont fontWithName:@"Chalkduster" size:16]
в своем приложении.К сожалению, IB не позволяет инициализировать метки с помощью пользовательских шрифтов. Посмотрите этот вопрос, чтобы решить эту проблему. Мое любимое решение - использовать пользовательский
UILabel
подкласс:источник
В Info.plist добавьте запись «Шрифты, предоставляемые приложением» и включите имена шрифтов в виде строк:
Затем убедитесь, что ваш шрифт включен:
Обратите внимание, что имя вашего файла ttf может не совпадать с именем, которое вы используете при установке шрифта для вашей метки (вы можете использовать приведенный выше код для получения параметра "fontWithName"):
источник
редактировать: этот ответ больше не существует с iOS3.2; использовать UIAppFonts
Единственный способ, которым я смог успешно загрузить пользовательские
UIFont
файлы, - это частная платформа GraphicsServices.Следующее загрузит все
.ttf
шрифты в основной комплект приложения:После загрузки шрифтов их можно использовать так же, как шрифты, предоставляемые Apple:
GraphicsServices можно даже загрузить во время выполнения, если API исчезнет в будущем:
источник
[NSString sizeWithFont:[UIFont fontWithName:@"customFont" size:14]];
возвращает 0 ширины и высоты для любых пользовательских шрифтов, которые я пробовал.С
iOS 8
+ иXcode 6
+ вы можете сделать это легко. Вот шаги:1) Перетащите ваш шрифт в
Xcode
папку «Файлы поддержки». Не забудьте пометить ваше приложение в разделе Добавить к целям . С этого момента вы можете использовать этот шрифтIB
и выбрать его из палитры шрифтов.2) Чтобы сделать этот шрифт доступным на вашем устройстве, откройте
info.plist
и добавьтеFonts provided by application
ключ. Он будет содержать ключ Item 0, вы должны добавить имя шрифта в качестве значения. Название шрифта может отличаться от вашего имени файла шрифта. Но сначала попробуйте добавить свое имя файла, в большинстве случаев это работает.Если нет, эта статья всегда помогала мне.
Вот быстрый фрагмент кода из этой статьи, чтобы помочь вам найти название вашего шрифта.
РЕДАКТИРОВАТЬ
Я хочу упомянуть, что вам нужно добавить файлы шрифтов к фазам сборки вашей Target , Copy Bundle Resources . Без этого вы не увидите свой шрифт на устройстве. И это может привести к неожиданному поведению.
Например, я сталкиваюсь
bug
, когда уUITextField
меня есть собственный шрифт, но его нет в ресурсах Copy Bundle . И когда я перехожу кviewcontroller
этомуtextfield
, происходит задержка около 4 секунд до вызоваviewDidLoad
функции. Устранение проблем со шрифтами устранило эту задержку. Итак, рекомендуем проверить это дважды. (rdar: // 20028250) Кстати, я не смог воспроизвести ошибку, но я уверен, что проблема была со шрифтом.источник
Я сделал это так:
Загрузите шрифт:
Теперь по вашему
drawRect:
, сделайте что-то вроде этого:По сути, вам нужно выполнить некоторую грубую силу, перебирая текст и перебирая магическое число, чтобы найти свое смещение (здесь, смотрите, я использую 29) в шрифте, но это работает.
Кроме того, вы должны убедиться, что шрифт является юридически встраиваемым. Большинство из них не являются, и есть адвокаты, которые специализируются на таких вещах, так что будьте осторожны.
источник
CGContextShowTextAtPoint()
- хотя это не работает с UTF-8.Да, вы можете включить пользовательские шрифты. Обратитесь к документации по UIFont, в частности, к
fontWithName:size:
методу.1) Убедитесь, что вы включили шрифт в папку ресурсов.
2) «Имя» шрифта не обязательно является именем файла.
3) Убедитесь, что у вас есть законное право использовать этот шрифт. Включая его в свое приложение, вы также распространяете его, и у вас должно быть на это право.
источник
Если вы используете
xcode 4.3
, вы должны добавитьfont
кBuild Phase
UnderCopy Bundle Resources
, согласно https://stackoverflow.com/users/1292829/arne в потоке, пользовательских шрифтов Xcode 4.3 . Это сработало для меня, вот шаги, которые я сделал для пользовательских шрифтов, чтобы работать в моем приложении:OTF
(илиTTF
) файлы в новую группу, которую создал, и принял выбор xcodecopying the files over to the project folder
.UIAppFonts
массив с вашими шрифтами, перечисленными как элементы в массиве. Простоnames
, а не расширение (например, "GothamBold
", "GothamBold-Italic
").project name
путь в верхней частиProject Navigator
левой части экрана.Build Phases
вкладку, которая появляется в основной области xcode.Copy Bundle Resources
раздел « » и нажмите,"+"
чтобы добавить шрифт."+"
.add to the project
.источник
Вот пошаговые инструкции, как это сделать. Нет необходимости в дополнительной библиотеке или специальном кодировании.
http://shang-liang.com/blog/custom-fonts-in-ios4/
В большинстве случаев проблема связана со шрифтом, а не с методом. Лучший способ сделать это - использовать шрифт, который наверняка будет работать, например, verdana или geogia. Затем измените на нужный шрифт. Если это не работает, возможно, имя шрифта неправильное, или шрифт не является хорошо отформатированным шрифтом.
источник
Очень легко добавить новый шрифт в ваше существующее приложение для iOS.
Вам просто нужно добавить шрифт, например, font.ttf в вашу папку ресурсов.
Откройте ваше приложение
info.plist
. Добавьте новую строку как «Шрифты, предоставляемые приложением» и введите имя шрифта как font.ttf.А при настройке шрифта делай как
setFont:"corresponding Font Name"
Вы можете проверить, добавлен ли ваш шрифт или нет
NSArray *check = [UIFont familyNames];
.Он возвращает все шрифты, поддерживаемые вашим приложением.
источник
Я бы порекомендовал следовать одному из моих любимых коротких руководств здесь: http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/, из которого исходит эта информация.
Шаг 1 - Перетащите ваш .ttf или .otf из Finder в ваш проект
ПРИМЕЧАНИЕ. - Обязательно установите флажок «Добавить к целям» в основной цели приложения.
Если вы забыли щелкнуть, чтобы добавить его к своей цели, нажмите на файл шрифта в иерархии проекта и на правой боковой панели выберите основную цель приложения в разделе « Целевое членство ».
Чтобы убедиться, что ваши шрифты являются частью цели вашего приложения, убедитесь, что они отображаются в ваших ресурсах Copy Bundle в фазах сборки
Шаг 2 - Добавьте имена файлов шрифтов в свой Plist
Перейдите к Custom Target Properties в вашем разделе Info и добавьте ключ к элементам в этом разделе с именем
Fonts provided by application
(вы должны увидеть, что он появляется в качестве опции при вводе, и он будет настроен как массив. Нажмите маленькую стрелку чтобы открыть элементы массива и ввести имена добавленных вами файлов .ttf или .otf, чтобы приложение знало, что это те файлы шрифтов, которые вы хотите получить доступнымиПРИМЕЧАНИЕ. Если ваше приложение дает сбой сразу после этого шага, проверьте правильность написания добавленных здесь элементов.
Шаг 3 - Узнайте названия ваших шрифтов, чтобы вы могли называть их
Довольно часто имя шрифта, видимое вашим приложением, отличается от того, что вы думаете, оно основано на имени файла для этого шрифта, вставьте это в свой код и просмотрите журнал, который ваше приложение делает, чтобы увидеть, какое имя шрифта вызывать в вашем коде.
стриж
Цель С
Ваш журнал должен выглядеть примерно так:
Шаг 4 - Используйте новый пользовательский шрифт, используя имя из шага 3
стриж
Цель С
источник
Найдите TTF в поиске и «Получить информацию». Под заголовком «Полное имя:» он дал мне имя, которое я затем использовал
fontWithName
(я просто скопировал и вставил точное имя, в этом случае расширение '.ttf' не было необходимости).источник
Это еще не вышло, но следующая версия cocos2d (2d каркас игры) будет поддерживать растровые шрифты переменной длины в качестве карт персонажей.
http://code.google.com/p/cocos2d-iphone/issues/detail?id=317
У автора нет точной даты выпуска этой версии, но я видел публикацию, в которой указывалось, что это будет в следующем месяце или двух.
источник
Одно важное замечание: вы должны использовать «имя PostScript», связанное со шрифтом, а не его полное имя или фамилию. Это имя часто может отличаться от обычного имени шрифта.
источник
следуйте за этим шагом
1) Скопируйте свой шрифт в свой проект
2) открыть
.plist
файл в режиме исходного кода ... (Примечание - не открыватьinfo.plist
)3) До этого - щелкните правой кнопкой мыши на вашем шрифте и откройте его в fontforge или аналогичном редакторе, и
install
это в вашей системе, должно бытьinstall
4) Введите это
5) Введите этот код в свой
class .m
Здесь lblPoints будут меняться с вашего
UILabel
Выполнено!! Если ваш шрифт все еще не работает, сначала проверьте его совместимость
источник
info.plist
?Может быть, автор забыл дать шрифту имя Mac FOND ?
Вы также можете попробовать опцию «Apple» в диалоговом окне экспорта.
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ : Я не разработчик IPhone!
источник
Я пробовал различные предложения на этой странице на iOS 3.1.2, и вот мои выводы:
Простое использование
[UIFont fontWithName:size:]
со шрифтами в каталоге Resources не будет работать, даже если имя FOND установлено с помощью FontForge.[UIFont fontWithName:size:]
будет работать, если шрифты сначала загружаются с помощью GSFontAddFromFile. НоGSFontAddFromFile
он не является частью iOS 3.1.2, поэтому он должен быть загружен динамически, как описано в @rpetrich.источник
Уважать
ATSApplicationFontsPath
Простая запись plist, которая позволяет вам включать файлы шрифтов в папку ресурсов вашего приложения, и они «просто работают» в вашем приложении.
источник
Я совмещал некоторые советы на этой странице с тем, что работает для меня в iOS 5.
Во-первых, вы должны добавить собственный шрифт в ваш проект. Затем вам нужно следовать совету @iPhoneDev и добавить шрифт в ваш файл info.plist.
После того, как вы это сделаете, это работает:
Однако вам необходимо знать название вашего шрифта в Postscript. Просто следуйте советам @Daniel Wood и нажимайте command-i, пока находитесь в FontBook.
Затем наслаждайтесь вашим собственным шрифтом.
источник
Сначала добавьте шрифт в формате .odt к вашим ресурсам, в этом случае мы будем использовать DINEngschriftStd.otf, затем используйте этот код, чтобы назначить шрифт метке
Чтобы убедиться, что ваш шрифт загружен в проект, просто позвоните
В .plist вы должны объявить шрифт. Просто добавьте запись «Шрифты, предоставляемые приложением» и добавьте строку элемента 0 с именем шрифта (DINEngschriftStd.otf).
источник
Для iOS 3.2 и выше: используйте методы, предоставленные несколькими выше, а именно:
[UIFont fontWithName:@"Real Font Name" size:16]
в вашем приложении.НО «Настоящее имя шрифта» не всегда то, что вы видите в Fontbook. Лучший способ - спросить у вашего устройства, какие шрифты он видит и каковы точные названия.
Я использую uifont-name-grabber, размещенный по адресу: uifont-name-grabber
Просто поместите нужные шрифты в проект xcode, добавьте имя файла в его plist и запустите его на устройстве, для которого вы создаете, он отправит вам полный список шрифтов, используя ожидаемые имена
UIFont fontWithName:
.источник
Лучшее решение - добавить новое свойство "
Fonts provided by application
" в вашinfo.plist
файл.Затем вы можете использовать свой собственный шрифт, как обычно
UIFont
.источник
Существует новый способ использования пользовательских шрифтов, начиная с iOS 4.1. Это позволяет загружать шрифты динамически, будь то файлы из приложения, загруженные данные или что-то еще. Он также позволяет загружать шрифты по мере необходимости, тогда как старый метод загружает их все во время запуска приложения, что может занять слишком много времени, если у вас много шрифтов.
Новый метод описан в ios-dynamic-font-loading
Вы используете
CTFontManagerRegisterGraphicsFont
функцию, предоставляя ей буфер с данными вашего шрифта. Затем он доступенUIFont
и для веб-просмотров, так же, как и при старом методе. Вот пример кода по этой ссылке:источник
kCTFontManagerErrorAlreadyRegistered
гласит: «Файл уже зарегистрирован в указанной области». developer.apple.com/library/ios/#documentation/Carbon/Reference/…Swift, кодовый способ: (работает также с swift 2.0)
Добавьте необходимые шрифты в ваш проект (как добавление изображений, просто перетащите в Xcode), убедитесь, что они нацелены на ваш проект,
добавьте этот метод и загрузите пользовательские шрифты (рекомендуется в
appDelegate didFinishLaunchingWithOptions
)Пример использования:
Используйте шрифт:
источник
Вы можете добавить необходимые файлы «FONT» в папку ресурсов. Затем перейдите в
Info.plist
файл проекта и используйте КЛЮЧ «Шрифты, предоставленные приложением» и укажите значение «ИМЯ ШРИФТА».Тогда вы можете вызвать метод
[UIFont fontwithName:@"FONT NAME" size:12];
источник
Я сделал все возможное, но новые шрифты не появляются, поэтому я нашел решение:
Когда вы перетаскиваете файлы fot (otf или ttf), НЕ забудьте установить флажок «Добавить к целям».
После этого ваш шрифт появится, и все будет работать нормально.
источник
Хотя некоторые из приведенных выше ответов верны, я написал подробное наглядное пособие для людей, у которых все еще есть проблемы со шрифтами.
Решения выше, которые говорят вам, чтобы добавить шрифт к списку и использовать
правильные. Пожалуйста, используйте любой другой хакерский способ. Если вы все еще сталкиваетесь с проблемами при поиске имен шрифтов и их добавлении, вот учебник -
Использование пользовательских шрифтов в приложении ios
источник
да, вы можете использовать собственный шрифт в вашем приложении
пошагово следуя туда:
Добавьте ваши файлы шрифтов в ваш проект в поддержку файлов
Добавьте ключ в файл Info.plist с именем UIAppFonts.
Сделать этот ключ массивом
Для каждого имеющегося шрифта введите полное имя файла шрифта (включая расширение) в качестве элементов массива UIAppFonts.
Сохранение Info.plist Теперь в вашем приложении вы можете просто вызвать [UIFont fontWithName: @ "ваше имя нестандартного шрифта" размер: 20], чтобы получить нестандартный шрифт для использования с вашими UILabels после применения этого, если вы не получаете правильный шрифт, тогда вы дважды щелкаете мышью. на пользовательский шрифт, и посмотрите внимательно имя шрифта верхней стороны идет и скопируйте этот шрифт, вставьте, здесь [UIFont fontWithName: @ "здесь мимо вашего имени пользовательского шрифта" размер: 20]
я надеюсь, что вы получите правильный ответ
источник
да, вы можете использовать собственный шрифт в вашем приложении
пошагово следуя туда:
Info.plist
файлу с именем UIAppFonts.Info.plist
сейчас в вашем приложении вы можете просто позвонить,[UIFont fontWithName:@"your Custom font Name" size:20]
чтобы получить пользовательский шрифт для использования с вашимUILabels
после применения этого, если вы не получаете правильный шрифт, тогда вы дважды щелкаете по пользовательскому шрифту и внимательно видите, что название шрифта верхней стороны подходит, и скопируйте этот шрифт, вставьте сюда,
[UIFont fontWithName:@" here past your Custom font Name" size:20]
я надеюсь, вы получите правильный ответисточник