У нас есть микросервис для обработки изображений, который создал насыщенные изображения с текстом поверх него, и мы находимся в процессе добавления арабского языка на наш сайт
При переводе некоторого содержимого на арабский язык наш переводчик сказал нам, что текст на сгенерированных изображениях отображается неправильно на арабском языке - они отображаются без лигатур, поэтому каждый символ разделен.
В настоящее время мы используем 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» синтаксиса и не решает арабскую проблему.
Пожалуйста - если вы знаете какое-либо решение, я буду любить вас вечно!
Спасибо.