将Glyph索引转换为Unicode字符

时间:2011-06-15 04:44:18

标签: c++ winapi gdi+

我正在处理打印机驱动程序示例。在这个示例中,我挂钩到DrvTextOut()调用。当调用回调时,我将文本作为Glyph索引。我想将这些Glyph索引转换为Unicode字符。

请让我知道如何转换它。

2 个答案:

答案 0 :(得分:1)

一般来说答案是“你不能”。例如,在PDF中,您可能有一个嵌入的字符映射,可以让您查找与字形对应的字符(例如,如果您使用带有pdfLaTeX的cmap包来制作PDF),但字形是字体专用的,并且由于GSUB表格的神奇之处,可能会有许多字形被用于相同的字符,反之亦然。

如果您真的绝望并且可以访问相关字体,您可以尝试自己从字体文件构建字符映射,但是您最好知道您当前正在查看哪种字体

编辑:我认为您的问题标记不佳;你指的是this function吗?也许你已经拥有的FONTOBJ结构暴露了某种字体的字符映射,我不知道。

答案 1 :(得分:1)

如果你的意思是你需要处理STROBJ-> flAccel设置了SO_GLYPHINDEX_TEXTOUT的情况,那么请在微软的Bobby Mattappally看到这个答案:

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

  

并不总是有1:1的映射   字形索引和字符之间   代码,反之亦然。这是   尤其适用于国际   字符集如希伯来语,阿拉伯语   等。

     

所以一旦你得到这个   SO_GLYPHINDEX_TEXTOUT,你的司机   应该处理字形本身   尝试将其转换回来   的Unicode。