我正在处理打印机驱动程序示例。在这个示例中,我挂钩到DrvTextOut()调用。当调用回调时,我将文本作为Glyph索引。我想将这些Glyph索引转换为Unicode字符。
请让我知道如何转换它。
答案 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。