我有以下问题:
我在我的 iPhone项目中包括了FontConfig libfontconfig.a的静态库。
应用程序正在构建中,我可以在设备上运行它,但是当我调用需要该库某些功能的方法时,应用程序崩溃并显示以下错误

我读到,当FontConfig找不到通常位于/etc/fonts中的fonts.conf文件时,通常会发生此错误。
但是我无法将该文件移动到iPhone的此目录中。有没有人解决?同样,仅将文件复制到应用程序捆绑包也无济于事。
我将不胜感激任何帮助。

最佳答案

我终于找到了解决这个问题的方法。我设置了环境变量 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文件。我在项目的FC/fonts中添加了fonts目录,在项目的FC/cache中添加了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>

然后它不再崩溃了。

关于iPhone:Fontconfig错误:无法加载默认配置文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11471538/

10-10 22:24