- 締切済み
GD::Graphで日本語(全角文字)を表示できない
perlのGD::Graphモジュールを使ってグラフを作り、X軸やY軸のラベルに日本語(全角文字)を使いたいのですが表示できません。TrueTypeフォントを使っています。半角英数字は表示されていて、フォントの指定を変える(別フォント)とちゃんと見た目も変更が反映されているので半角ではTrueTypeフォントは使えているようです。 全角文字だけ、全く表示されなかったり、■や□のようなものが表示されたりします。 [環境] Red Hat Linux 7.3 2 perl 5.8.6 gd-2.0.33 freetype-2.2.1 GD 2.32 GD::Text 0.86 GD::Graph 1.4308 GDのインストール時の指定 Build JPEG support? [y] y Build PNG support? [y] y Build FreeType support? [y] y Build GIF support? [y] y Build support for animated GIFs? [y] y Build XPM support? [y] y 文字列はUTF-8にしないと文字化けするというのをみかけたので、 ソースをUTF-8で保存したり、 $string = jcode($string,'euc')->utf8; という処理をいれたり(ソースはEUC) use encoding "euc-jp";と先頭の方に書いたり 他、ソースをSJISにして変換とかやってみましたがだめでした。 何か他に確認するポイントや方法などありましたらお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
GDライブラリについてはよくわかりませんが、 TrueTypeフォントを指定する必要があるようです。 http://www.gadgety.net/shin/tips/unix/perl-gd.html > フォントの指定を変える(別フォント)とちゃんと見た目も変更が反映されているので半角ではTrueTypeフォントは使えているようです。 このあたりの指定方法がどのように行われているのか(または行われていないのか) 可能ならソースコードなどを提示してみると、回答がつきやすいのではないでしょうか。 http://itmedia.okwave.jp/kotaeru.php3?q=2037528 http://service.okwave.jp/cs/terms/index.html
お礼
回答ありがとうございました。 結局、検索したりいろいろ試したりして自力で解決しました。 参考までに解決方法をこの場を借りて書いておきます。 Linuxのライブラリのgdのバージョンを2.0.28にしたらうまくいきました。 これはgd 2.0.33が一律にだめということではなくて、この環境ではそうだったということです。gd 2.0.33でうまくいっている環境もあります。 それと yum をいれていろいろパッケージをアップデートしたりもしたのでその辺の影響もあるかもしれません。
補足
回答ありがとうございます。 TrueTypeフォントは指定しています。 紹介して頂いたURLのページも見ていまして、そこに載っているソースを使って試したりもしていました。例えばこんなのです。 ----------------------------- #!/usr/bin/perl -w use strict; use Jcode; use GD::Graph::bars; my @labels = qw( under 10s 20s 30s 40s 50s 60s 70s over ); my @dataset = qw( 20 40 60 80 65 15 10 20 5 ); my @data = ( \@labels, \@dataset); my $graph = GD::Graph::bars->new( 400, 300 ); $graph->set( title => jcode("some なんとか村の人口")->utf8, y_label => jcode("人数")->utf8 ); GD::Text->font_path( "/usr/share/fonts/ja/TrueType" ); $graph->set_title_font( "kochi-gothic.ttf", 14 ) or die $!; $graph->set_legend_font( "kochi-gothic.ttf", 12 ); $graph->set_x_axis_font( "kochi-gothic.ttf", 8 ); $graph->set_x_label_font( "kochi-gothic.ttf", 14 ); $graph->set_y_axis_font( "kochi-gothic.ttf", 8 ); $graph->set_y_label_font( "kochi-gothic.ttf", 14 ); my $image = $graph->plot( \@data ); open( OUT, "> graph.jpg") or die( "Cannot open file: graph.jpg" ); binmode OUT; print OUT $image->jpeg(); close OUT; ----------------------------- 質問時にもソースを載せようとしたのですが、文字数制限のために載せられなかったので省きました。のでこういった回答をいただくのを待っていたような状況です。 /usr/share/fonts/ja/TrueType/kochi-gothic.ttfというファイルは存在しています。またkochi-mincho.ttf、watanabe-mincho.ttf、wlmaru2004.ttf等のフォントも試しました。