I've run into a problem drawing emoji that are under the 'Miscellaneous Symbols And Pictographs' unicode block.
Here is an example code:
<?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);
?>
Here is the output:
Here is what it should look like:
As you can see, these emoji are both under different Unicode blocks. The cyclone is under 'Miscellaneous Symbols And Pictographs' and the HTML entity is drawn instead of the actual character, but the snowman is under 'Miscellaneous Symbols' and is drawn correctly. I have double checked to make sure the font I am using contains both characters.
To be clear, I want the actual character to be drawn and not the HTML entity.
The same characters rendered as UTF8:
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…