Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP function imagettftext() and unicode

Tags:

php

unicode

gd

I'm using the PHP function imagettftext() to convert text into a GIF image. The text I am converting has Unicode characters including Japanese. Everything works fine on my local machine (Ubuntu 7.10), but on my webhost server, the Japanese characters are mangled. What could be causing the difference? Everything should be encoded as UTF-8.

Broken Image on webhost server: http://www.ibeni.net/flashcards/imagetest.php

Copy of correct image from my local machine: http://www.ibeni.net/flashcards/imagetest.php.gif

Copy of phpinfo() from my local machine: http://www.ibeni.net/flashcards/phpinfo.php.html

Copy of phpinfo() from my webhost server: http://example5.nfshost.com/phpinfo

Code:

mb_language('uni');
mb_internal_encoding('UTF-8');

header('Content-type: image/gif');

$text = '日本語';
$font = './Cyberbit.ttf';

// Create the image
$im = imagecreatetruecolor(160, 160);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);

// Create some colors
imagefilledrectangle($im, 0, 0, 159, 159, $white);

// Add the text
imagettftext($im, 12, 0, 20, 20, $black, $font, $text);
imagegif($im);
imagedestroy($im); 
like image 887
gerdemb Avatar asked Oct 13 '08 15:10

gerdemb


1 Answers

I had the same problem. Converting font from otf to ttf helped. You can use FontForge (available in standard repository) to convert.

like image 118
obi Avatar answered Oct 03 '22 22:10

obi