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

使用Delphi查找系统字体

如何解决《使用Delphi查找系统字体》经验,为你挑选了2个好方法。

找到用户可用的所有系统字体的最佳方法是什么,以便它们可以显示在下拉选择框中?

我还想区分Unicode和非Unicode字体.

我正在使用完全支持Unicode的Delphi 2009,并且想要一个Delphi解决方案.



1> Rob Kennedy..:

Screen.Fonts属性通过EnumFontFamiliesExAPI函数填充.查看Forms.pas以获取调用该函数的示例.

它调用的回调函数将接收一条TNewTextMetricEx记录,该记录的一个成员是a TFontSignature.该fsUsb字段指示字体声称支持哪些Unicode子范围.

系统实际上没有"Unicode字体".即使名称中包含Unicode一词的字体也没有所有 Unicode字符的字形.您可以区分位图,打印机和TrueType字体,但除此之外,您可以做的最好的方法是确定您考虑的字体是否支持您想要的字符.如果字体不是您认为的"Unicode字体",但它支持您需要的所有字符,那么它有什么区别?要获得此信息,您可能会感兴趣GetFontUnicodeRanges.

Microsoft技术用于显示具有不同字体的文本,基于哪些字体包含哪些字符是Uniscribe,尤其是字体回退.我不知道任何德尔福对Uniscribe的支持; 我开始为它编写一套导入单元,但我的兴趣是变幻无常的,在我完成之前我又转向了其他东西.Michael Kaplan的博客有时会谈论Uniscribe,所以这是另一个值得关注的地方.



2> Tim Jarvis..:

我可以回答你的一半问题,你可以从全局Screen对象中获取当前环境可以访问的字体列表作为字符串列表

Listbox1.Items.AddStrings(Screen.Fonts);

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