2012-07-13 16 views
5

Tôi có vấn đề sau đây:iPhone: Fontconfig lỗi: Không thể tải tập tin cấu hình mặc định

tôi bao gồm một thư viện tĩnh của Fontconfig libfontconfig.a vào dự án iPhone của tôi.

Ứng dụng này được xây dựng và tôi có thể chạy nó trên thiết bị nhưng khi tôi làm một cuộc gọi đến một phương pháp mà cần một số chức năng của thư viện này bị treo ứng dụng với các lỗi sau

Fontconfig error: Cannot load default config file

terminate called throwing an exception

tôi đọc rằng đây lỗi thường xảy ra khi FontConfig không thể tìm thấy tệp fonts.conf thường nằm trong/etc/fonts.

Nhưng tôi không thể di chuyển tệp đó vào thư mục này của iPhone. Có ai là một giải pháp? Chỉ cần sao chép tập tin vào gói ứng dụng cũng không giúp được gì.

Tôi sẽ đánh giá cao bất kỳ trợ giúp nào.

+0

Bạn có thể biên dịch fontConfig như thế nào. Bạn có thể chia sẻ thư viện không? –

+0

Tôi không tự biên dịch nó. Tôi lấy nó thành một dự án khác. Bạn có thể tìm fontConfig đã biên dịch trong dự án github này: https://github.com/xil3f/podofo_iOS_sample –

Trả lời

3

Cuối cùng tôi đã tìm ra cách để giải quyết vấn đề này. Tôi đặt Biến môi trường FONTCONFIG_FILE và FONTCONFIG_PATH xác định vị trí của tệp fonts.conf và đường dẫn trước /etc/fonts. Vì vậy, tôi có thể thêm các phông chữ phông chữ vào dự án và xác định đường dẫn @runtime.

Biến môi trường phải được đặt trong mã của bạn trước khi bạn gọi một phương thức cần chức năng của FontConfig. Tôi đặt nó sau khi bắt đầu ứng dụng của tôi trong AppDelegate.

Đây là mã tôi đã thêm:

//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); 

Trong bước thứ hai tôi đã có sau đó để sửa đổi tập tin fonts.conf tôi. Tôi đã thêm thư mục phông chữ vào FC/fonts và thư mục bộ nhớ cache tới FC/cache của dự án của tôi và điều chỉnh tệp fonts.conf trên hai phần.

tôi đã thay đổi phần đầu tiên:

<!-- Font directory list --> 

<dir>/usr/share/fonts</dir> 
<dir>/usr/X11R6/lib/X11/fonts</dir> 
<dir>~/.fonts</dir> 

tới:

<!-- Font directory list --> 

<dir>FC/fonts</dir> 

và phần thứ hai:

<!-- Font cache directory list --> 

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

tới:

<!-- Font cache directory list --> 

<cachedir>FC/cache</cachedir> 

Sau đó, nó không sụp đổ nữa.

Các vấn đề liên quan