mantis 升級到1.2.x后由于圖表輸出的解決方案發(fā)生了變化,除了原來支持的jpGraph圖像處理引擎之外,新增了對于Graphviz的支持,并且默認集成了graphviz作為圖像處理引擎。并且將相應的圖表輸出剝離出來,成為了mantis的一個插件。
但是mantis中并未默認開始圖表支持,需要在安裝配置完成后,以管理員身份登陸系統(tǒng),在插件(plugins)設置中開啟MantisGraph的支持。
默認的MantisGraph對中文的支持并不好,這是由于默認采用的字體并不支持中文字體輸出。這需要我們對mantis的代碼進行一定的修改后方才可以實現(xiàn)支持中文輸出,當然采用jpGraph和Graphviz兩種不同的圖像處理引擎需要做不同的處理。
由于mantis并未默認集成jpGraph,這里不詳細描述如何處理jpGraph的情況。jpGraph的相關支持,可以在網(wǎng)上找到許多的文章。下面詳細描述一下關于Graphviz的中文支持處理。
Mantis安裝于一臺Debian GNU/Linux操作系統(tǒng)中,中文字體文件采用的是開源文泉驛正黑字體,可以通過sudo apt-get install ttf-wqy-zenhei來安裝該字體。
MantisGraph插件存放于mantis的plugins/MantisGraph下,重點需要修改的文件為MantisGraph目錄下的core/graph_api.php文件,將其中的$t_font = ‘arial.ttf’;修改為$t_font = ‘wqy-zenhei.ttf’;即可。以下為diff文件的內(nèi)容:
@@ -72,7 +73,7 @@
if( isset( $t_font_map[$t_font] ) ) {
$t_font = $t_font_map[$t_font];
} else {
- $t_font = ‘arial.ttf’;
+ $t_font = ‘wqy-zenhei.ttf’;
}
@@ -82,11 +83,12 @@
可以修改wqy-zenhei.ttf為任意字體文件,實現(xiàn)支持其他語言的輸出,例如如果喜歡用simhei或者simson字體,那么則修改為SimHei和SimSun即可。
修改配置完成后發(fā)現(xiàn)還是失敗,無法正確輸出中文。經(jīng)過仔細查找,發(fā)現(xiàn)是mantis的一個處理機制問題。mantis在搜索字體的時候僅僅搜索以下目錄:
/usr/share/fonts/corefonts/
/usr/share/fonts/truetype/msttcorefonts/
/usr/share/fonts/msttcorefonts/
/usr/share/fonts/truetype/
然而文泉驛字體則是安裝于目錄/usr/share/fonts/truetype/wqy/中,并不在該搜索路徑中,因此導致無法找到該字體文件。那么則需要修改相應的搜索路徑,有如下方法可以修改這個參數(shù):
1、在config_defaults_inc.php或者config_inc.php中設置參數(shù)system_font_folder為/usr/share/fonts/truetype/wqy/
2、修改core/utility_api.php文件中的get_font_path()函數(shù),增加搜索路徑/usr/share/fonts/truetype/wqy/
但是以上方法僅能支持搜索某一個目錄下的文件,并不會搜索子目錄或者目錄集合下的字體文件。因此應該改進mantis中的搜索字體文件算法,修改為支持搜索子目下的字體文件。比如增加函數(shù):
get_font_file_from_system_path($font)
get_font_file_from_path($path,$font)
這些函數(shù)能搜索子目錄下的字體文件。
完成以上修改后,mantis可以正常輸出中文圖表了。