将Glyph索引转换为Unicode字符

Convert Glyph indices to Unicode character

本文关键字:Unicode 字符 转换 Glyph 索引      更新时间:2023-10-16

我正在开发一个打印机驱动程序示例。在这个示例中,我连接到DrvTextOut()调用。当回调被调用时,我会得到作为Glyph索引的文本。我想把这些Glyph索引转换成Unicode字符。

请告诉我如何转换。

一般来说,答案是"你不能"。例如,在PDF中,您可能有一个嵌入的字符映射,可以让您查找与字形对应的字符(例如,如果您使用带有pdfLaTeX的cmap包来制作PDF),但字形对字体来说是私有的,由于GSUB表的魔力,可能有许多字形用于同一个字符,反之亦然。

如果你真的很绝望可以访问有问题的字体,你可以尝试从字体文件中自己构建一个字符映射,但你最好知道你目前正在查看的是哪种字体。

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

如果你的意思是你需要处理STROBJ->flAccel设置了SO_GLYPHINDEX_TEXTOUT的情况,那么请参阅微软的Bobby Mattwilry的回答:

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

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

所以一旦你得到了SO_GLYPHINDEX_TEXTOUT,您的驱动程序应该处理字形本身尝试将其转换回Unicode。