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

Fra*_*ano 2 pdf fonts thai

我的应用程序应该能够输出包含多种支持语言的用户指南的 PDF 文件。(我正在使用pdfkit

我在寻找适合泰语的字体时遇到了一些麻烦:一些所谓的泰语支持的语言(包括来自 Google 的 Noto Thai)会输出方块、问号或更糟糕的不可读的东西。

经过一番研究,我发现一个似乎工作得相当好,直到我们的泰国人注意到字符

???

如下图所示,基本上第一个字符上方的两个元素折叠在一起,一个覆盖另一个

在此处输入图片说明

我正在使用从 myfonts.com 下载的 Nimbus Sans Thai Family,顺便说一下,它似乎能够正确渲染这些字符,因为您可能会喜欢尝试复制粘贴???在预览输入中

任何提示?

byt*_*ter 6

您的字体在某些方面不完整。它缺少一些通常位于 Unicode 的私有使用区 (PUA) 中的字形。
某些应用程序(我知道 Microsoft Word)可以手动解决这个问题,但您的渲染应用程序(和 Adob​​e Acrobat Viewer)不能。
您应该找到带有这些字形的字体,或者找到一个可以手动替换现有字形的应用程序。


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

除了规范字形外,格式良好的字体还应包含“私人使用区域”(PUA) 子范围,其中包含非规范形式的字形。这些字形包括:

  1. 声调标记移至上位以与上元音(SARA_ISARA_UE等)结合使用,而在辅音+声标且无上元音的情况下移至下位;
    KO_KAI + MAI_EK
  2. 色调标记和上层元音略微向左偏移用于与组合PO_PLAFO_FAN等(否则它将与辅音上尾重叠);
    PO_PLA + SARA_I
  3. 此外,两种效果结合在一起,例如音调标记同时向左移动:
    PO_PLA + MAI_EK
  4. 用于YO_YINGTHO_THAN(无尾)与下元音结合使用的特殊字形;
    YO_YING_SARA_U
  5. 还有几个;

通常,当渲染的应用程序找到上述符号组合时,它会在 PUA 区域中寻找替代字形。如果未找到,它只会回退到默认字形,这在您的情况下会发生。

以下是 Arial Unicode 和 FreeSerif 的 PUA 区域的两个屏幕截图,不言自明: FreeSerif 的 PUA 为空。我认为,你的 Nimbus 字体也会出现同样的问题。

缺少 PUA 的字体

填充PUA的字体


以及最后的观察。不正确的字体可能以不同的方式不正确。上面我描述了一个更规范的情况,即音调的标准位置标记上位,而非标准位置下移(或不存在,这构成了不完整的字体)。
但是,有些字体的行为方式相反。它们(仅)在较低位置包含音标。这就是你似乎观察到的。