查找用户可用的所有系统字体以便将它们显示在下拉选择框中的最佳方法是什么?
我还想区分 Unicode 和非 Unicode 字体。
我正在使用完全支持 Unicode 的 Delphi 2009,并且想要一个 Delphi 解决方案。
最佳答案
Screen.Fonts
属性通过 EnumFontFamiliesEx
API function 填充。查看 Forms.pas 中调用该函数的示例。
它调用的回调函数将收到 TNewTextMetricEx
记录,该记录的成员之一是 TFontSignature
。 fsUsb
字段指示字体声明支持哪些 Unicode 子范围。
系统实际上没有“Unicode 字体”。即使名称中包含单词 Unicode 的字体也没有代表所有 Unicode 字符的字形。您可以区分位图、打印机和 TrueType 字体,但除此之外,您能做的最好的事情就是确定您正在考虑的字体是否支持您想要的字符。如果该字体不是您所认为的“Unicode 字体”,但它支持您需要的所有字符,那么它有什么区别呢?要获取此信息,您可能对GetFontUnicodeRanges
感兴趣。 .
用于根据哪些字体包含哪些字符来显示不同字体的文本的 Microsoft 技术是 Uniscribe ,特别是font fallback 。我不知道 Delphi 对 Uniscribe 有任何支持;我曾经开始为它编写一套导入单元,但我的兴趣变化无常,在完成之前我就转向了其他东西。 Michael Kaplan's blog有时会谈论 Uniscribe,所以这是另一个值得关注的地方。
关于delphi - 用Delphi查找系统字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/401915/