Bangla(Unicode)字体在tcpdf中不能正确显示

我正在面对使用TCPDF库在php中生成pdf的问题。 我需要正确显示孟加拉字体。 我试图添加一些孟加拉字体(即SolaimanLipi.ttf,SutonnyOMJ.ttf,Siyamrupali.ttf,Nikosh.ttf等)。 我可以在pdf上看到孟加拉字体,但字体显示不正确。 它放错了这个词。

通过添加这种字体,我看到在/ fonts /目录下成功创建了3个文件“solaimanlipi.ctg.z”,“solaimanlipi.php”和“solaimanlipi.z”。 以及我可以在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中的样子:

在这里输入图像描述 请指教我如何正确显示孟加拉字体。

编辑#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代码)显示它们非常正确。

所以,我的东西比我的大脑可以容纳/处理的要大得多;(

所以,像你这样的专家可能只有出路:)

再次感谢您的时间


TCPDF本身不能处理Brahmic脚本。

我发布了类似的其他语言:我如何使用PHP中的TCPDF创建Malayalam PDF?

我相信mPDF支持基于此示例文件的文本:http://mpdf1.com/examples/example_utf8.pdf

如果你没有在TCPDF上设置死锁,我会建议尝试使用mPDF。 如果能够实现这一目标,比起我要概述的方法,它肯定更容易。


另一种替代方法,但在我看来, 更复杂的是使用ImageMagick和Pango来将文本渲染为图像,然后将其包含在PDF中。 这与ImageMagick的正常字体渲染不同,正如你看到的那样,它正在被破坏以供你使用。 我将这个问题纳入了更多的学术兴趣,除非你找到一个令人信服的理由,否则我不一定会这样做。

在安装ImageMagick和Pango支持后,我基本上必须从shell执行此操作:

#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
  • 链接地址: http://www.djcxy.com/p/88679.html

    上一篇: Bangla (Unicode) font not rendering correctly in tcpdf

    下一篇: Printing Issue for Unicode Devnagari Script in Java