Entwickler-Ecke

Sonstiges (.NET) - Die Existenz einer Font Datei prüfen


Fujitsufan - Do 06.12.18 12:59
Titel: Die Existenz einer Font Datei prüfen
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:

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 - Do 06.12.18 13: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 [https://docs.microsoft.com/en-us/dotnet/api/system.drawing.text.installedfontcollection?view=netframework-4.7.2] Klasse.


Delete - Fr 07.12.18 13:40

- Nachträglich durch die Entwickler-Ecke gelöscht -