我使用的是 Borland C++ Builder 2009,我会像这样显示左右箭头:
Button2->Hint = L"Ctrl+\u2190" ;
Button3->Hint = L"Ctrl+\u2192" ;
这在 Windows 7 上运行良好,应用程序使用字体“Segoe UI”。
在 XP 上我得到一个正方形而不是箭头,我在 XP 上使用字体“Tahoma”。 换句话说,提到的 Unicode 字符在 XP 上的 Tahoma 中不存在。
有没有简单快捷的方法来检查当前使用的字体是否支持所请求的 Unicode 字符? 例如,如果是这样,我可以将箭头替换为“>”或“<”。不完美,但足够好。我不想在这个阶段开始更改字体。
感谢您的帮助。
最佳答案
您可以使用 GetFontUnicodeRanges()
查看当前选择到 DC 中的字体支持哪些字符。请注意,此 API 要求您调用一次以确定缓冲区需要多大,然后调用第二次以实际获取数据。
DWORD dwSize = GetFontUnicodeRanges(hDC, nullptr);
BYTE* bBuffer = new BYTE[dwSize];
GLYPHSET* pGlyphSet = reinterpret_cast<GLYPHSET*>(bBuffer);
GetFontUnicodeRanges(hDC, pGlyphSet);
// use data in pGlyphSet, then free the buffer
delete[] bBuffer;
GLYPHSET
结构有一个名为 ranges
的成员数组,可让您确定字体支持的字符范围。
关于c++ - 判断当前字体是否支持 unicode 字符的简便方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34278340/