サンプル・プログラムの実行例
みかちゃんFONTの入手
「みかちゃん」にアクセスし、メニュー「だうんろーど」から、使用OSを選んでダウンロードする。GDライブラリではフォント・コレクションは利用できないようなので、Windowsユーザーは、4種類あるフォントを別々にダウンロードすること。
なお、WindowsコーナーにあるLZH形式ファイルをダウンロードすれば、LinuxやOS Xのサーバ環境でも利用できる。
ここでは、「みかちゃん-P.ttf」を利用する。サーバ環境で使用する便宜上、ファイル名を"mikachan-p.ttf"と変更しておこう。
FONTのインストール先
が、ここでは、Webサーバ環境で利用するので、Apacheが支配しているディレクトリにコピーした方が都合がよい。ここでは /public_html/font/ に置いている。(サーバ環境によって異なるので、サーバ管理者に確認のこと)
サンプル・プログラム
| imagettftext.php | サンプル・プログラム本体 |
| バージョン | 更新日 | 内容 |
|---|---|---|
| 1.2.0 | 2026/03/01 | PHP8.5対応:imagedestroyを使わない |
| 1.1 | 2017/02/24 | フォントファイルを相対指定に |
| 1.0 | 2004/09/20 | 初版 |
サンプル・プログラムの解説
imagettftext.php
10: // TrueTypeフォント;環境に合わせて
11: define('FONTFILE', '../../../../common/font/mikachan-p.ttf');
12:
13: $canvas = imagecreate(600, 120); // イメージストリーム作成
14: $bgcolor = imagecolorallocate($canvas, 0xFF, 0xFF, 0xCC); // 背景色
15: $color = imagecolorallocate($canvas, 0x00, 0x00, 0xCC); // 文字色
16:
17: // 描画文字列はUTF-8にエンコードしておくこと
18: $str = 'ようこそぱふぅ家へ!'; // 描画文字列
19: $str = mb_convert_encoding($str, 'UTF-8', 'auto');
20:
21: imagettftext($canvas, 40, 0, 40, 80, $color, FONTFILE, $str); // 出力
22:
23: header('Content-type: image/png'); // MIMEはPNGで
24: imagepng($canvas); // ブラウザ表示
25: // PHP8.5:非推奨関数
26: if (PHP_VERSION_ID < 80500) {
27: imagedestroy($canvas);
28: }
29:
30: /*
そのあとに GD関数が登場する。
imagecreate は、GDライブラリの最初に呼び出す関数で、横xピクセル、縦yピクセルのGDイメージストリームを作成し、そのストリームへのイメージストリーム番号を返す。以後、このイメージストリーム番号に対して画像処理を行うことになる。
imagecolorallocate は、イメージストリーム番号imageに対して、red, green, blue(各8ビット)で与えられたカラーから成る色番号を返す。失敗すると(-1)を返す。以後、イメージストリーム番号imageに対するカラー処理は、この色番号を用いて行う。なお、最初にimagecolorallocate関数を呼び出した時の値は、暗黙のうちにイメージストリームの背景色となる。
次に文字色の色番号を設定している。
組み込み関数 mb_convert_encoding を用い、変数 $str のコードを自動で UTF-8 に変換する。これは、次の関数 imagettftext がUTF-8を入力パラメータとする仕様のためだ。
GD関数 imagettftext は、イメージストリーム番号imageに対し、大きさsizeピクセルの文字列textをTrueTypeフォントfontfileによって角度angleで位置x,yピクセルから描く。textはUTF-8であること。座標系は左上角を(0, 0)とする。
GD関数 imagepng は、イメージストリーム番号imageの内容を標準出力(クライアント)へPNG画像として送信する。
GD関数 imagedestroy は、イメージストリーム番号imageのメモリを解放する。PHPはプログラムが終わると自動的にメモリ解放処理を行うが、imagecreateに対する後処理として明記するのがよい。

日本語環境の場合、さまざまなフォントが利用できるにもかかわらず、利用できるフォントはクライアント(ブラウザ)に依存してしまう。
そこで今回は、GDライブラリがTrueTypeフォントを描画できることを利用して、フリーの日本語フォントを描画させる方法を紹介する。
(2026年3月1日)PHP8.5対応:imagedestroyを使わない