在PDF中未正确呈现泰语字符

在PDF中未正确呈现泰语字符,pdf,fonts,thai,Pdf,Fonts,Thai,我的应用程序应该能够输出一个PDF文件,其中包含几种受支持语言的用户指南。(我正在使用) 我很难找到适合泰语的字体:一些所谓的泰语支持的语言(包括谷歌的notothai)会输出方块、问号或者更糟糕的不可读的东西 经过一点研究,我发现了一个似乎相当有效的方法,直到我们的泰国人注意到charachters ต่ำ 如下图所示,基本上第一个角色上面的两个元素折叠,一个覆盖另一个 顺便说一句,我正在使用它,它似乎能够正确地呈现这些字符,因为您可能希望尝试复制粘贴ต่ำ 在预览输入中 有什么提示吗 您的

我的应用程序应该能够输出一个PDF文件,其中包含几种受支持语言的用户指南。(我正在使用)

我很难找到适合泰语的字体:一些所谓的泰语支持的语言(包括谷歌的notothai)会输出方块、问号或者更糟糕的不可读的东西

经过一点研究,我发现了一个似乎相当有效的方法,直到我们的泰国人注意到charachters

ต่ำ

如下图所示,基本上第一个角色上面的两个元素折叠,一个覆盖另一个

顺便说一句,我正在使用它,它似乎能够正确地呈现这些字符,因为您可能希望尝试复制粘贴ต่ำ 在预览输入中


有什么提示吗

您的字体在某种程度上不完整。它缺少一些通常位于Unicode专用区域(PUA)中的标志符号。
某些应用程序(我知道Microsoft Word)可以手动解决此问题,但您的渲染应用程序(和Adobe Acrobat Viewer)不能解决此问题。
您应该找到显示这些字形的字体,或者找到手动替换现有字形的应用程序


尽管许多字体声称支持泰语(而且它们确实包含“常规”泰语字形),但它们可能是不完整的

除了规范字形外,格式良好的字体还应包含“私人用途” 区域“(PUA)包含非规范形式的图示符的子范围。那些 字形包括:

  • 音调标记移到上部位置,以便与上部组合使用 元音(
    SARA_I
    SARA_UE
    等),在辅音+声调标记且无上元音的情况下下移到较低的位置
  • 声调标记和上元音稍微向左移动,以便与
    PO_PLA
    FO_FAN
    等组合使用(否则会与辅音的上尾重叠)
  • 此外,这两种效果结合在一起,例如,声调标记同时向左下移:
  • you_-YING
    thou-THAN
    (无尾)的特殊字形,用于与元音组合使用
  • 还有几个 通常,当渲染应用程序找到上述符号组合时,它会在PUA区域中查找替代图示符。如果找不到,它只会返回到默认glyph,这在您的情况下会发生

    以下是Arial Unicode和FreeSerif的PUA区域的两个屏幕截图 这是不言自明的:弗里瑟里夫的PUA是空的。我认为,同样的问题也发生在你的Nimbus字体上


    最后的观察。不正确的字体可能以不同的方式不正确。上面我已经描述了一个更为典型的情况,即声调标记的标准位置为上方位置,而非标准位置向下移动(或不存在,这构成了不完整的字体)。

    然而,也有一些字体的行为与此相反;它们(仅)包含较低位置的音调标记。这就是您所观察到的。

    问题在于PDFKit不执行复杂的脚本渲染
    一些脚本,如阿拉伯语、泰语等,需要根据上下文(字符串中的位置、相邻字符)进行字形替换和重新定位,而PDFKit似乎无法做到这一点
    PDF查看器应用程序精确显示PDF文件中定义的内容。Nimbus Sans Thai字体可能包含所有必需的字形,但bytebuster在其答案中解释的内容需要由PDFKit执行,而不是由查看器应用程序执行