2017-08-02 561 views
2

我的应用程序应该能够以多种支持语言输出包含用户指南的PDF文件。 (我正在使用pdfkit泰文字符在PDF中无法正确显示

我遇到了一些麻烦,找到适合泰语的字体:一些所谓的泰语支持语言(包括来自Google的诺托泰语)会输出正方形,问号或更难读的东西。

了一些研究之后,我发现了一个似乎合理工作,直到我们的泰国人指出,charachters

ต่ำ

是在下面的图片中呈现的一样,基本上是与这两个元素上面的第一个字符倒塌与一个覆盖其他

enter image description here

我使用Nimbus Sans Thai Family downloaded from myfonts.com这,顺便说一句,似乎能够呈现那些characte rs正确,因为您可能会喜欢试图在预览输入中复制粘贴膏剂

任何提示?

回答

1

您的字体在某种程度上是不完整的。它缺少通常位于Unicode的私用区(PUA)的字形。
某些应用程序(我知道Microsoft Word)可以手动解决此问题,但是您的呈现应用程序(和Adobe Acrobat Viewer)不能。
您应该查找带有这些字形的字体,或者查找可以手动替换现有字形的应用程序。


许多字体,尽管他们声称支持泰(和他们,确实,包含“普通”泰国字形),可以是不完整的。

除了canonic字形,格式良好的字体应该包含一个“Private Use Area”(PUA)子范围,其中包含非规范形式的字形。那些 字形包括:在联合使用具有上 元音(SARA_ISARA_UE等)的上部位置

  1. 音标记;
  2. 左上角的色调标记与 PO_PLA,FO_FAN等组合使用(否则会重叠);
  3. 特殊字形YO_YINGTHO_THAN与 组合下使用;
  4. 还有几个;

通常,当呈现的应用程序发现上述符号组合时,它会在PUA区域中查找替代字形。如果没有找到,它只会回落到默认的字形,这发生在你的情况。

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

A font with missing PUA

A font with filled PUA

0

的问题是,PDFKit不执行复杂的脚本渲染。
几种脚本(如阿拉伯语,泰语等)需要根据上下文(字符串中的位置,邻居字符)来进行字形替换和重新定位,PDFKit似乎不会这样做。
PDF查看器应用程序正好显示PDF文件中定义的内容。 Nimbus Sans Thai字体可能包含所有需要的字形,但是他的回答中解释的字节需要由PDFKit而不是查看器应用程序执行。

相关问题