jpgraph中文显示问题的简洁版

来源:互联网 发布:window 命令启动软件 编辑:程序博客网 时间:2024/05/19 14:00

1、PHP JPGraph 中文字体设置
$graph->title->Set("www.php100.com");
$graph->title->SetFont(FF_FONT1,FS_BOLD); //英文字体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置字体,类型,大小

$graph->title->SetColor('red'); //设置字体颜色

$graph->title->SetFont(FF_SIMSUN,FS_BOLD); // 设置标题中文字体
$graph->legend->SetFont(FF_SIMSUN,FS_BOLD); //设置线条指示字体
$graph->yaxis->title->SetFont(FF_SIMSUN,FS_BOLD); //设置Y轴线条指示字体
$graph->xaxis->title->SetFont(FF_SIMSUN,FS_BOLD); //设置X轴线条指示字体

2、PHP JPGraph 背景和背景图片设置

$graph->SetColor('red'); //设置背景
$graph->SetBackgroundImage(“图片地址",1); //设置背景
$graph->img->SetMargin(0,0,0,0); // 空余四角边距(左右上下)

3、PHP JPGraph 3D效果图设置
$graph->Set3DPerspective(SKEW3D_LEFT,700,600,true);

//倾斜3D效果
// 1. 'SKEW3D_UP'
// 2. 'SKEW3D_DOWN'
// 3. 'SKEW3D_LEFT'
// 4. 'SKEW3D_RIGHT'

 

如果你的文件编码为utf-8,修改方法如下:
代码:
方法一,在程序中修改
$title="
流量图";
$title = iconv("UTF-8", "gb2312", $title);
$graph->title->Set($title);
方法二,修改源文件jpgraph_ttf.inc.php
在第99-106行,改成下面这样子
    elseif( $aFF === FF_SIMSUN ) {
        // Do Chinese conversion
        /*
        if( $this->g2312 == null ) {
        include_once 'jpgraph_gb2312.php' ;
        $this->g2312 = new GB2312toUTF8();
        }
        return$this->g2312->gb2utf8($aTxt);
        */
        return $aTxt;
    }

jpgraph
默认显示汉字时是把汉字编码认为gb2312,转化为utf-8以后再显示。
这样的话,如果你的文件编码是gb2312,SetFont方法的第一个参数为FF_SIMSUN即可。
如果你是utf-8编码你还需要先把汉字编码转化为gb2312,这样你的汉字才可以正常显示。

使用
可以参照jpgraph-2.3.4/src/Examples中的例子。下面是一些常用的:
$graph->title->Set(‘
设置图表的标题’);
$graph->xaxis->title->Set("
设置X轴的标题");
$graph->yaxis->title->Set("
设置Y轴的标题");

//
设置字体 如果是中文,第一个参数一般设置为FF_SIMSUN
SetFont(FF_SIMSUN,FS_BOLD,14);
//
如设置图表标题的字体
$graph->title->SetFont(FF_SIMSUN,FS_BOLD,14);

//
设置颜色
SetColor('red');

 

 

在jpgraph中添加其他中文字体的支持:

在jpgraph_ttf.inc.php里找到这行注释“ // Chinese font ”
在其下面用像这样的方法定义:define("FF_SIMFANG",9);(其中为了容易理解,其格式为:使用“FF_”开头加字体名,“9“为该常量的值,只要不和他原来的值相同,哪个数值都没问题的,只要不太大)

现在进行影射:
找到这个注释"// CONSTRUCTOR"(到这里,聪明的你一定知道怎么回事了),在数组里加入类似:
FF_SIMFANG=>array(FS_NORMAL=>'simfang',FS_BOLD=>'',FS_ITALIC=>'',FS_BOLDITALIC=>''),的项,该数组是有四个项,第一个为标准字体,第二个为粗体,第三个为斜体,第四个是粗斜体。每一项对应一个字体文件,他们的值就是去了扩展名的字体文件名,没有的话就不用填,除了标准以外。
来到这里,一般的英文字体的添加已经完成,但中文就还是被限制了,关键在以下地方:
找到LanguageConv类,即查找“class LanguageConv”
在函数Convert()里“elseif( $aFF === FF_SIMSUN )”这个地方用或(“||”)添加你之前定义的字体名,如”$aFF===FF_SIMFANG“