アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちは。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フォルダを認識していないような気もしています。

本当に困っていますので、どなたか教えて下さいませ。
どうぞ宜しくお願い致します。

A 回答 (6件)

そもそも、日本語表示以外でグラフは表示できるのですよね?



windows鯖でしたか・・・・
windows鯖は使ったことがないので何ともいえないのですが。

グラフが表示できるのならば、php.ini触らなくても、フォントdirをきちんと指定してやればうまくいくと思いますが?・・・・たぶん
すいません、私は鯖もデスクトップとしても普通にLINUX使っているものでwindowsがインストールされたマシンを全く持っていないのでフォントファイルがどこにあるのかわからないです。

グラフが表示できないのなら、.htaccess使って設定を変更してみてはどうでしょう?
apacheならそこでフォルダ単位でphpも設定変更できるのですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/20 20:14

>サーバ側に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');

これでちゃんと表示されませんか?
    • good
    • 0

No.4の補足。



質問内容読み返したら、サーバ側に日本語フォントがないんですね。
No.4は、Windowsのfontsフォルダに日本語フォントがある場合です。

ないのでしたら、No.3で書いたUNIX環境で確認した手順でいいと思います。

この回答への補足

どうもすみません! 致命的なミスを犯してしまい
大変お手数をかけてしまいました!
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

補足日時:2005/04/20 10:24
    • good
    • 0

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ゴシックを表示するように修正し表示されるのを確認)
    • good
    • 0

なんで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
    • good
    • 0

参考になるかどうかわかりませんが・・・・・



私もかなり手こずった経験があります。
php.iniにinclude_pathの編集をして、
/usr/share/fonts/ja/TrueType/にmsttcorefontsをインストール後リンクさせて、mkfontdirとmkfontscaleを行ってjpgraph.phpのフォントdirをそこに集中させてやることで解決しました。

>あと、2708行目に追加で
ファイル名の定義はしていませんが、十分動いてます。

ちなみにFC1、php-4.3.10、jpgraph1.7です。

なんか私の文章がおかしい気もしますが・・・わかりますか?

この回答への補足

お返事有難う御座います。
ちょうど諦めようと腹をすえていた所でした。

まったく的を得たお返事で、やっと原因がわかった気がしております。
ですが、こちらの記述不足により、もう少しだけご助言頂きたく申し上げます。

こちらの環境は、WINDOWS XP PRO SP2で
サーバはレンタルなので、PHP.iniファイルを変更することは難しいかと思われます。
自分のサーバスペースへどうにか、fonts.dirファイルをUPしてみましたが
やっぱり上手くいきませんでした。
これ以外で必要な事をもう少し詳しく教えて頂きたいです。

お手数をお掛けしますが、どうぞ宜しくお願い致します。
お返事をお待ちしております。

補足日時:2005/04/20 00:12
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!