2017-08-02 474 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而不是查看器應用程序執行。

相關問題