在Windows和Ubuntu上都使用印地文Unicode打印问题

我正在使用pdf格式的印度文字。 虽然印地文文本正在生成,但它显示为错位matras。 假设我有像'ज़िन्दगी'这样的词,但它显示为

如果我复制这个文本并粘贴在Libre Office Writer上,那么它会打印正确的。 我用tcpdf尝试了近两种字体。 Arial Unicode MS以及Lohit_hi

$tcpdf->SetFont('arialuni', 'B', 15, 'false');
$html = nl2br($result['Song']['hindi']);
$tcpdf->writeHTMLCell(0, 20, 20, 25, $html);

为什么它显示角色,但错位了他们的位置。


如果我将“ज़िन्दगी”复制并粘贴到Microsoft Word中,默认情况下显示如下:

它实际上是一个完全相同的unicode字符串(也就是后跟一个virama,后跟一个),但它只是以不同的方式呈现,具体取决于字体。 Unicode字体具有复杂的逻辑,用于决定何时将某个字符串替换为不同的字形,并且PDF使用的字体不支持您想要的特定替换。

您只需找到支持替换的字体,并确保您的PDF使用该字体。 (可能是因为您当前的setFont调用不能正常工作,或者您指定的字体在您设置时不可用,所以它使用系统的默认字体来表示印地文字符,它不支持替代你指的是)。


为什么不使用writeHTML()而不是writeHTMLCell() ? 你的问题与细胞明显相关。 看起来像行高是错误的,或者甚至有背景重复的CSS属性被设置(应该是background-repeat:none;)。 writeHTML()会阻止这一点。


我不相信TCPDF可以正确呈现印地语脚本。 单独的字体不足以呈现复杂的脚本。 以下引用是关于在TCPDF中呈现Saurashtra文本的评论主题的摘录。 这可能也适用于印地语。 就我所知,无法在TCPDF中呈现马拉雅拉姆语和古吉拉特语。

[回复:在TCPDF中渲染Saurashtra文本] [...]对于TCPDF,需要首先将真正的字体转换为afm格式,然后对于每个脚本,都会在tcpdf本身中实现变音符或连字规则。 [...]字体不足以进行渲染,复杂脚本也需要一个整形引擎来解释字形的形成规则。 这是PyPDFLib试图通过使用Pango进行脚本渲染和开罗图形来解决的问题。 Santosh - 评论创建一个新的语言生态系统 - Sourashtra为例

mPDF的例子似乎证明了功能性印地语,正如在这个问题的答案中引用的那样:印地语在tcpdf上显示不正确

链接地址: http://www.djcxy.com/p/15637.html

上一篇: Printing issue with Hindi Unicode on Windows and Ubuntu both

下一篇: Android library project to an Android app in Eclipse