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正确运行,这是可行的,但在我的经验中很棘手。
font-config
。