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

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

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

Я немного погуглил и нашел "pango", который решает эту проблему, а также позволяет использовать своего рода синтаксис "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" синтаксис и не решает арабскую проблему.

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

Благодарю.

0 ответов

Другие вопросы по тегам