На iOS можно получить доступ к файлу TTF системного шрифта - PullRequest
9 голосов
/ 12 сентября 2010

Я пытаюсь FTGLES динамически отображать текст в произвольных шрифтах на OpenGL-ES на iOS (см. Мой вопрос SO здесь ).Эта библиотека, кажется, требует прямого доступа к файлу TTF, чтобы использовать шрифт.Используя кошерные методы, можно ли напрямую получить доступ к файлам системных шрифтов в iOS по пути?У меня есть RTFM, и я ничего не могу найти.

Если нет, кто-нибудь знает, одобрено ли Apple копирование системных шрифтов в ваше приложение (перед отправкой).

Ответы [ 3 ]

8 голосов
/ 21 февраля 2012

Мое решение было вдохновлено skia.

Хотя мы не можем получить прямой доступ к встроенным системным файлам шрифтов, у нас все еще есть косвенный способ:

Создать CGFont с нужным именем шрифта, вседоступ к содержимому таблицы SFNT этого CGFont можно получить, просто вызвав CGFontCopyTableTags () и CGFontCopyTableForTag ().

Данные шрифта ttf / otf можно затем с помощью этих таблиц построить, сохранить новый созданный шрифт на диске,позже вы сможете использовать его в FTGL ES.

7 голосов
/ 03 января 2012

Нет, вы не можете получить доступ к системно установленным файлам TTF на устройствах iOS. Так что вам придется встраивать те шрифты, которые вы хотите использовать.

Отказ от ответственности: я не юрист, и приемлемость использования системных шрифтов, поставляемых Apple, в приложении для iOS - это юридический вопрос о толковании лицензий на программное обеспечение, поэтому вы можете обратиться за профессиональной консультацией.

Вы хотите встроить шрифт Apple в ваше приложение. Определение «встраивать» немного туманно, поэтому добавление шрифта в приложение для iOS может соответствовать или не соответствовать определению правообладателя «встраивать». Некоторые типы домов определяют «вставлять», чтобы означать просто просмотр предопределенного контента во включенном шрифте; другое означает просмотр и редактирование содержимого этого шрифта. Отображение контента, который изменяется во время работы вашего приложения, находится где-то посередине между этими двумя случаями.

Согласно Mac OS X Lion 10.7.2 ELUA:

F. Шрифты. В соответствии с условиями настоящей Лицензии вы можете использовать шрифты, включенные в программное обеспечение Apple, для отображения и печати содержание во время работы программного обеспечения Apple; тем не менее, вы можете встраивать только шрифты в содержании, если это разрешено ограничениями встраивания сопровождающий шрифт в вопросе. Эти ограничения вложения могут быть находится на панели «Шрифт» / «Просмотр» / «Показать информацию о шрифте».

Если использование шрифтов в приложении iOS действительно «встраивается», вам просто нужно проверить конкретные шрифты, которые вы хотите использовать в Font Book.

В этой ситуации я бы нашел шрифт или набор шрифтов, в которых у меня было явное разрешение на включение шрифтов в приложение iOS. Я бы начал с покупки домов различного типа для схемы лицензирования, которая явно разрешала такое использование. Это может дорого обойтись, поэтому другим способом будет поиск шрифтов с открытым исходным кодом с лицензией, которая позволила бы это использование. Или, для очень ограниченного набора символов (например, только цифры), я бы даже подумал нарисовать свой собственный шрифт.

0 голосов
/ 04 января 2012

Нет. Ваше приложение не может получить доступ к файлам за пределами песочницы вашего приложения. Период (ну, если только он не взломан;). Но вы действительно можете связать файл шрифта. Теперь я не вижу причин, по которым Apple отклонит ваше приложение, поскольку оно использует файл, уже доступный на устройстве, а вы просто включаете в него свой локальный файл. С точки зрения авторского права Apple уже имеет такое разрешение на использование его на своем устройстве, поэтому ваше включение не должно быть проблемой.

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

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