Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
DirectWrite- ermöglicht den Zugriff auf die Systemschriftartensammlung mithilfe der IDWriteFactory::GetSystemFontCollection--Methode. Dies ist die Schriftartsammlung, die am häufigsten verwendet wird. Einige Anwendungen müssen jedoch Schriftarten verwenden, die nicht auf dem System installiert sind, z. B. aus eingeschlossenen Schriftartdateien oder Schriftartdateien, die in der Anwendung eingebettet sind.
Wenn sich die gewünschten Schriftarten nicht in der Systemschriftartensammlung befinden, können Sie eine benutzerdefinierte Schriftartsammlung erstellen, die von IDWriteFontCollectionabgeleitet wird.
Diese Übersicht besteht aus den folgenden Teilen:
- Registrieren und Aufheben der Registrierung eines
- IDWriteFontCollectionLoader
- IDWriteFontFileEnumerator
- CreateCustomFontFileReference
- IDWriteFontFileLoader
- IDWriteFontFileStream-
Registrieren und Aufheben der Registrierung eines Schriftartsammlungsladeprogramm
Sie registrieren ein Schriftartsammlungsladeprogramm mithilfe der IDWriteFactory::RegisterFontCollectionLoader- Methode und übergeben es ein IDWriteFontCollectionLoader Schnittstelle, die von der Anwendung als Singleton-Objekt implementiert wird. Dieses Objekt lädt die Schriftarten, wenn die benutzerdefinierte Auflistung angefordert wird. Sowohl die Systemschriftsammlung als auch benutzerdefinierte Schriftartsammlungen werden zwischengespeichert, sodass die Schriftarten nur einmal geladen werden.
Das Ladeprogramm für die Schriftartsammlung muss schließlich mithilfe der IDWriteFactory::UnregisterFontCollectionLoaderentladen werden.
Anmerkung
Beim Registrieren des Ladeprogramms für die Schriftartsammlung wird der Verweisanzahl hinzugefügt; rufen Sie nicht UnregisterFontCollectionLoader- innerhalb des Destruktors auf, oder das Auflistungsladeobjekt wird niemals die Registrierung aufgehoben.
IDWriteFontCollectionLoader
Sie erstellen ein IDWriteFontFileEnumerator- Objekt mithilfe der IDWriteFactory::CreateCustomFontCollection und übergeben ihn an einen anwendungsdefinierten Schlüssel. Der Schlüssel ist ein leerer Zeiger, und der Datentyp, das Format und die Bedeutung werden von der Anwendung definiert und sind für das Schriftartsystem undurchsichtig.
Während der Schlüssel alles sein kann, erfordert DirectWrite-, dass jeder Schlüssel beides ist:
- Eindeutig für eine einzelne Schriftartsammlung im Bereich des Ladeprogramms.
- Gültig, bis die Registrierung des Ladegeräts mit der Factory aufgehoben wird.
Wenn die CreateCustomFontCollection--Methode aufgerufen wird, ruft DirectWrite eine IDWriteFontCollectionLoader Schnittstelle zurück, die von der Anwendung als Singletonobjekt implementiert wird. Die IDWriteFontCollectionLoader::CreateEnumeratorFromKey callback-Methode wird von DirectWrite verwendet, um ein IDWriteFontFileEnumerator- objekt abzurufen, das von der Anwendung implementiert wurde. Das IDWriteFactory- Objekt, das zum Erstellen der Auflistung verwendet wird, wird an diese Methode übergeben und sollte von der Aufzählung der Schriftartdatei verwendet werden, um die IDWriteFontFile- Objekte zu erstellen, die in die Auflistung aufgenommen werden sollen.
Der an diese Methode übergebene Schlüssel identifiziert die Schriftartsammlung und ist derselbe Schlüssel, der an CreateCustomFontCollectionübergeben wird.
IDWriteFontFileEnumerator
Das anwendungsdefinierte IDWriteFontFileEnumerator--Objekt, das von der CreateEnumeratorFromKey-Methode erstellt wurde, wird verwendet, um die Schriftartdateien in einer Auflistung aufzählen und ein IDWriteFontFile--Objekt für jede Datei zu erstellen. Die IDWriteFontFileEnumerator::MoveNext Methode ändert die Position in die nächste Schriftartdatei. Wenn an der Position eine Datei vorhanden ist, wird die hasCurrentFile- auf TRUE-festgelegt. Andernfalls wird sie auf FALSE- festgelegt, und die Methode gibt S_OKzurück.
Anmerkung
Die Enumerator der Schriftartdatei muss vor dem ersten Element positioniert und beim ersten Aufruf von MoveNexterweitert werden.
Ein IDWriteFontFile--Objekt wird von der IDWriteFontFileEnumerator::GetCurrentFontFile-Methode ausgegeben. Wenn keine Schriftartdatei an der aktuellen Position vorhanden ist, da MoveNext noch nicht aufgerufen wurde oder hatCurrentFile auf FALSEfestgelegt wurde, wird GetCurrentFontFile-E_FAILzurückgegeben.
CreateCustomFontFileReference
Die IDWriteFontFile- Objektausgabe vonGetCurrentFontFile- kann durch Aufrufen IDWriteFactory::CreateCustomFontFileReferenceerstellt werden. Der Referenzschlüssel für die Schriftartdatei identifiziert einen bestimmten Verweis auf die Schriftartdatei und muss innerhalb des Dateiladeprogramms eindeutig sein, das die Datei lädt.
IDWriteFontFileLoader
Die CreateCustomFontFileReference--Methode verwendet ein IDWriteFontFileLoader- Objekt, das von der Anwendung implementiert wird, die zum Laden der Schriftart verwendet wird. Die IDWriteFontFileLoader::CreateStreamFromKey Callbackmethode wird an den Schlüssel übergeben und gibt ein IDWriteFontFileStream--Objekt aus.
IDWriteFontFileStream
Das von der Anwendung implementierte IDWriteFontFileStream-Objekt stellt die Schriftartdateidaten für einen Schriftdateiverweis aus einem benutzerdefinierten Dateiladeprogramm bereit. Zusammen mit der Dateigröße und der letzten Schreibzeit stellt sie eine Methode (ReadFileFragment) zum Abrufen von Dateifragmenten bereit, die in einem IDWriteFontFile--Objekt kompiliert werden sollen.
Anmerkung
ReadFileFragment- Implementierungen sollten einen Fehler zurückgeben, wenn sich das angeforderte Fragment außerhalb der Dateigrenzen befindet.
Ein IDWriteFontFileStream- kann den Inhalt der Schriftartdatei von praktisch überall abrufen, z. B. auf der lokalen Festplatte oder eingebetteten Ressourcen.