7

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

在此处输入图像描述

如果我复制此文本并粘贴到 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);

为什么它表现出性格,却放错了位置。

4

3 回答 3

1

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

于 2013-09-21T06:43:06.323 回答
1

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

在此处输入图像描述

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

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

于 2013-09-02T01:16:29.700 回答
1

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

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

mPDF的示例似乎演示了功能性印地语,正如对此问题的答案所引用的那样:印地语在 tcpdf 上不正确显示

于 2013-09-27T01:34:51.153 回答