当前位置:  开发笔记 > 编程语言 > 正文

很容易判断当前字体是否支持unicode字符?

如何解决《很容易判断当前字体是否支持unicode字符?》经验,为你挑选了1个好方法。

我正在使用Borland C++ Builder 2009,我会像这样显示右箭头和左箭头:

Button2->Hint = L"Ctrl+\u2190" ;
Button3->Hint = L"Ctrl+\u2192" ; 

这在Windows 7上工作正常,应用程序使用字体'Segoe UI'.

在XP上我得到一个正方形而不是箭头,我在XP上使用字体'Tahoma'.换句话说,XP中的Tahoma中没有提到的Unicode字符.

有一种简单快捷的方法可以简单地检查当前使用的字体是否支持所请求的Unicode字符?如果是这样,我可以用'>'或'<'替换箭头.不完美,但足够好.我不想在这个阶段开始更改字体.

你的帮助表示赞赏



1> Jonathan Pot..:

您可以使用GetFontUnicodeRanges()以查看当前选择到DC中的字体支持哪些字符.请注意,此API要求您调用一次以查找缓冲区需要的大小,以及第二次实际获取数据.

DWORD dwSize = GetFontUnicodeRanges(hDC, nullptr);
BYTE* bBuffer = new BYTE[dwSize];
GLYPHSET* pGlyphSet = reinterpret_cast(bBuffer);
GetFontUnicodeRanges(hDC, pGlyphSet);
// use data in pGlyphSet, then free the buffer
delete[] bBuffer;

GLYPHSET结构有一个名为的成员数组ranges,可用于确定字体支持的字符范围.

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有