我如何改变编码的imagefttext()结果在php gd库


How can i change the encoding of imagefttext() result in php gd library?

我正在尝试改变我的imagefttext()结果的编码。
我的想法是在一个指定的图像上打印一些"阿拉伯"语言的文本,但结果显示在奇怪的形式。

我使用这个代码,但它是正确的工作只是英文字符串:

mb_internal_encoding('UTF-8');
$im =imagecreatefromjpeg('x.jpg');
$textcolor=imagecolorallocate($im, 0, 0, 255);
imagefttext($im, 18, 0, 10, 20,$textcolor,"Fonts/tahoma.ttf","مسعود أوزبل");
imagejpeg($im,"mozil.jpg",100);
imagedestroy($im);

对于这个问题,我有什么解决办法吗?
由于

阿拉伯字符不能被视为数组。而且imagefttext() 不支持RTL语言,如开箱即用的阿拉伯语。你需要做的是在不改变其形状(字形/符号)的情况下反转每个字符。@Lars的回答不起作用,因为阿拉伯语中的字符可能会根据其在单词中的位置而变化。在向image

写入阿拉伯语时出错

在imagettftext手册的注释中,有一个RTL语言的例子。试试这个

    $wordsArray = explode(" ", $text);
    $rtlCompleteText='';
    for ($i = sizeOf($wordsArray); $i > -1; $i = $i-1) {
        //$lettersArray = explode("|", str_replace(";|", ";", $wordsArray[$i]));
        $lettersArray = explode(";", $wordsArray[$i]);
        $rtlWord='';
        for ($k = sizeOf($lettersArray); $k > -1; $k = $k-1) {
            if (strlen($lettersArray[$k]) > 1) { // make sure its full unicode letter
                $rtlWord = $rtlWord."".$lettersArray[$k].";";
            }
        }
        $rtlCompleteText = $rtlCompleteText." ".$rtlWord;
    }
    return $rtlCompleteText;
}