2009-04-22 10 views
4

Wie kann ich testen, ob eine Schriftart installiert ist?Test, ob eine Schriftart installiert ist (Win32)

Schließlich möchte ich eine HTML-ähnliche Schriftart Auswahl implementieren, d.h. bei der Angabe von z. "Verdana, Arial", sollte es die erste Schriftart auswählen, die installiert ist.

This Question bietet eine Antwort für. NET - es scheint der empfohlene Weg ist, um die Schriftart zu erstellen, und dann KPare die Schriftart Gesicht tatsächlich verwendet.

Ist das der effizienteste Weg?

Antwort

5

Sie können EnumFontFamiliesEx verwenden, um die Liste der Schriftarten auf dem System aufzuzählen, oder wenn Sie einen Zeichensatznamen übergeben, können Sie die Schriftarten für diese Familie aufzählen.

+0

Wissen Sie, was der Punkt des DC-Parameters für EnumFonts et al. Ist? Es ist nicht in CreateFont erforderlich. Das Übergeben des DCs des Desktopfensters scheint zu funktionieren, aber ich kann keine Dokumentation (außer dem "handle to the device context") in MSDN finden – peterchen

+1

Ich vermute, dass es möglicherweise für Verwendung eines Druckerdc ist, aber ich habe GetDC (NULL) und noch nie etwas anderes versucht haben. – Steven

+1

Der Domänencontroller beschränkt die aufgezählten Zeichensätze auf diejenigen, die für das Gerät verfügbar sind. Heutzutage ist das keine große Einschränkung. Wenn Sie CreateFont aufrufen, benötigen Sie einen DC nicht, da CreateFont nur eine interne Version eines LOGFONT erstellt und Ihnen ein Handle zu es gibt. Nur wenn Sie dieses Handle in ein DC auswählen, wird die tatsächliche Schriftart ausgewählt und instanziiert. –

6

Sie können entweder versuchen, die Schriftart zu erstellen und sehen, was Sie erhalten (und somit die Schriftartnamen-Übereinstimmung/Substitution des Betriebssystems verwenden).

Oder Sie können installierte Schriftarten auflisten und tun, dass Sie selbst übereinstimmen.

Der "effizienteste" Weg wird von den Details einer "Übereinstimmung" abhängen und aller Wahrscheinlichkeit nach, wie viele Schriftarten installiert sind. Auf einem System mit beispielsweise 50 Schriftarten wird sich die Leistung wahrscheinlich erheblich von einem System mit 1000 installierten Schriftarten unterscheiden.

Am Ende können Sie nur auf repräsentativen Systemen profilieren, wenn Sie sich zuerst nähern (halten Sie es einfach) erweist sich als ein Leistungsengpass.

Verwandte Themen