AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Font Name auslesen

Offene Frage von "delphis spassbremse"
Ein Thema von delphis spassbremse · begonnen am 17. Okt 2007 · letzter Beitrag vom 24. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#1

Font Name auslesen

  Alt 17. Okt 2007, 21:53
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
  Mit Zitat antworten Zitat
quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Font Name auslesen

  Alt 17. Okt 2007, 21:55
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
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.
  Mit Zitat antworten Zitat
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Font Name auslesen

  Alt 17. Okt 2007, 21:58
Nein... die Dateinamen können vom Namen der Schriftart abweichen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Font Name auslesen

  Alt 17. Okt 2007, 22:00
http://www.microsoft.com/typography/specs/default.htm
http://www.microsoft.com/typography/tools/tools.htm
http://www.delphipraxis.net/internal...t.php?p=295427
Markus Kinzler
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#5

Re: Font Name auslesen

  Alt 18. Okt 2007, 01:34
Zitat von delphis spassbremse:
Hallo,

aber ich finde keinen code oder eine hilfestellung, wie
ich zum beispiel aus ttf dateien die schriftartnamen auslesen
kann....

MFG

Björn
Hallo Björn,

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
Angehängte Dateien
Dateityp: zip ttfnames_127.zip (46,1 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Font Name auslesen

  Alt 18. Okt 2007, 09:39
Hi,

Zitat von Reinhard Kern:
Die TTF-Specs kann ich leider nicht zur Verfügung stellen, weil ich Microsoft ein Non-Disclosure-Abkommen unterschrieben habe.
Brauchst du auch nicht, da es andere für dich tun

Version 1.66 der Spezifikation ist auf Wotsit.org zu finden, und dazu noch drei Links, z. B. OpenType direkt von MS. [edit] Das komplette Angebot von MS findest du, wenn du mkinzlers Links folgst. [/edit]

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#7

Re: Font Name auslesen

  Alt 18. Okt 2007, 09:50
Man kann das ganze so machen :
Delphi-Quellcode:

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));
So werden alle installieren Schriftarten in eine Combobox eingelesen und stehen dann zur Auswahl.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#8

Re: Font Name auslesen

  Alt 18. Okt 2007, 11:00
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 dieses Postings in der "Windows Bibliothek" und dort in der Datei "Source\TextSuiteTTFUtils.pas". Damit ist es auch Möglich von einer auf einen DC zugewiesene Schrift den Namen zu erfragen. Da man sich von diesem einzelne Tabellen (Namenstabelle) zurückgeben lassen kann.

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.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#9

Re: Font Name auslesen

  Alt 23. Okt 2007, 17:22
Zitat von Lossy eX:
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.
Aber auch die Funktion Screen.Fonts gibt eine Liste der installierten Schriftarten aus.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
delphis spassbremse

Registriert seit: 7. Jun 2007
Ort: Enger
104 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: Font Name auslesen

  Alt 24. Okt 2007, 17:25
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:54 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