• 締切済み

jpgraphの日本語フォントについて

こんにちは。PHPでjpgraphを使用している者です。 日本語フォントをSetするとエラーが出ます。 エラーは以下の通りです。 ”Unknoen font font family specificaion” です。 PHPがヴァージョン4なので,jpgraphは1,7を使用しています。 index.phpにて define('TTF_DIR', '/font'); として、サーバのFONTフォルダにTTFファイルを置いていますが エラーが出ます。 jpgraph.phpの設定では、デフォルトで日本語がありますが サーバ側のOSに日本語フォントが無いので サーバスペース上にFONTというディレクトリを作り そこにTTFファイルを置いて読み込ませようとしています。 jpgraph.phpでは、設定として、DEFINE("FF_MSGOTHIC". 44); とその範囲指定も最高44までと変更しています。 あと、2708行目に追加で FF_MSGOTHIC => array(FS_NORMAL=>'msgothic.ttc', FS_BOLD=>'', FS_ITALIC=>'', FS_BOLDITALIC=>'' ) ファイル名の定義もしています。 index.phpにて define('TTF_DIR', '/font'); のTTF_DIRの設定に問題があるのでしょうか? FONTフォルダを認識していないような気もしています。 本当に困っていますので、どなたか教えて下さいませ。 どうぞ宜しくお願い致します。

みんなの回答

  • Lean
  • ベストアンサー率72% (435/603)
回答No.6

>サーバ側にfonts.dirファイルを必ず置かなくてはいけないとの事 fonts.dirは必要ありません(UNIX環境/Windows環境共に) >DEFINE('MBTTF_DIR', 'http://***/***/***/font/'); > >HTTPから始まるフルパスは有効でしょうか? 試してみましたが、エラーになります。 -------8<-------8<-------8<-------8<-------8<------- 1. ダウンロードしたjpgraph-1.17.tar.gzを解凍して出来たjpgraph-1.17/src(配下のファイルを含め)をjpgraphとしてサーバ上のHTMLファイル等を置く場所に転送します。 2. jpgraphディレクトリ配下にフォント用のディレクトリfontsを作成します。 3. 作成したフォント用ディレクトリにフォントを転送します。 例) MSgothic.ttf 4. 作成したフォント用ディレクトリに以下のPHPスクリプトを作成します。 ○test.php -------8<-------8<-------8<-------8<------- <?php print getcwd(); ?> -------8<-------8<-------8<-------8<------- 5. 4で作成したPHPスクリプトをブラウザより実行する。 すると、フォント用ディレクトリの絶対パスのパス名が表示されます。 表示例) D:\Apache\Apache2\htdocs\jpgraph\fonts 6. jpg-config.inc:フォントディレクトリの設定(MBTTF_DIR) 5.のPHPスクリプトの実行結果に合わせて設定する(\は/に置き換える)  DEFINE("MBTTF_DIR","D:/Apache/Apache2/htdocs/jpgraph/fonts/"); 7. jpg-config.inc:フォントの指定を変更する。 以下のような所があるのでこれを3.で転送したフォントに合わせて修正する。 -------8<-------8<-------8<-------8<-------8<-------8<------- // Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC DEFINE('MINCHO_TTF_FONT','ipam.ttf'); DEFINE('PMINCHO_TTF_FONT','ipamp.ttf'); DEFINE('GOTHIC_TTF_FONT','ipag.ttf'); DEFINE('PGOTHIC_TTF_FONT','ipagp.ttf'); -------8<-------8<-------8<-------8<-------8<-------8<------- 本例の場合、MSゴシックのフォント(MSgothic.ttf)を転送したので以下のように修正。 DEFINE('GOTHIC_TTF_FONT','MSgothic.ttf'); これでちゃんと表示されませんか?

  • Lean
  • ベストアンサー率72% (435/603)
回答No.5

