2013-06-19 11 views
2

我試圖寫一些使用freetype2來渲染一些文本的軟件。將ttf字體導出爲C源代碼

但是,目前我開發的條件使得我的程序很難提供ttf字體。我處於死衚衕,但後來我看到freetype2爲我們提供了一個功能,它可以從內存中加載一張新面孔。

freetype2的文檔聲明我必須打開一個文件,並將其內容加載到內存的某處以使用它。但是,這並不能解決我的問題。是否有可能有類似於靜態緩衝區的東西來保存ttf文件的數據,並且我將能夠傳遞給FT_New_Memory_Face?我正在考慮類似於GIMP如何將圖像導出爲C源代碼。

我發現「font2c」,號稱要做到這一點(??),但每當我嘗試加載我的TTF字體文件,我得到這樣一個錯誤:

 

$ font2c Arial arial.c 

Converting Arial font. 
FontName is /Arial. 
Error: /invalidfileaccess in --file-- 
Operand stack: 
    --nostringval-- cfile (arial.c) (w) 
Execution stack: 
    %interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1910 1 3 %oparray_pop 1909 1 3 %oparray_pop 1893 1 3 %oparray_pop 1787 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- --nostringval-- 
Dictionary stack: 
    --dict:1166/1684(G)-- --dict:0/20(G)-- --dict:84/200(L)-- --dict:52/100(L)-- 
Current allocation mode is local 
Current file position is 20084 
GPL Ghostscript 9.06: Unrecoverable error, exit code 1 

我能做些什麼? ?? 在此先感謝!

PS。對不起,我的英文不好,我不是一個母語

回答

2

您可以使用該工具xxd(這是分佈VIM的一部分)與-i選項將二進制文件轉換爲C源,這將創建一個數組包含該文件的內容。

+0

然後我可以將該數組傳遞給FT_New_Memory_Face,對不對? – neoaggelos

+0

@ user2500758:想必 - 它就像你將它從一個文件加載到內存中一樣。 – caf