iPhone: ошибка Fontconfig: невозможно загрузить файл конфигурации по умолчанию

У меня есть следующая проблема:

Я включил статическую библиотеку FontConfig libfontconfig.a в свой проект iPhone.

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

Ошибка Fontconfig: невозможно загрузить файл конфигурации по умолчанию

прекратить называется бросить исключение

Я прочитал, что эта ошибка обычно возникает, когда FontConfig не может найти файл fonts.conf, который обычно находится в / etc / fonts.

Но я не могу переместить этот файл в этот каталог iPhone. У кого-нибудь есть решение? Простое копирование файла в пакет приложений также не помогло.

Буду признателен за любую помощь.

1 ответ

Решение

Я наконец нашел способ решить эту проблему. Я установил переменную среды FONTCONFIG_FILE и FONTCONFIG_PATH, которые определяют расположение файла fonts.conf и путь, который был до / etc / fonts. Поэтому я могу добавить каталог шрифтов в проект и определить путь @runtime.

Переменные окружения должны быть установлены в вашем коде перед вызовом метода, которому требуется функциональность FontConfig. Я установил его после запуска приложения в AppDelegate.

Вот код, который я добавил:

//Get the directory of your Application
NSString *bundlePath = [[NSBundle mainBundle] resourcePath];

//Create a String with the location of your fonts.conf file
NSString *fontconfigFile= [bundlePath stringByAppendingString:
                             [NSString stringWithFormat:@"/fonts/fonts.conf"]];

//Create a String with the path of the FontConfig configuration path
NSString *fontconfigPath= [bundlePath stringByAppendingString:
                             [NSString stringWithFormat:@"/fonts"]];

//Set the Environment Variables
setenv("FONTCONFIG_FILE", [fontconfigFile UTF8String], 0); 
setenv("FONTCONFIG_PATH", [fontconfigPath UTF8String], 0); 

На втором этапе я должен был изменить свой файл fonts.conf. Я добавил каталог fonts в FC/fonts и каталог cache в FC/cache моего проекта и настроил файл fonts.conf на две части.

Я изменил первую часть:

<!-- Font directory list -->

<dir>/usr/share/fonts</dir>
<dir>/usr/X11R6/lib/X11/fonts</dir>
<dir>~/.fonts</dir>

чтобы:

<!-- Font directory list -->

<dir>FC/fonts</dir>

и вторая часть:

<!-- Font cache directory list -->

<cachedir>/opt/local/fc1407cd/var/cache/fontconfig</cachedir>
<cachedir>~/.fontconfig</cachedir>

чтобы:

<!-- Font cache directory list -->

<cachedir>FC/cache</cachedir>

Тогда это больше не падало.

Другие вопросы по тегам