有人能告诉我如何获得字体的字体名称吗?我怎么能取有字体名称的字体的Windows名称?
就像"arialblackno1.ttf"有"arialbrack"字体。
但我想得到一个没有安装的字体的字体名称,它只是在一个文件夹中。
您在注释中说您需要一个未安装在Windows中的字体的名称。
有两种方法可以做到这一点,我可以想到:-
-
使用FreeType
-
或者,使用GDI+和PrivateFontCollection.AddFontFile()
无论哪种方式,您都需要为这些库找到Delphi包装器。谷歌应该提供帮助。
似乎有一个FreeType绑定作为AggPas的一部分。不过,这不是我尝试过的。
事实上,我对你到底在问什么有点了解(条款!)
procedure TForm14.FormCreate(Sender: TObject);
var
DC: HDC;
Font: HFONT;
LogFont: TLogFont;
begin
DC := GetDC(HWND_DESKTOP);
Win32Check(DC <> 0);
Font := GetCurrentObject(DC, OBJ_FONT);
Win32Check(Font <> 0);
Win32Check(GetObject(Font, SizeOf(LogFont), @LogFont) > 0);
ShowMessage(LogFont.lfFaceName);
Win32Check(ReleaseDC(HWND_DESKTOP, DC) = 1);
end;