php imagettftext и конкретные эмодзи
Я столкнулся с проблемой рисования смайликов, которые находятся в блоке юникода «Разные символы и пиктограммы».
Вот пример кода:
<?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);
?>
Вот вывод:
Вот как это должно выглядеть:
Как видите, оба этих смайлика находятся под разными блоками Юникода. Циклон находится в разделе «Разные символы и пиктограммы», а сущность HTML отображается вместо фактического символа, а снеговик - в разделе «Разные символы» и отображается правильно. Я дважды проверил, чтобы убедиться, что шрифт, который я использую, содержит оба символа.
Чтобы было ясно, я хочу, чтобы рисовался реальный символ, а не сущность HTML.
Те же символы, что и в UTF8: