Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Erkennen des Schrifttyps (https://www.delphipraxis.net/93859-erkennen-des-schrifttyps.html)

matashen 12. Jun 2007 13:34


Erkennen des Schrifttyps
 
Hallo zusammen,

Ich möchte einen Text drehen, das mach ich wie folgt:

Delphi-Quellcode:
var
hCurFont: HFONT;
LogFont: TLogFont;
begin
with Canvas do
begin
     font:=fontz;
  hCurFont := Font.Handle;
  try
    GetObject(Font.Handle, SizeOf(LogFont), @LogFont);
    LogFont.lfEscapement := AAngle;
    LogFont.lfOrientation := AAngle;
    Font.Handle:= CreateFontIndirect(LogFont);
    try
      TextOut(X, Y, AText);
    finally
      DeleteObject(Font.Handle);
    end;
  finally
    Font.Handle := hCurFont;
  end;
     font:=fontz;
end;
so jetzt hab ich das Problem, das dies nur mit bestimmten Schriftarten funtkioniert, also mit Truetype.

Wie kann ich erkennen ob die gewählte Schriftart (darf der Anwender wählen) eine Truetype Schriftart ist um dann ein Drehen der Schrifft zu unterbinden wenns kein Truetype ist.


Gruß Matthias

PS: Das ganze auf ein Bitmap zeichnen und dann drehen, wies so mancher macht möcht ich nicht.

Hawkeye219 12. Jun 2007 16:10

Re: Erkennen des Schrifttyps
 
Hallo Matthias,

versuche es mit dieser Funktion:

Delphi-Quellcode:
function IsTrueTypeFont (aFont: TFont): Boolean;
var
  DC : HDC;
  TM : TTextMetric;
begin
  DC := CreateDC('DISPLAY', nil, nil, nil);
  try
    SelectObject(DC, aFont.Handle);
    GetTextMetrics(DC, TM);
    Result := ((TM.tmPitchAndFamily and TMPF_TRUETYPE) <> 0);
  finally
    DeleteDC(DC);
  end;
end;
Gruß Hawkeye

Ydobon 12. Jun 2007 17:10

Re: Erkennen des Schrifttyps
 
Oder gleich den TFontDialog so einstellen, dass nur TT-Schriftarten ausgewählt werden können.

matashen 13. Jun 2007 08:13

Re: Erkennen des Schrifttyps
 
Hallo,

Danke für die Tips

Ich benötige sämtliche Schriftarten und werd die funktion zur Prüfung einbauen.

@Ydobon: Auch ein guter Gedanke, wüsste gar nicht das es diese Option gibt.

Gruß Matthias


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz