【问题标题】:How do I know if a TFont Name is truly supported?我如何知道一个 TFont Name 是否真的被支持?
【发布时间】:2018-03-02 00:54:04
【问题描述】:

当我将TRichEdit 控件的TFont Name 属性设置为“Courier”时,字体将变为Courier。

Edit->Font->Name  = "Courier";

如果我想使用一种我不确定系统是否支持的字体(例如,在较旧的操作系统上)怎么办? 据我目前所知,如果我为 TFont 属性分配一个“未知”名称,实际字体不会改变,系统会处理它并坚持使用以前的字体,但是我如何以编程方式检查这个?

我想知道字体是否真的改变了(因为字体可用/已安装)?

或者我需要查询Screen->Fonts 来确定Name 是否在列表中?

仅供参考:使用 Borland C++ Builder (2009),但我确信也与 Delphi 相关。

【问题讨论】:

  • 简单:获取已安装字体的列表,并检查您的字体是否在该列表中。听起来你已经有了这个解决方案。
  • (未测试)分配新的Font 设置后,使用HFONT hFont = (HFONT) SendMessage(Edit->Handle, WM_GETFONT, 0, 0); LOGFONT fnt = {0}; ::GetObject(hFont, sizeof(LOGFONT), &fnt); 查询实际分配的字体,看看fnt 是否包含您所期望的。

标签: delphi c++builder vcl


【解决方案1】:

TScreen::Fonts 表示一个TStrings 列表,其中包含系统中安装的字体的名称(实际名称而不是文件名)。

使用它的IndexOf() 方法来测试你的字体是否存在:

if (Screen->Fonts->IndexOf("Courier") != -1)
{
    ShowMessage("Font installed");
}

【讨论】:

    猜你喜欢
    • 2015-08-15
    • 2012-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 2023-03-13
    • 2012-10-26
    • 2018-06-29
    • 1970-01-01
    相关资源
    最近更新 更多