ExtTextOut不显示下标字符

时间:2011-04-12 22:12:15

标签: winapi unicode fonts drawtext

我正在尝试使用带有Courier New字体的ExtTextOut函数呈现以下文字:

C₁C₂C²C³

上标字符显示正常,但下标字符显示为块。如果我使用DrawText函数,则下标字符显示正常。

我的印象是DrawText内部调用ExtTextOut。我错了还是DrawText对字符串执行了一些额外的处理以允许下标字符出现?

我能做些什么让ExtTextOut使用Courier New字体显示下标字符?

我使用ExtTextOut的代码如下所示:

ExtTextOutW(hdc,x,y,0,0,szText,wcslen(szText),0);

2 个答案:

答案 0 :(得分:2)

汉斯在评论中指出,DrawText()现在使用字体链接实现,但看起来ExtTextOut()不是。

如果你真的想让它可靠地工作,你可能不得不自己做字体链接。我的一些代码解决了类似的问题:TextOutput C++ class

答案 1 :(得分:1)

如果你得到矩形而不是字形,那么问题就是你正在使用的字体。它没有必要的字形。例如,在XP上常见的,我没有安装它来检查。使用Windows charmap.exe小程序查找合适的字体。下标2是Unicode代码点'\ x2082'。