列出可用的 GDI+ Delphi 2009 win32 中的字体

发布于 2024-08-24 02:18:21 字数 123 浏览 9 评论 0原文

在使用 win32 的 Delphi 2009 中,如何获取系统上可用的 GDI+ 字体列表?

补充问题:是否有一个字体对话框可以向用户显示这种字体?如果在 Lazerous 中可以使用相同的方法,则可获得奖励积分。

In Delphi 2009 using win32, how would I obtain a list of GDI+ fonts available on the system?

Supplementary question: is there a font dialog available that can show just this this of fonts to the user? Bonus points if the same method can be used in Lazerous.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浪漫之都 2024-08-31 02:18:21

您应该枚举系统中的所有字体:

procedure TPDFFontMapper.EnumFonts;
var
  LF: TLogFont;
begin
  System.FillChar(LF, sizeof(LF), 0);
  LF.lfCharSet := DEFAULT_CHARSET;
  FDC := CreateCompatibleDC(0);
  try
    Windows.EnumFontFamiliesEx(FDC, LF, @EnumFFProc, Integer(Self), 0);
  finally
    Windows.DeleteDC(FDC);
  end;
end;

您应该有一个为每种字体调用的函数,并测试它是否是矢量字体(TrueType 和 OpenType 字体都被视为 truetype 字体):

function EnumFFProc(const LogFont: TEnumLogFontEx; const TextMetric: TNewTextMetric; FontType: DWORD; LParam: DWORD): Integer; stdcall;
begin
  if FontType and TRUETYPE_FONTTYPE = TRUETYPE_FONTTYPE then
    // do sometghing useful with the logfont...
  Result := 1;
end;

You should enumerate all fonts in the system:

procedure TPDFFontMapper.EnumFonts;
var
  LF: TLogFont;
begin
  System.FillChar(LF, sizeof(LF), 0);
  LF.lfCharSet := DEFAULT_CHARSET;
  FDC := CreateCompatibleDC(0);
  try
    Windows.EnumFontFamiliesEx(FDC, LF, @EnumFFProc, Integer(Self), 0);
  finally
    Windows.DeleteDC(FDC);
  end;
end;

You should have a function that is called for each font and test if it is a vector font (both TrueType and OpenType fonts are considered truetype fonts):

function EnumFFProc(const LogFont: TEnumLogFontEx; const TextMetric: TNewTextMetric; FontType: DWORD; LParam: DWORD): Integer; stdcall;
begin
  if FontType and TRUETYPE_FONTTYPE = TRUETYPE_FONTTYPE then
    // do sometghing useful with the logfont...
  Result := 1;
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文