我终于找到了解决这个问题的方法。我设置了一个环境变量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 文件。我将字体目录添加到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>
然后它不再崩溃了。