「その他の記号と絵文字」ユニコード ブロックの下にある絵文字を描画する際に問題が発生しました。
コード例を次に示します。
<?php
header('Content-Type: image/png');
$im = imagecreatetruecolor(290, 60);
$grey = imagecolorallocate($im, 200, 200, 200);
$black = imagecolorallocate($im, 0, 0, 0);
imagefilledrectangle($im, 0, 0, 289, 59, $grey);
$font = 'seguisym.ttf';
$font = realpath($font);
//🌀 is the unicode html entity for a cyclone. It is under 'Miscellaneous Symbols And Pictographs'.
$text = "🌀 is a cyclone!";
imagettftext($im, 20, 0, 5, 22, $black, $font, $text);
//⛄ is the unicode html entity for a snowman. It is under 'Miscellaneous Symbols'.
$text = "⛄ is a snowman!";
imagettftext($im, 20, 0, 5, 52, $black, $font, $text);
imagepng($im);
imagedestroy($im);
?>
出力は次のとおりです。
これは次のようになります。
ご覧のとおり、これらの絵文字は両方とも異なる Unicode ブロックの下にあります。サイクロンは「Miscellaneous Symbols And Pictographs」の下にあり、実際のキャラクターの代わりに HTML エンティティが描画されますが、雪だるまは「Miscellaneous Symbols」の下にあり、正しく描画されます。使用しているフォントに両方の文字が含まれていることを再確認しました。
明確にするために、HTML エンティティではなく、実際の文字を描画したいと考えています。
UTF8 としてレンダリングされた同じ文字: