imagettftext и арабский язык: как я могу писать в режиме RTL?

Мне нужно писать в режиме RTL в imagettftext, потому что арабский язык таков: и я не хочу возвращать буквы, я имею в виду RTL (css-like) (direction: rtl), поэтому выровненный флаг справа … как я могу?

Мой простой код:

require('static/I18N/Arabic.php');
$Arabic = new I18N_Arabic('Glyphs');
$font="static/ArabicModern-Light.ttf";
$testo=$Arabic->utf8Glyphs($testo);
imagettftext($im, 26, 0, 560, 345, $textcolor, $font, "\"".$testo."\"");

Спасибо!

введите описание изображения здесь

0

Решение

После того, как в конце концов найти и скачать Ar-PHP 4.0 Я обновил этот ответ, чтобы использовать арабский. Поскольку я не понимаю по-арабски, я использовал текст «العَرَبِيَّة» из Арабская страница википедии.

Источник:

<?php

require_once('./Arabic.php');

$iw = 300; // image width.
$ih = 150; // image height.

$size = 40;
$angle = 0;
$font = 'arial';
$text = 'العَرَبِيَّة';

$obj = new I18N_Arabic('Glyphs');
$text = $obj->utf8Glyphs($text);

$box = imagettfbbox($size, $angle, $font, $text);
$tw = abs($box[6] - $box[4]); // text width.
$th = abs($box[7] - $box[1]); // text height.

$im = imagecreatetruecolor($iw, $ih);
imagefill($im, 0, 0, 0x00c0c0c0); // set a grey background.

// left aligned.
imagettftext($im, $size, $angle, 0, $th, 0x00000000, $font, $text);

// centre aligned.
imagettftext($im, $size, $angle, ($iw / 2) - ($tw / 2), $th * 2, 0x00000000, $font, $text);

// right aligned.
imagettftext($im, $size, $angle, $iw - $tw, $th * 3, 0x00000000, $font, $text);

header('Content-Type: image/png');
imagepng($im);
imagedestroy($im);

Результат (генерируется с помощью PHP 7.1):

введите описание изображения здесь

Справочное изображение из Википедии:

введите описание изображения здесь


Редактировать: Ниже приводится сравнение первых пяти строк из текст, который вы связали чтобы в вашем комментарий, выполните код, который я написал выше (очевидно, с некоторыми незначительными изменениями для обработки нескольких строк):

Ваше оригинальное изображение (обрезано) слева, мое сгенерированное изображение справа.

введите описание изображения здесьвведите описание изображения здесь

Помимо неправильного выравнивания это совпадение.

-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]