Шрифт Bangla (Unicode) не корректно отображается в tcpdf

Я столкнулся с проблемой создания pdf в php с помощью библиотеки TCPDF. Мне нужно правильно отобразить шрифт bangla. Я попытался добавить шрифт bangla (то есть SolaimanLipi.ttf, SutonnyOMJ.ttf, Siyamrupali.ttf, Nikosh.ttf и т. Д.). Я вижу шрифт bangla в формате pdf, но шрифт отображается неправильно. Его неуместное слово.

Добавив этот шрифт, я вижу, что в каталоге / fonts / успешно создан 3 файла «solaimanlipi.ctg.z», «solaimanlipi.php» и «solaimanlipi.z». Так же как я могу видеть шрифт bangla в формате pdf, но этот шрифт неуместен / разбросан. Я прикрепляю фотографию, что я на самом деле вижу.

Вот как это должно выглядеть (из снимка экрана браузера): введите описание изображения здесь

Вот код для показа выше результата:

<?php $strData = file_get_contents('./data3.txt'); ?> <html lang="en" dir="ltr"> <head> <meta charset="utf-8" /> <style> @font-face { font-family: myUniFont; src: url(./SolaimanLipi_22-02-2012.ttf); } </style> </head> <body> <span style="font-family: myUniFont;"><?php echo $strData; ?></span> </body> </html> 

Я использую ниже код, чтобы использовать тот же самый шрифт в моем pdf:

 $strBNFont = TCPDF_FONTS::addTTFfont('./SolaimanLipi_22-02-2012.ttf', 'TrueTypeUnicode', '', 32); $pdf->SetFont($strBNFont, '', 8, '', 'false'); 

И так оно выглядит в формате PDF: 🙁

введите описание изображения здесь Пожалуйста, советую мне, как правильно отобразить шрифт bangla.

EDIT # 1

Вау! ;( О, МОЙ БОГ!

Уважаемый господин, проблема не в библиотеке pdf / tcPDF, ни даже в файле шрифта.

пожалуйста, проверьте приведенный ниже код php:

 <?php header('Content-type: image/png'); $text = 'তোমাদের জন্য মুক্তিযুদ্ধের গল্প'; $font = './Fonts/SolaimanLipi_22-02-2012.ttf'; $im = imagecreatetruecolor(600, 300); $bg_color = imagecolorallocate($im, 255, 255, 255); $font_color = imagecolorallocate($im, 0, 0, 0); imagefilledrectangle($im, 0, 0, 599, 299, $bg_color); imagettftext($im, 20, 0, 10, 50, $font_color, $font, $font); imagettftext($im, 20, 0, 10, 120, $font_color, $font, $text); imagepng($im); imagedestroy($im); ?> 

это как он экспортирует / отображает png-изображение в браузере:

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

когда я пытаюсь распечатать текст в файле изображения, используя функцию imagettftext, он также нарушил символ 🙁

так как я уверен, что это не проблема с шрифтом, потому что я только что протестировал с 60 + шрифтами и все сломалось. В то время как браузер (html-код) показывает их очень правильно.

так что, я думаю, что это намного больше, чем мой мозг может содержать / обрабатывать;

так, эксперт, как вы, может только выход 🙂

еще раз спасибо за ваше время

Solutions Collecting From Web of "Шрифт Bangla (Unicode) не корректно отображается в tcpdf"

TCPDF сам по себе не может обрабатывать скрипты Брахма .

Я опубликовал аналогичные для других языков: Как я могу создать Malayalam PDF с использованием TCPDF в PHP?

Я считаю, что mPDF поддерживает ваш текст на основе этого файла примера: http://mpdf1.com/examples/example_utf8.pdf

Я бы предложил попробовать mPDF , если вы не настроены на TCPDF. Это определенно проще, если вы можете заставить его работать, чем метод, который я собираюсь описать.


Еще одна альтернатива, хотя, на мой взгляд, гораздо сложнее использовать ImageMagick с Pango, чтобы сделать ваш текст в виде изображений, а затем включить его в PDF. Это отличается от обычного рендеринга шрифтов ImageMagick, который, как вы видели, так же сломан для вашего использования. Я включаю это больше из академического интереса, я бы не стал предлагать это делать, если вы не найдете веских оснований для этого.

В основном я должен был сделать это из оболочки после установки ImageMagick с поддержкой Pango:

 #Install font for my user. cp /host/SolaimanLipi_22-02-2012.ttf .fonts #update the font-config cache fc-cache #Render the text with pango convert -background white -size 400x pango:@/host/bangali.txt /host/out.gif 

Где /host/bangali.txt содержится <span font='18.5'>তোমাদের জন্য মুক্তিযুদ্ধের গল্প</span> *

Который тогда делает вывод таким образом, который, по моему мнению, по крайней мере в основном правилен:

Бангла сделана правильно, я думаю

Это связано с тем, что механизм формирования Pango способен это сделать. Есть несколько предостережений, хотя сделать это таким образом. Не последним из которых является получение font-config для правильной работы с CGI или mod_php, что выполнимо, но сложно в моем опыте.

  • Мне не нужно было указывать имя шрифта, так как у меня есть только один шрифт Bangala, поэтому font-config нашел и использовал тот, который я установил.