C++ W10/Wins32 C++;如何确定哪些字符可写入HDC

C++ W10/Wins32 C++;如何确定哪些字符可写入HDC,c++,windows,unicode,fonts,C++,Windows,Unicode,Fonts,在我自己的编辑器中,我用于代码文本编辑的goto字体多年来一直使用Console 我认为它的覆盖范围很好,但后来我发现W10添加了一个自动回退,所以即使是我的古埃及象形文字字体(U+13000等)也会出现 现在,我的编辑器(内部为UTF-8多字节,但切换到WCHAR进行显示,包括打包两个由21位组成的Unicode,SDK可以很好地处理这些Unicode)提供了一个弹出框,可以快速方便地访问键盘以外的字符,并使用GetFontUnicodeRanges()确定覆盖范围 这显然是远远不够的。我已经

在我自己的编辑器中,我用于代码文本编辑的goto字体多年来一直使用Console

我认为它的覆盖范围很好,但后来我发现W10添加了一个自动回退,所以即使是我的古埃及象形文字字体(U+13000等)也会出现

现在,我的编辑器(内部为UTF-8多字节,但切换到WCHAR进行显示,包括打包两个由21位组成的Unicode,SDK可以很好地处理这些Unicode)提供了一个弹出框,可以快速方便地访问键盘以外的字符,并使用GetFontUnicodeRanges()确定覆盖范围

这显然是远远不够的。我已经搜索过了,但没有找到一种方法来确定哪些字符代码会在屏幕上显示一个字符,而Windows在运行时却毫不费力地做到了这一点。我可以询问任何我想加载的字体,但不知道会发生什么

我一定错过了什么。我真的不想求助于将整个文本块写入HDC到位图,然后对旧矩形或?在一个我们都很熟悉的盒子里

有人已经这么做了吗? 我错过了什么魔术吗?
我现在退休了,所以我有时间钻研,但我已经没有主意了。

有帮助吗?谢谢,但看起来他遇到了与GetFontUnicoranges()相同的问题,只是做了WCHAR而不是补充(gt 16位),但我想解决Windows智能化和填充大量插槽的问题,但实际上并没有告诉我们。