No.4の補足。 質問内容読み返したら、サーバ側に日本語フォントがないんですね。 No.4は、Windowsのfontsフォルダに日本語フォントがある場合です。 ないのでしたら、No.3で書いたUNIX環境で確認した手順でいいと思います。

sato777
質問者

補足

どうもすみません! 致命的なミスを犯してしまい 大変お手数をかけてしまいました! jpgraphのヴァージョンは、1.17です。 いつも書き間違えないようにしていたのですが、 こちらのミスでした。 v 1.17では、ソースを書き換えないでディレクトリだけDEFINEすることで表示できるように jpgraphが更新されていますよね。 でも表示できません。 あと、環境説明に誤りがありました。 PCとサーバは別のところにあります。 ネットを通じて接続していますので、Localのフォントを読み込むことはありません。書き損じて申し訳御座いませんでした。 ですから、サーバ側にFONTディレクトリを作って、 そこにfonts.dirとTTFファイルをUPして置き、テストしていますが 動作しません。 MSGOTHIC以外にも、デフォルトでjpgraph.phpに記載されている日本語フォントでもテストしていますが動作しません。 サーバの管理を委託しているアメリカ在住のアメリカ人のプログラマに聞いた所 jpgraph.phpのソースに変更が必要との事でした。 でも、それを変更するにはかなりの金額を要求されてしまいました(苦笑) あと、今気になったのですが、PCとサーバが別にある場合、サーバ側にfonts.dirファイルを必ず置かなくてはいけないとの事なのですが、その他に必要なものはあるのでしょうか? あと、DEFINEのPHP文も心配になってきました(滝汗) DEFINE('MBTTF_DIR', 'http://***/***/***/font/'); HTTPから始まるフルパスは有効でしょうか? もう泣きたくなってきました(泣) どうか見捨てずに宜しくお願い致しますm(__)m

  • Lean
  • ベストアンサー率72% (435/603)
回答No.4

No.3の補足 Windows環境での場合(JpGraph1.17) 1.jpg-config.inc:フォントの指定を変更する。 以下のような所があるのでこれを使用するフォントに合わせて修正する。 -------8<-------8<-------8<-------8<-------8<-------8<------- // Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC DEFINE('MINCHO_TTF_FONT','ipam.ttf'); DEFINE('PMINCHO_TTF_FONT','ipamp.ttf'); DEFINE('GOTHIC_TTF_FONT','ipag.ttf'); DEFINE('PGOTHIC_TTF_FONT','ipagp.ttf'); -------8<-------8<-------8<-------8<-------8<-------8<------- MSゴシックのフォント(MSgothic.ttf)について確認したので以下のように修正。 DEFINE('GOTHIC_TTF_FONT','MSgothic.ttf'); 2.jpgraph.phpを修正 2728行目付近に -------8<-------8<-------8<-------8<-------8<-------8<-------8<-------   if ($family >= FF_MINCHO && $family <= FF_PGOTHIC) {     $f = MBTTF_DIR.$f;   } else {     $f = TTF_DIR.$f;   } -------8<-------8<-------8<-------8<-------8<-------8<-------8<------- というところがあるので、以下のように修正。 -------8<-------8<-------8<-------8<-------8<-------8<-------8<-------   if ($family >= FF_MINCHO && $family <= FF_PGOTHIC) {     $f = TTF_DIR.$f;   } else {     $f = TTF_DIR.$f;   } -------8<-------8<-------8<-------8<-------8<-------8<-------8<------- 以上の設定でNo.3のときと同じく、JpGraphでMSゴシックを表示出来ています(Examples/listfontsex1.phpを元にMSゴシックを表示するように修正し表示されるのを確認)

  • Lean
  • ベストアンサー率72% (435/603)
回答No.3

