Autor Beitrag
Fujitsufan
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 06.12.18 11:59 
Hallo,

hat jemand Erfahrung mit Windows Font Dateien? Es geht um installierte Schriften.
Diese befinden sich unter C:\Windows\Fonts\.....
Da gibt es welche die sind direkt in diesem Verzeichnis installiert und es gibt welche die sind in einem Unterverzeichnis mit dem Familienname der Schrift installiert.
Die Font Dateien haben einen Fontnamen (z.Bsp. Arial Halb Schmal Fett Kursiv) und einen Dateinamen (z.Bsp. ARIALNBI.TTF).

Jetzt die Frage:
Gibt es eine einfache Methode dies Font Datei auf ihre Existenz zu prüfen? Vergleichbar mit der Methode File.Exists("ARIALNBI.TTF")?
Dies funktioniert leider nicht.
Auch weitere Funktionen die ich in verschiedenen Foren gefunden habe sind nur in der Lage zu prüfen ob die Fontfamilie existiert.
Code wie folgt:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
private bool IsFontInstalled(string fontName) {
    using (var testFont = new Font(fontName, 8)) {
        return 0 == string.Compare(
            fontName,
            testFont.Name,
            StringComparison.InvariantCultureIgnoreCase);
    }
}

Der Smily soll ´ne 8 sein. (Edited by Mod.)

Vielen Dank mal vorerst.
MfG.
Fujitsufan

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Moderiert von user profile iconTh69: Beitragsformatierung überarbeitet.
Moderiert von user profile iconTh69: Topic aus C# - Die Sprache verschoben am Do 06.12.2018 um 12:25
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4369
Erhaltene Danke: 882


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 06.12.18 12:27 
Du solltest nicht direkt auf der Platte prüfen. Das Verfahren wie/wo von Windows Fonts abgelegt/verwaltet werden sollte man, wenn man nicht besondere Gründe hat, Windows überlassen und kein inneres Wissen benutzen. Dieses innere Wissen könnte unvollständig sein bzw. beim nächsten Patch/Fix/Version von Windows ungültig sein.

Benutze einfach die offizielle Api. Z.B. via der InstalledFontCollection Klasse.
Frühlingsrolle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2124
Erhaltene Danke: 390

[Win NT] 5.1 x86 6.1 x64
[Delphi] 7 PE, 2006, 10.1 Starter, Lazarus - [C#] VS Exp 2012 - [Android API 15] VS Com 2015, Eclipse, AIDE - [C++] Builder 10.1
BeitragVerfasst: Fr 07.12.18 12:40 
Unter Windows kann man dies mit der Funktion EnumFontFamiliesEx() umsetzen.

_________________
„Politicians are put there to give you the idea that you have freedom of choice. You don’t. You have no choice. You have owners. They own you. They own everything." (George Denis Patrick Carlin)