我以前的相关问题:
php work with images : write complete word in arabic,ttf font
我的问题是:
>如果我想在图像中写入احمد,它会显示为دمحا
嗯,我修好了,现在输出:احمد
使用此功能:
function arab($word){ $w = explode(' ',$word) ; $f = array(array('ا','أ'),'ب','ت','ث','ج','ح','د','ذ','ر','ز','س','ش','ص','ض','ط','ظ','ع','غ','ف','ق','ك','ل','م','ن','ه','و','ى'); $t = array(array('ا_','أ_'),'ب_','ت_','ث_','ج_','ح_','د_','ذ_','ر_','ز_','س_','ش_','ص_','ض_','ط_','ظ_','ع_','غ_','ف_','ق_','ك_','ل_','م_','ن_','ه_','و_','ى_'); $my_arab = '' ; foreach($w as $wo) { $r = array() ; $wo = str_replace($f,$t,$wo); $ne = explode('_',$wo) ; foreach($ne as $new) { $new = str_replace('_','',$new) ; array_unshift($r,$new); } $my_arab .= ' '.implode('',$r) ; } return trim($my_arab) ; }
但新问题是:
ححد
(分开的字母)应该是:
احمد
如何解决这个问题?
你的倒转阿拉伯字符的方式没有考虑到连接字形的本质.
但是,解决PHP / GD不能自动支持RTL语言(如阿拉伯语)的问题是一个有效的手段.
但是,解决PHP / GD不能自动支持RTL语言(如阿拉伯语)的问题是一个有效的手段.
您需要做的是使用完全符合您预期的ar-php库.
确保您的PHP文件编码是unicode / UTF.
例如>打开记事本>另存为>编码为UTF-8:
使用imagettftext在PHP中使用阿拉伯语排版的示例:
<?PHP // The text to draw require('./I18N/Arabic.PHP'); $Arabic = new I18N_Arabic('Glyphs'); $font = './DroidNaskh-Bold.ttf'; $text = $Arabic->utf8Glyphs('لغةٌ عربيّة'); // Create the image $im = imagecreatetruecolor(600,300); // Create some colors $white = imagecolorallocate($im,255,255); $grey = imagecolorallocate($im,128,128); $black = imagecolorallocate($im,0); imagefilledrectangle($im,599,299,$white); // Add the text imagettftext($im,50,90,$black,$font,$text); // Using imagepng() results in clearer text compared with imagejpeg() imagepng($im,"./output_arabic_image.png"); echo 'open: ./output_arabic_image.png'; imagedestroy($im); ?>
输出: