Home » Tipps & Tricks » System » Systemeinstellungen » Installierte Schriften ermitteln
Installierte Schriften ermitteln
Das TScreen-Objekt enthält eine Liste mit allen installierten Schriften, die auf dem Bildschirm dargestellt werden können:
procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.Items.Assign(Screen.Fonts); end;
Das bedeutet jedoch nicht, dass jede dieser Schriften auch gedruckt werden kann. Eine entsprechende Liste des aktuellen Druckers enthält das TPrinter-Objekt:
uses Printers; procedure TForm1.Button1Click(Sender: TObject); begin Listbox1.Items.Assign(Printer.Fonts); end;
Um zusätzlich noch weitere Informationen zu den Fonts zu erhalten, benutzen Sie diese Procedure:
procedure ListFonts(const ACanvas: TCanvas; const ADest: TStrings); var Log: TLogFont; function _EnumFontFamExProc(EnumLogFontEx: PEnumLogFontEx; NewTextMetric: PNewTextMetric; FontType: Longword; LParam: Longword): integer; stdcall; begin Result := 1; TStrings(LParam).Add(StrPas(EnumLogFontEx.elfFullName)); end; begin FillChar(Log, SizeOf(Log), 0); Log.lfCharSet := Default_Charset; Log.lfFaceName := ''; Log.lfPitchAndFamily := 0; EnumFontFamiliesEx(ACanvas.Handle, Log, @_EnumFontFamExProc, Integer(ADest), 0); end;
Sie listet zu einem TCanvas alle darstellbaren Fonts auf. Teilweise werden Schriften mehrfach aufgelistet. Es liegt daran, dass eine Schrift in mehreren Sprachen installiert wurde. Weitere Informationen finden Sie in der PSDK unter dem Stichwort „ENUMLOGFONT“.Ein Beispielaufruf sieht so aus:
procedure TForm1.Button1Click(Sender: TObject); begin ListFonts(Canvas, Listbox1.Items); end;