JpGraphメモ

目次
1 前準備
 1-1 TEMPディレクトリの設定
 1-2 日本語対応
  ・ フォント設定
  ・ 日本語タイトルのセット

PHPで簡単にグラフを作成するためのライブラリJpGraph

1 前準備
以下の記述について、変更点はdiff unified形式、
ファイル指定は 「diff -u 旧ファイル(オリジナル) 新ファイル」 でお送りします。
1-1 TEMPディレクトリの設定
WindowsXP環境ではCACHE_DIRを明示的に指定する必要があります。

jpgraph.php--
@@ -33,11 +33,11 @@
// this directory MUST be readable and writable for the process running PHP.
// Must end with '/'
// DEFINE("CACHE_DIR","/tmp/jpgraph_cache/");
+DEFINE ("CACHE_DIR", $TEMP."/jpgraph_cache/");

// Directory for jpGraph TTF fonts. Must end with '/'
// DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");

-


1-2 日本語対応
タイトル部分など、そのままでは日本語の表示に対応していません。
肝要な点は2つ。
  • フォントをマルチバイト対応のものにする
  • 表示するタイトル文字の文字コードはUnicodeにする
  • 以上をクリアすれば、普通に日本語をセットしても表示させることができるようになります。

    ・ フォント設定
    フォントについては先ず、TrueTypeフォントで日本語に対応しているものを用意します。
    次にjpgraph.phpにフォントの設定を追記します。

    jpgraph.php
    @@ -229,6 +230,13 @@
    DEFINE("FF_GEORGIA",16);
    DEFINE("FF_TREBUCHE",17);

    +// japanese MSGOSHTIC
    +define ("FF_GOTHIC", 20);
    +
    +define ("FF_JP_START", 20);
    +define ("FF_JP_END", 20);
    +define ("FF_JP_DEFAULT", FF_GOTHIC);
    +
    // Chinese font
    DEFINE("FF_SIMSUN",18);


    それから、フォント用クラスTTFにも追記します。

    @@ -2595,7 +2603,8 @@
    FF_SIMSUN => array(FS_NORMAL=>'simsun.ttc', FS_BOLD=>'simhei.ttf', FS_ITALIC=>'', FS_BOLDITALIC=>'' ),
    FF_VERA => array(FS_NORMAL=>'Vera.ttf', FS_BOLD=>'VeraBd.ttf', FS_ITALIC=>'VeraIt.ttf', FS_BOLDITALIC=>'VeraBI.ttf' ),
    FF_VERAMONO => array(FS_NORMAL=>'VeraMono.ttf', FS_BOLD=>'VeraMoBd.ttf', FS_ITALIC=>'VeraMoIt.ttf', FS_BOLDITALIC=>'VeraMoBI.ttf' ),
    - FF_VERASERIF => array(FS_NORMAL=>'VeraSe.ttf', FS_BOLD=>'VeraSeBd.ttf', FS_ITALIC=>'', FS_BOLDITALIC=>'' )
    + FF_VERASERIF => array(FS_NORMAL=>'VeraSe.ttf', FS_BOLD=>'VeraSeBd.ttf', FS_ITALIC=>'', FS_BOLDITALIC=>'' ),
    + FF_GOTHIC => array(FS_NORMAL=>'MSGOTHIC.ttc', FS_BOLD=>'', FS_ITALIC=>'', FS_BOLDITALIC=>'' )
    );
    }


    ページのINDEXへ

    ・ 日本語タイトルのセット
    StrokeText関数内で出力するテキストをUTF-8へ変換するための処理を追加します。
    mb_detect_encodingでテキストのエンコードを判別して、
    それが日本語(SJIS,EUC-JP,JIS,UTF-8)に該当した場合に
    UTF-8へmb_convert_encodingを使用して変換するようにしています。

    そしてもう一つ。日本語であることが確定していているのに、
    フォントが日本語フォントに対応していない場合については、
    先刻定義したデフォルトの日本語フォントに設定しています。。


    @@ -5889,6 +5898,17 @@
    // Do special language encoding
    $txt = $this->langconv->Convert($txt,$this->font_family);

    + // Japanese
    + $code = mb_detect_encoding($txt);
    + $conv = "UTF-8";
    + if (preg_match("/".$conv."/", "SJIS,EUC-JP,JIS,UTF-8")){
    + $txt = mb_convert_encoding($txt, $conv, $code);
    + // Japanese default fonts
    + if ($this->font_family<FF_JP_START || $this->font_family>FF_JP_END) {
    + $this->SetFont (FF_JP_DEFAULT);
    + }
    + }
    +
    if( !is_numeric($dir) )
    JpGraphError::Raise(" Direction for text most be given as an angle between 0 and 90.");


    ページのINDEXへ
    TIPS INDEXへ
    Last modified: Fri Des 28 19:10:15 2003