![]() |
Font Name auslesen
Hallo,
ich hab nach langer zeit mal wieder ne frage^^ und zwar ich hab schon das forum komplett durchsucht, aber ich finde keinen code oder eine hilfestellung, wie ich zum beispiel aus ttf dateien die schriftartnamen auslesen kann.... MFG Björn |
Re: Font Name auslesen
Heißen die Dateien nicht DATEINAME.ttf ? Wobei DATEINAME = Schriftartname :)
Müsstest dir dann mal FindFirst und FindNext anschauen und somit den Fonts-Ordner von Windows durchgucken. Grüße |
Re: Font Name auslesen
Nein... die Dateinamen können vom Namen der Schriftart abweichen.
|
Re: Font Name auslesen
|
Re: Font Name auslesen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
a) beschaff die TTF-Spezifikation - die Informationen sind in Tables angeordnet, das mit den Namen ist aber nicht so einfach wie du denkst, es gibt eine ganze Reihe davon. b) nimm ein uraltes Utility wie TTFDUMP, füge ich als Upload bei, auch ein Beispiel einer 'name table'. Die TTF-Specs kann ich leider nicht zur Verfügung stellen, weil ich Microsoft ein Non-Disclosure-Abkommen unterschrieben habe. Gruss Reinhard |
Re: Font Name auslesen
Hi,
Zitat:
Version 1.66 der Spezifikation ist auf ![]() ![]() Mfg FAlter |
Re: Font Name auslesen
Man kann das ganze so machen :
Delphi-Quellcode:
So werden alle installieren Schriftarten in eine Combobox eingelesen und stehen dann zur Auswahl.function fontnamenoread(var lp: TEnumLogFont; var tm: TNewTextMetric; dwType: DWORD; lpData: lParam): Integer; stdcall; begin Result := 1; with TForm1(lpData), font_name_no_read do begin Items.Add(lp.elfLogFont.lfFaceName); end; end; // So wird die Funktion aufgerufen EnumFontFamilies(Canvas.Handle, nil, @fontnamenoread, Integer(Self)); |
Re: Font Name auslesen
RWarnecke das Ganze hat aber einen kleinen Hacken. So erfährst du nur die installierten Schriften. Es gibt aber auch durchaus die Möglichkeit mittels AddFontResource eigene Schriften im System zu installieren. Wenn diese zum Beispiel speziell nur bei deiner Anwendung dabei liegen. Es gibt aber keine offizielle Möglichkeit von einer Datei den Namen zu erfragen.
Das habe ich das selber in meinem aktuellen Projekt benötigt. Es gibt dazu glaube ich von Microsoft sogar ein direktes Codebeispiel allerdings C und ich habe den Link davon nicht mehr. Das deckt sich aber mit dem was mkinzler als letzten Link gepostet hat. ABER der Code hat ein paar Schwächen. 1. Der Code betrachtet lediglich die Windowsnamen und vernachlässigt dabei vollkommen die SprachID. Denn die Windowsschriften haben häufiger mehr als nur einen Namen. Und wenn man einem deutschem Windows "Arial Bold" vor die Füße knallt dann bekommt man ungefragt das Standardfont vorgesetzt. Da es auch möglich ist, dass eine Schrift gar nicht die aktuelle Sprache unterstützt gehe ich her und lese alle Namen ein und priorisiere sie anhand ihrer Treffergenauigkeit. Den besten Treffer liefere ich dann zurück. 2. Richtet sich der Code nur auf den Vollständigen Namen. Den man aber nicht immer haben will und der auch nicht unbedingt enthalten sein muss. Es kann auch sein, dass man sich diesen selber aus dem Namen und dem Style namen zusammen setzen muss. Der Code zu meiner Lösung befindet sich am Ende ![]() PS: Vorsicht. In der Datei ist auch noch Code enthalten mit der man einen Zeichencode in einen Glyphindex umwandeln "kann". Dieser Code funktioniert allerdings nicht so ganz. |
Re: Font Name auslesen
Zitat:
|
Re: Font Name auslesen
ich dachte ich hätte erwähnt, dass diese schriften nicht installiert sind.
Also ich will per Dateipfad auf die Daten zugreifen... MFG Björn |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz