2011-06-15 41 views
1

我正在使用打印機驅動程序示例。在這個示例中,我掛鉤了DrvTextOut()調用。當回調被稱爲我得到的文字作爲字形索引。我想將這些Glyph索引轉換爲Unicode字符。將字形索引轉換爲Unicode字符

請讓我知道如何轉換它。

回答

1

一般來說,答案是「你不能」。例如,在PDF文件中,可能會有一個嵌入式字符映射圖,用於查找與字形相對應的字符(例如,如果您使用pdfLaTeX的cmap包來創建PDF),但字形對於字體是私有的,並且由於GSUB表的魔力,可能會有許多符號用於相同的字符,反之亦然。

如果你真的很絕望可以訪問有問題的字體,你可以試着從字體文件中自己創建一個字符映射,但是你最好知道你當前正在查看哪種字體。

編輯:我認爲你的問題標籤很差;你指的是this function?也許你已經擁有的FONTOBJ結構暴露了某種字體的字符映射,我不知道。

1

如果你的意思是你需要處理,其中STROBJ-> flAccel具有SO_GLYPHINDEX_TEXTOUT集的話,那麼在這裏看到這個答案從微軟的鮑比Mattappally:

http://www.winvistatips.com/glyph-handles-drvtextout-t183048.html

沒有總是1:在字形索引和字符 代碼之間映射 ,反之亦然。這是 國際 字符集,如希伯來語,阿拉伯語 expecially真等

所以一旦你得到這個作爲 SO_GLYPHINDEX_TEXTOUT,你的驅動 應該處理的字形本身的努力將其轉換回 的Unicode而不是 。