delphi - 用Delphi查找系统字体

标签 delphi unicode fonts delphi-2009

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

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

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

最佳答案

Screen.Fonts 属性通过 EnumFontFamiliesEx API function 填充。查看 Forms.pas 中调用该函数的示例。

它调用的回调函数将收到 TNewTextMetricEx记录,该记录的成员之一是 TFontSignaturefsUsb 字段指示字体声明支持哪些 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/

相关文章:

mysql - mysql中位数据类型的Unicode输出

python - 组合变音符号不使用 unicodedata.normalize (PYTHON) 规范化

java - Android 使用特殊的 unicode 字符

包含不同长度文本的两个标签的 WPF/XAML 布局,同时保持相同大小的字体缩放

Delphi:DateTimeToStr 输出为零时间(午夜)

windows - 第三方代码正在修改 FPU 控制字

c# - 在特定文本上方显示文本

css - 为什么我的字体没有变化?

android - 如何使用 Delphi 检测 Android 中的虚拟键盘事件

delphi - 将 TEncodedStream 与 Tstringlist 一起使用时出现问题