将Glyph索引转换为Unicode字符
Convert Glyph indices to Unicode character
我正在开发一个打印机驱动程序示例。在这个示例中,我连接到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。
相关文章:
- 如何存储 unicode 字符并将其输出到文件?
- C++:打印 Unicode 字符
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 获取Unicode字符C++的十进制值
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- C++:如何将 unicode 字符打印到文本文件
- 动态计算 unicode 字符
- 如何将整数转换为 unicode 字符
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- MessageBox打印来自TCHAR缓冲区的额外Unicode字符
- 如何将小数NCR转换为Unicode字符(C )
- SQLGetPrivateProfileString 错误地读取 Unicode 字符
- 将 Unicode 字符/字符串写入文件
- 将 Unicode 字符存储在.txt文件中的新行中
- 从终端 C++ 中的字符串中打印出 unicode 字符
- Unicode 字符分类与 boost::locale
- 字符数组中的滤波器unicode字符
- Unicode 字符问题/转换参数
- 从包含Unicode字符的文件中读取
- 从ASCII到Unicode字符代码的转换(FreeType2)