みかちゃんFONTの入手
「みかちゃん」にアクセスし、メニュー「だうんろーど」から、使用OSを選んでダウンロードする。GDライブラリではフォント・コレクションは利用できないようなので、Windowsユーザーは、4種類あるフォントを別々にダウンロードすること。
なお、WindowsコーナーにあるLZH形式ファイルをダウンロードすれば、LinuxやOS Xのサーバ環境でも利用できる。
ここでは、「みかちゃん-P.ttf」を利用する。サーバ環境で使用する便宜上、ファイル名を"mikachan-p.ttf"と変更しておこう。
FONTのインストール先
が、ここでは、Webサーバ環境で利用するので、Apacheが支配しているディレクトリにコピーした方が都合がよい。ここでは /public_html/font/ に置いている。(サーバ環境によって異なるので、サーバ管理者に確認のこと)
サンプル・プログラム
imagettftext.php | サンプル・プログラム本体 |
サンプル・プログラムの解説
2: //TrueTypeフォント;環境に合わせて
3: define('FONTFILE', '../../../../common/font/mikachan-p.ttf');
4:
5: $canvas = imagecreate(300, 60); //イメージストリーム作成
6: $bgcolor = imagecolorallocate($canvas, 0xFF, 0xFF, 0xCC); // 背景色
7: $color = imagecolorallocate($canvas, 0x00, 0x00, 0xCC); // 文字色
8:
9: //描画文字列はUTF-8にエンコードしておくこと
10: $str = 'ようこそぱふぅ家へ!'; //描画文字列
11: $str = mb_convert_encoding($str, 'UTF-8', 'auto');
12:
13: imagettftext($canvas, 20, 0, 20, 40, $color, FONTFILE, $str); //出力
14:
15: header('Content-type: image/png'); //MIMEはPNGで
16: imagepng($canvas); //ブラウザ表示
17: imagedestroy($canvas); //後処理

そのあとに 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フォントを描画できることを利用して、フリーの日本語フォントを描画させる方法を紹介する。