5

私は次の問題を抱えています:

FontConfiglibfontconfig.aの静的ライブラリをiPhoneプロジェクトに含めました。

アプリケーションは構築中であり、デバイス上で実行できますが、このライブラリの一部の機能を必要とするメソッドを呼び出すと、アプリケーションがクラッシュして次のエラーが発生します

Fontconfigエラー:デフォルトの設定ファイルを読み込めません

例外をスローして終了します

このエラーは通常、FontConfigが/ etc/fontsに通常あるfonts.confファイルを見つけられない場合に発生することを読みました。

しかし、そのファイルをiPhoneのこのディレクトリに移動することはできません。誰かが解決策を持っていますか?ファイルをアプリケーションバンドルにコピーするだけでも役に立ちませんでした。

助けていただければ幸いです。

4

1 に答える 1

4

私はついにこの問題を解決する方法を見つけました。fonts.confファイルの場所と/etc/fontsの前にあったパスを定義する環境変数FONTCONFIG_FILEとFONTCONFIG_PATHを設定しました。したがって、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); 

2番目のステップでは、fonts.confファイルを変更する必要がありました。プロジェクトのFC/fontsにfontsディレクトリを追加し、FC / cacheにcacheディレクトリを追加し、fonts.confファイルを2つの部分で調整しました。

私は最初の部分を変更しました:

<!-- 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>

そして2番目の部分:

<!-- Font cache directory list -->

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

に:

<!-- Font cache directory list -->

<cachedir>FC/cache</cachedir>

その後、それはもうクラッシュしませんでした。

于 2012-07-19T16:13:20.853 に答える