Не могу использовать пользовательские шрифты для PHP Imagick с Pango / другим решением для арабских лигатур - PullRequest
0 голосов
/ 08 мая 2018

У нас есть микросервис для обработки изображений, который создал насыщенные изображения с текстом поверх него, и мы находимся в процессе добавления арабского языка на наш сайт При переводе некоторого содержимого на арабский язык наш переводчик сказал нам, что текст на сгенерированных изображениях отображается неправильно на арабском языке - они отображаются без лигатур, поэтому каждый символ разделен.

В настоящее время мы используем ImageMagick (6.8.9-9) с PHP, а для генерации текста использовалось ImagickDraw-> annotateImage, которое работало до тех пор, пока мы не столкнулись с проблемой лигатур.

Я немного погуглил и обнаружил "панго", которое решает эту проблему, а также позволяет использовать своего рода синтаксис "html" для определения нескольких настроек для одной текстовой строки, что довольно круто. Проблема в том, что я не нашел способа использовать файлы пользовательских шрифтов

Это код:

$img = new \Imagick;
$img->newImage($width, $height, new ImagickPixel('transparent'));
$img->setBackgroundColor(new ImagickPixel('transparent'));
$img->setFont($fontFile); // didn't work
$img->setPointSize($fontSize);
$img->setOption("font", $fontFile); // didn't work
$img->newPseudoImage($width, $height, "pango:<span font='".$fontName."' foreground='".$textColor."'>".$text."</span>"); // font='".$fontName."' - also didn't work

Я также пытался установить шрифт в ОС Ubuntu и использовать только имя шрифта, но это тоже не сработало, а также сочетал все перечисленные выше опции или некоторые из них.

Я нашел этот вопрос: PHP Imagick не использует пользовательский шрифт> конвертирует . Но он сказал, что использовал «заголовок» вместо «панго» - что не обеспечивает этого классного «html» синтаксиса и не решает арабскую проблему.

Пожалуйста - если вы знаете какое-либо решение, я буду любить вас вечно!

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...