なんでJpGraph1.7という古いバージョンを使用しているんでしょうか? 現在、PHP4用のStable branchの最新版は1.17です。 以下、1.17(UNIX環境で確認)で確認するため行った手順です。 設定ファイルであるjpg-config.incの編集だけで済みます。 1.フォント格納ディレクトリの作成   例)  /home/user/public_html/jpgraph/fonts/ 2.必要なフォントを1.で作成したディレクトリに転送する 例)  MSgothic.ttf 3.jpg-config.inc:フォントディレクトリの設定(MBTTF_DIR)  1.で作成したフォント格納ディレクトリに合わせて設定する  DEFINE("MBTTF_DIR","/home/user/public_html/jpgraph/fonts/"); 4.jpg-config.inc:フォントの指定を変更する。 以下のような所があるのでこれを2.で転送したフォントに合わせて修正する。 -------8<-------8<-------8<-------8<-------8<-------8<------- // Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC DEFINE('MINCHO_TTF_FONT','ipam.ttf'); DEFINE('PMINCHO_TTF_FONT','ipamp.ttf'); DEFINE('GOTHIC_TTF_FONT','ipag.ttf'); DEFINE('PGOTHIC_TTF_FONT','ipagp.ttf'); -------8<-------8<-------8<-------8<-------8<-------8<------- 本例の場合、MSゴシックのフォント(MSgothic.ttf)を転送したので以下のように修正。 DEFINE('GOTHIC_TTF_FONT','MSgothic.ttf'); 以上の設定で、JpGraphでMSゴシックを表示出来ています(Examples/listfontsex1.phpを元にMSゴシックを表示するように修正し表示されるのを確認)

参考URL:
http://www.aditus.nu/jpgraph/jpdownload.php
回答No.2

そもそも、日本語表示以外でグラフは表示できるのですよね? windows鯖でしたか・・・・ windows鯖は使ったことがないので何ともいえないのですが。 グラフが表示できるのならば、php.ini触らなくても、フォントdirをきちんと指定してやればうまくいくと思いますが?・・・・たぶん すいません、私は鯖もデスクトップとしても普通にLINUX使っているものでwindowsがインストールされたマシンを全く持っていないのでフォントファイルがどこにあるのかわからないです。 グラフが表示できないのなら、.htaccess使って設定を変更してみてはどうでしょう? apacheならそこでフォルダ単位でphpも設定変更できるのですが。

sato777
質問者

お礼

グラフは正常に機能しています。 Setフォントでエラーが出ている状況です。 PCとサーバが違うところにあるので、PCのフォントを使うことはできませんが、サーバ上にすべて置いているのに認識できないでいます。 本当に弱ってしまいました。 でも、お返事頂けて大変感謝しております。 有難う御座いました。

回答No.1

参考になるかどうかわかりませんが・・・・・ 私もかなり手こずった経験があります。 php.iniにinclude_pathの編集をして、 /usr/share/fonts/ja/TrueType/にmsttcorefontsをインストール後リンクさせて、mkfontdirとmkfontscaleを行ってjpgraph.phpのフォントdirをそこに集中させてやることで解決しました。 >あと、2708行目に追加で ファイル名の定義はしていませんが、十分動いてます。 ちなみにFC1、php-4.3.10、jpgraph1.7です。 なんか私の文章がおかしい気もしますが・・・わかりますか?

sato777
質問者

補足

お返事有難う御座います。 ちょうど諦めようと腹をすえていた所でした。 まったく的を得たお返事で、やっと原因がわかった気がしております。 ですが、こちらの記述不足により、もう少しだけご助言頂きたく申し上げます。 こちらの環境は、WINDOWS XP PRO SP2で サーバはレンタルなので、PHP.iniファイルを変更することは難しいかと思われます。 自分のサーバスペースへどうにか、fonts.dirファイルをUPしてみましたが やっぱり上手くいきませんでした。 これ以外で必要な事をもう少し詳しく教えて頂きたいです。 お手数をお掛けしますが、どうぞ宜しくお願い致します。 お返事をお待ちしております。

関連するQ&A