1.定義済みのリストにあるフォント名/フォントファミリー
2.パス付のファイル名
のいずれかで指定する。
定義済みのリストは「-list font」で取得可能(6.3.6より前のバージョンでは「-list type」。ImageMagickのバージョンはphpinfoを参照)
リストを取得するコマンドをPHPで実行
exec("convert -list font", $output);
// 結果の表示
print_r($output);
// テキストファイルを書き出す場合
$output = implode("\n", $output);
file_put_contents("fonts.txt", $output);
コマンドプロンプトで実行する場合は以下
convert -list font > fonts.txt
フォントのリストはこのような構成
Path
┣Font
┃┗family、style、stretch、weight、glyphs
┣Font
┃┗family、style、stretch、weight、glyphs
︙
ImagickDraw::setFontで指定に用いるのはFontの項目。
形式は「Trebuchet-MS」のようにフォントファミリーのスペースがハイフンに変換されている、「Georgia-Bold」のように後ろにウェイトが追加されている といった感じ。
ImagickDraw::setFontFamilyではfamilyの項目を記述する。
指定したいフォント名にマルチバイト文字が含まれていて、尚且つPHPの内部エンコーディングはUTF-8でマシンはSJIS、といった場合には文字列の文字エンコーディングを変換して取り扱う。
$font = 'IPA-P明朝';
$font = mb_convert_encoding($font,"SJIS");
$draw->setFont($font);
また、glyphsの項目はdowncase処理されているため、glyphsのURLにマルチバイト文字が含まれている場合は要注意。
例)ゴシック→ピプッハ
関連記事:
Imagick::queryFontsでフォントの一覧を取得する
http://malog-notes.blogspot.jp/2014/02/imagickqueryfonts.html
※Pathの項目の「type-ghostscript.xml」はGhostscriptのインストールの有無を問わずリストに含まれていて、Ghostscriptがインストールされていない環境で「type-ghostscript.xml」のフォント名を指定すると最悪Apacheが落ちるのでこちらも要注意。