Поскольку вы используете не встроенный шрифт, рендеринг будет зависеть от вашего программного обеспечения для чтения PDF. С языками CJK я обнаружил, что довольно просто добавить встроенный шрифт, и это решает проблему. Насколько я знаю, это не сработает для таких скриптов, как Kannada, из-за отсутствия поддержки в TCPDF. (Использование Lohit-Kannada.ttf
, например, решает проблему пробелов, но окончательный текст отображается неправильно.)
Вы слишком далеко продвинулись в своем проекте, чтобы использовать mPDF
, который явно поддерживает Kannada? Вот параллельное сравнение того, что мне удалось получить из TCPDF и mPDF (код каждого приведен ниже под изображением):
TCPDF:
require_once('TCPDF/tcpdf.php');
// create new PDF document
$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
$font = TCPDF_FONTS::addTTFfont('Lohit-Kannada.ttf', 'TrueTypeUnicode', '', 96);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('PANCARD PDF');
$pdf->SetTitle('PANCARD ID - '.$temp_token);
$pdf->SetSubject('PANCARD PDF');
$pdf->SetKeywords('PANCARD PDF, PDF, example, test, guide');
$pdf->setFooterData(array(0,64,0), array(0,64,128));
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
$pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$l['a_meta_charset'] = 'UTF-8';
$l['a_meta_dir'] = 'ltr';
$l['a_meta_language'] = 'kn';
$pdf->setLanguageArray($l);
$pdf->setFontSubsetting(true);
$pdf->SetFont($font, '', 11, '', true);
$pdf->AddPage();
$pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));
$html = 'ಮುಂದಿನ ನಿಲ್ದಾಣ ಉದ್ಯಾನ ನಗರ';
$pdf->writeHTMLCell(0, 0, '', '', $html, 0, 1, 0, true, '', true);
$pdf->Output(dirname(__FILE__).'/kannada_lang.pdf', 'F');
mPDF:
include 'vendor/autoload.php';
$mpdf = new \Mpdf\Mpdf();
//I'm being a little lazy here and letting mPDF select the appropriate
//appropriate font.
$mpdf->autoScriptToLang = true;
$mpdf->baseScript = 1; // Use values in classes/ucdn.php 1 = LATIN
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML('<span style="text-shadow: 0.2 0.2 2 rgb(196,196,196);">'.
'ಮುಂದಿನ ನಿಲ್ದಾಣ ಉದ್ಯಾನ ನಗರ</span>');
$mpdf->Output('kannada_mpdf_lang.pdf');