我正在使用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);
为什么它表现出性格但是错位了它们的位置。
答案 0 :(得分:1)
如果我将'ज़िन्दगी'复制并粘贴到Microsoft Word中,默认情况下会显示如下:
它实际上是完全相同的unicode字符串(也就是说,一个Çन后跟一个virama,然后是一个द),但它只是以不同的方式呈现,具体取决于字体。 Unicode字体具有复杂的逻辑,用于决定何时将某个字符串替换为不同的字形,并且PDF使用的字体不支持您想要的特定替换。
您只需要找到支持该替换的字体,并确保您的PDF使用该字体。 (可能是您当前的setFont调用无法正常工作,或者您指定的字体在设置时无法使用,因此它使用系统的隐藏字符的默认字体,这不支持你所指的替代品。)
答案 1 :(得分:1)
为什么不使用 writeHTML()而不是 writeHTMLCell()?您的问题与细胞明显相关。看起来像行高是错的,甚至设置了背景重复的CSS属性(应该是background-repeat:none;)。 writeHTML()会阻止这种情况。
答案 2 :(得分:1)
我不相信TCPDF可以正确呈现印地语脚本。单独的字体不足以呈现复杂的脚本。以下引用是关于在TCPDF中呈现Saurashtra文本的注释线程的摘录。这也可能适用于印地语。据我所知,马拉雅拉姆语和古吉拉特语无法在TCPDF中呈现。
[Re:在TCPDF中渲染Saurashtra文本] [...]对于TCPDF,真正的字体需要是 首先转换为afm格式,然后对于每个脚本,变音符号或连字规则在tcpdf本身中实现。 [...]字体不足以渲染, 复杂脚本也需要一个整形引擎 解释字形形成规则。这就是PyPDFLib试图通过使用Pango进行脚本渲染来解决的问题 开罗的图形。 Santosh -- Comment on creating a new Language ecosystem- Sourashtra as example
mPDF的示例似乎展示了功能性印地语,正如此问题的答案所引用:Hindi language not displaying correctly on tcpdf