[PHP-users 12566] jpgraphにて日本語フォント文字化け(長文です)

kawahara php-users@php.gr.jp
Wed, 15 Jan 2003 16:23:52 +0900


川原です。
すでに何度か話題になっている
jpgraphでの日本語TTFフォントについて教えてください。

PHP-4.3.0 + jpgraph-1.10.1にて
日本語を使用したグラフを表示したいと思っていますが、
文字化け(といより黒い塊)の問題を解消することが出来ません・・

行った設定は、過去のメーリングリストを参考に

./configure --without-mysql --enable-track-vars \
--with-apxs=/usr/local/apache/bin/apxs --enable-trans-sid \
--enable-mbstring --enable-mbstr-enc-trans --enable-mbregex \
--enable-ftp --with-sybase=/usr/local/include --with-pdflib=/usr/local \
--with-gd --enable-gd-native-ttf --with-tiff-dir=/usr \
--with-jpeg-dir=/usr/local --with-zlib-dir=/usr/local --with-png \
--with-iconv-dir=/usr/local/lib --with-freetype-dir=/usr --with-t1lib \
--with-ttf

にてmake installをやっています。(関係ないものを多く含みますが・・)

php.iniに
mbstring.language = Japanese
を追加し、

-------------------------------------------------------------------------
<?
Header ("Content-type: image/png");

$im = imagecreate (130, 30);
$black = ImageColorAllocate ($im, 0, 0, 0);
$white = ImageColorAllocate ($im, 255, 255, 255);

$font1 = "/usr/X11R6/lib/X11/fonts/TrueType/kochi-gothic.ttf";

$str = mb_convert_encoding("テスト", "UTF-8", "EUC-JP");

ImageTTFText ($im, 20, 0, 25, 25, $white, $font1, $str);

ImagePNG ($im);
ImageDestroy ($im);
?>
-------------------------------------------------------------------------
上記のスクリプトで、「テスト」の文字を確認しました。

さらにjpgraph.phpにて
-------------------------------------------------------------------------
//フォントの場所変更: 27行あたり
DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/TrueType/");

//フォントの追加: 180行あたり
DEFINE("FF_GOTHIC",18);
DEFINE("FF_MINCHO",19);

//1860行あたり
$this->font_files=array(
   FF_GOTHIC =>  array(FS_NORMAL=>'kochi-gothic', FS_BOLD=>'kochi-gothic',
      FS_ITALIC=>'kochi-gothic', FS_BOLDITALIC=>'kochi-gothic' ),
   FF_MINCHO =>  array(FS_NORMAL=>'kochi-mincho', FS_BOLD=>'kochi-mincho',
      FS_ITALIC=>'kochi-mincho', FS_BOLDITALIC=>'kochi-mincho' ),

//ここはデフォルトのまま: 107行あたり
DEFINE("LANGUAGE_CYRILLIC",false);
-------------------------------------------------------------------------
のフォント周りを書換えました。

この状態でサンプルの中のexample1.phpを少し書換えた
-------------------------------------------------------------------------
<?php
mb_http_output("pass");
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_line.php");

$ydata = array(11,3,8,12,5,1,9,13,5,7);

// Create the graph. These two calls are always required
$graph = new Graph(300,200,"auto");
$graph->SetScale("textlin");
$graph->img->SetMargin(50,90,40,50);
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->title->SetFont(FF_GOTHIC,FS_NORMAL);
$moji = mb_convert_encoding("テスト", "UTF-8","EUC-JP");
$graph->title->Set($moji);

// Create the linear plot
$lineplot=new LinePlot($ydata);
$lineplot->SetLegend("Test 1");
$lineplot->SetColor("blue");

// Add the plot to the graph
$graph->Add($lineplot);

// Display the graph
$graph->Stroke();
?>
--------------------------------------------------------------------------
上記のスクリプトを走らせると、
日本語フォントをつかったタイトル部分が文字化けを起こします。
”テスト”を英数字で"test"にかえて、mb_convert..をはずしても同様でした。
jpgraph.phpのなかで、日本語フォントの設定を英数字フォントにかえ、
"テスト”を"TEST"にかえると文字化けすることなくタイトルが表示されました。
エラーメッセージは出ていないので、フォントの場所等は大丈夫と思います。

他にやらなければならないことがあれば、教えてもらえないでしょうか。
よろしくお願いします。


環境
FreeBSD4.7-STABLE
apache_1.3.27
php-4.3.0
jpgraph-1.10.1
pdflib-4.0.3
(4.0.2のときだと、なぜかapacheがグラフ表示時に
 exit signal Illegal instruction (4)のエラーログを出しました。)
freetype-1.3.1_2
freetype2-2.1.2_1
png-1.2.5
t1lib-1.3.1
tiff-3.5.7
jpeg-6b_1