我有以下问题:
我在我的 iPhone项目中包含了FontConfig libfontconfig.a的静态库。
应用程序正在构建,我可以在设备上运行它但是当我调用需要该库的某些功能的方法时,应用程序崩溃并出现以下错误
Fontconfig错误:无法加载默认配置文件
终止调用抛出异常
我读到,当FontConfig找不到通常位于/ etc / fonts中的fonts.conf文件时,通常会发生此错误。
但是我无法将该文件移动到iPhone的这个目录中。有人有解决方案吗?仅将文件复制到应用程序包也没有帮助。
我将不胜感激。
答案 0 :(得分:3)
我终于找到了解决这个问题的方法。我设置了一个环境变量 FONTCONFIG_FILE和FONTCONFIG_PATH,用于定义fonts.conf文件的位置以及 / etc / fonts 之前的路径。所以我可以将 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 和缓存目录到我项目的 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>
然后它不再崩溃了。