Freigeben über


Installation und Löschung von Schriftarten

Eine Anwendung kann eine Schriftart nur verwenden, um Text zu zeichnen, wenn diese Schriftart entweder auf einem angegebenen Gerät vorhanden oder in der Systemschriftarttabelle installiert ist. Die Schriftarttabelle ist ein internes Array, das alle nicht automatischen Schriftarten identifiziert, die für eine Anwendung verfügbar sind. Eine Anwendung kann die Namen der Schriftarten abrufen, die derzeit auf einem Gerät installiert oder in der internen Schriftartentabelle gespeichert sind, indem sie die Funktionen EnumFontFamilies oder ChooseFont aufruft .

Um eine Schriftart vorübergehend zu installieren, rufen Sie AddFontResource oder AddFontResourceEx auf. Diese Funktionen laden eine Schriftart, die in einer Font-Ressourcendatei gespeichert ist. Dies ist jedoch eine temporäre Installation, da die Schriftart nach einem Neustart nicht vorhanden ist.

Verwenden Sie eine der folgenden Methoden, um eine Schriftart zu installieren, die nach dem Neustart des Systems verbleibt:

  • Wechseln Sie zum Systemsteuerung, klicken Sie auf das Symbol Schriftarten, und wählen Sie im Menü Datei die Option Neue Schriftarten installieren aus. Die Schriftart steht einer Anwendung bereits vor dem Neustart zur Verfügung. In einer Terminalserversituation ist die Schriftart jedoch für die aktuelle Sitzung verfügbar, aber erst nach einem Neustart für andere Sitzungen.
  • Kopieren Sie die Schriftart in den Ordner %windir%\fonts. Wechseln Sie dann entweder zum Systemsteuerung, und klicken Sie auf das Symbol Schriftarten, oder rufen Sie AddFontResource oder AddFontResourceEx auf. Die Schriftart steht einer Anwendung bereits vor dem Neustart zur Verfügung. In einer Terminalserversituation ist die Schriftart jedoch für die aktuelle Sitzung verfügbar, aber erst nach einem Neustart für andere Sitzungen. Wenn Sie die Schriftart nur in den Ordner %windir%\fonts kopieren, steht die Schriftart erst nach dem Neustart des Systems zur Verfügung.

Wenn eine Anwendung die Verwendung einer installierten Schriftart beendet, muss sie diese Schriftart entfernen, indem sie die RemoveFontResource-Funktion aufruft .

Eine Schriftart, die von einem anderen Speicherort als dem Ordner %windir%\fonts installiert wird, kann nicht geändert werden, wenn sie in eine aktive Sitzung geladen wird, einschließlich Sitzung 0. Jeder Versuch, zu ändern, zu ersetzen oder zu löschen, wird daher blockiert. Wenn eine Änderung an einer Schriftart erforderlich ist:

  • Temporäre Schriftarten werden nur in der aktuellen Sitzung geladen. Rufen Sie vor dem Versuch, Schriftartänderungen vorzunehmen, RemoveFontResource auf, um das Entladen der Schriftart durch die aktuelle Sitzung zu erzwingen.
  • Permanente Schriftarten bleiben nach dem Neustart installiert und werden von allen erstellten Sitzungen geladen. Rufen Sie RemoveFontResource auf, um das Entladen der Schriftart durch die aktuelle Sitzung zu erzwingen. Suchen und entfernen Sie dann im Registrierungsschlüssel der Schriftart (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) den Registrierungswert, der der Schriftart zugeordnet ist. Starten Sie schließlich den Computer neu, um sicherzustellen, dass die Schriftart in keiner Sitzung geladen wird. Fahren Sie nach dem Neustart mit dem Ändern/Löschen der Schriftart fort.

Wenn eine Anwendung die Funktionen aufruft, die Schriftartressourcen hinzufügen und löschen, sollte sie auch die SendMessage-Funktion aufrufen und eine WM_FONTCHANGE Nachricht an alle Fenster der obersten Ebene im System senden. Diese Meldung benachrichtigt andere Anwendungen, dass die interne Schriftarttabelle von einer Anwendung geändert wurde, die eine Schriftart hinzugefügt oder entfernt hat.