Installation und Löschung von Schriftarten
Eine Anwendung kann eine Schriftart verwenden, um Text nur zu zeichnen, wenn diese Schriftart entweder auf einem bestimmten Gerät vorhanden ist oder in der Systemschriftarttabelle installiert ist. Die Schriftarttabelle ist ein internes Array, das alle Nicht-Nicht-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 sind oder in der internen Schriftarttabelle gespeichert sind, indem sie die funktionen EnumFontFamilies oder ChooseFont aufrufen.
Um eine Schriftart vorübergehend zu installieren, rufen Sie AddFontResource- oder AddFontResourceEx-auf. Diese Funktionen laden eine Schriftart, die in einer Schriftartressourcendatei gespeichert ist. Dies ist jedoch eine temporäre Installation, da nach einem Neustart die Schriftart nicht vorhanden ist.
Verwenden Sie eine der folgenden Methoden, um eine Schriftart zu installieren, die nach dem Neustart des Systems verbleibt:
- Wechseln Sie zur Systemsteuerung, klicken Sie auf das Symbol Schriftarten, und wählen Sie im Menü Datei "Neue Schriftarten installieren" aus. Die Schriftart ist auch vor dem Neustart für eine Anwendung verfügbar. In einer Terminalserversituation ist die Schriftart jedoch für die aktuelle Sitzung verfügbar, ist jedoch erst nach einem Neustart für andere Sitzungen verfügbar.
- Kopieren Sie die Schriftart in den Ordner %windir%\fonts. Wechseln Sie dann entweder zur Systemsteuerung, und klicken Sie auf das Symbol Schriftarten, oder rufen Sie AddFontResource oder AddFontResourceExauf. Die Schriftart ist auch vor dem Neustart für eine Anwendung verfügbar. In einer Terminalserversituation ist die Schriftart jedoch für die aktuelle Sitzung verfügbar, ist jedoch erst nach einem Neustart für andere Sitzungen verfügbar. Wenn Sie die Schriftart nur in den Ordner %windir%\fonts kopieren, ist die Schriftart erst verfügbar, nachdem das System neu gestartet wurde.
Wenn eine Anwendung die Verwendung einer installierten Schriftart abgeschlossen hat, muss sie diese Schriftart entfernen, indem sie die funktion RemoveFontResource aufruft.
Eine Schriftart, die von einem anderen Speicherort als dem Ordner %windir%\fonts installiert wurde, kann nicht geändert werden, wenn sie in einer aktiven Sitzung geladen wird, einschließlich Sitzung 0. Jeder Versuch, änderungen, Ersetzen oder Löschen zu ändern, wird daher blockiert. Wenn eine Änderung an einer Schriftart erforderlich ist:
- temporäre Schriftarten nur in der aktuellen Sitzung geladen werden. Rufen Sie vor dem Versuch von Schriftartänderungen RemoveFontResource- auf, um zu erzwingen, dass die aktuelle Sitzung die Schriftart entladen wird.
- Permanente Schriftarten nach dem Neustart installiert bleiben und von allen erstellten Sitzungen geladen werden. Rufen Sie RemoveFontResource- auf, um zu erzwingen, dass die aktuelle Sitzung die Schriftart entladen wird. 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 der Änderung/Löschung 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.