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>
Тогда это больше не падало.