2013-03-25 182 views
0

解析PDF文件時,遇到預定義的CMap(UniCNS-UTF16-H,您可以在這裏找到http://sourceforge.net/projects/cmap.adobe/files/cmapresources_cns1-6.tar.z/download)。當我研究它時,我發現單個CID可以被引用到多個unicode中。單個CID引用多個Unicode編碼

我的問題是,這是什麼目的?我怎麼知道我應該映射我的角色的unicode?

cid2code.txt文件的標題說:「在單個CMap文件中的多個編碼點中可能會引用單個CID,這些情況在逗號分隔的同一列中。但它沒有說明爲什麼。

我看了技術筆記#5080「CID鍵字體的Adobe-CNS1-6字符集」,但沒有找到我的答案。所以如果有人能指出我解釋這個問題的地方以及如何處理它,我將不勝感激。

回答

1

的Unicode本身具有duplicate characters。這些重複顯然應該映射到相同的字形

編輯:您似乎也有垂直/水平等同用v後綴代碼點前:FE30(垂直兩點)和2025v(TWO DOT LEADER)

EDIT2:從technote 5094引用

  1. 香港政府還確定84雙DUP的已在香港GCCS存在的授權字符。該方法是 被選擇爲將每一對的一個實例(通常是第二個或後來出現的)與先前存在的字符「統一」。出於向後兼容性的原因,以前由消失的「統一」 字符保留的代碼點保留。 同樣,用於表示「統一」對 的兩個字符的CID仍保留在字符集合Adobe-CNS1中,原因爲 向後兼容。
1

我不知道有一個詳細的通道任何地方明確規定爲什麼的CID規範允許映射多個CMap的代碼,但它確實。也許更多地瞭解CID字體的設計和使用可能會幫助您瞭解此練習的潛在用處。我建議通過the CID specification進行閱讀。

基本上,CID被設計爲字形的集合,其CMap機制可以任意將代碼或代碼與任何這些形狀相關聯。他們的CID本身只是字形,而不是 Unicodes。 CMaps被特意設計成與CID字體數據斷開連接,以便在不更改字形數據的情況下輕鬆更新和添加映射。因此,例如,具有Japan1-6排序的CID字體可以具有用於形狀集合的衆多映射(CMaps),並且有許多選擇(特別是對於日語!)。你甚至可以創造你自己的映射,如果你想...你只需分發CMap部分,並確保它符合有問題的順序。

在任何情況下:它種不要緊爲什麼這是可能的:它可能,那就是。所以如果你正在開發一些處理CID和/或CMaps的東西,你應該準備好處理這種情況。它可以並確實發生,如果你不準備處理它,你的代碼將最終破裂。

順便說一下:CID格式在這方面並不是唯一的。在OpenType(TrueType)中,通常的做法是做同樣的事情,也可能以其他字體格式。