Instalacja i usuwanie czcionek
Aplikacja może użyć czcionki, aby narysować tekst tylko wtedy, gdy czcionka jest rezydentem na określonym urządzeniu lub zainstalowana w tabeli czcionek systemowych. Tabela czcionek jest tablicą wewnętrzną, która identyfikuje wszystkie czcionki nieurządzenia dostępne dla aplikacji. Aplikacja może pobrać nazwy czcionek aktualnie zainstalowanych na urządzeniu lub przechowywanych w wewnętrznej tabeli czcionek, wywołując funkcje EnumFontFamilies lub ChooseFont.
Aby tymczasowo zainstalować czcionkę, wywołaj AddFontResource lub AddFontResourceEx. Te funkcje ładują czcionkę przechowywaną w pliku font-resource. Jest to jednak tymczasowa instalacja, ponieważ po ponownym uruchomieniu czcionka nie będzie obecna.
Aby zainstalować czcionkę, która pozostanie po ponownym uruchomieniu systemu, użyj jednej z następujących metod:
- Przejdź do Panelu sterowania, kliknij ikonę czcionek i wybierz Zainstaluj nowe czcionki z menu plik. Czcionka jest dostępna dla aplikacji jeszcze przed ponownym uruchomieniem. Jednak w sytuacji serwera terminali czcionka jest dostępna dla bieżącej sesji, ale nie jest dostępna dla innych sesji do czasu ponownego uruchomienia.
- Skopiuj czcionkę do folderu %windir%\fonts. Następnie przejdź do Panelu sterowania i kliknij ikonę czcionek lub wywołaj AddFontResource lub AddFontResourceEx. Czcionka jest dostępna dla aplikacji jeszcze przed ponownym uruchomieniem. Jednak w sytuacji serwera terminali czcionka jest dostępna dla bieżącej sesji, ale nie jest dostępna dla innych sesji do czasu ponownego uruchomienia. Jeśli skopiujesz czcionkę tylko do folderu %windir%\fonts, czcionka będzie dostępna dopiero po ponownym uruchomieniu systemu.
Gdy aplikacja zakończy korzystanie z zainstalowanej czcionki, musi usunąć tę czcionkę, wywołując funkcję RemoveFontResource.
Czcionka zainstalowana z lokalizacji innej niż folder %windir%\fonts nie może być modyfikowana podczas ładowania w żadnej aktywnej sesji, w tym sesji 0. Każda próba zmiany, zastąpienia lub usunięcia zostanie zablokowana. Jeśli konieczna jest modyfikacja czcionki:
- czcionki tymczasowe ładowane tylko w bieżącej sesji. Przed podjęciem próby modyfikacji czcionki wywołaj RemoveFontResource, aby wymusić zwolnienie czcionki z bieżącej sesji.
- trwałe czcionki pozostają zainstalowane po ponownym uruchomieniu i są ładowane przez wszystkie utworzone sesje. Wywołaj RemoveFontResource, aby wymusić zwolnienie czcionki z bieżącej sesji. Następnie w kluczu rejestru czcionek (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) znajdź i usuń wartość rejestru skojarzona z czcionką. Na koniec uruchom ponownie maszynę, aby upewnić się, że czcionka nie jest załadowana w żadnej sesji. Po ponownym uruchomieniu przejdź do modyfikacji/usunięcia czcionki.
Za każdym razem, gdy aplikacja wywołuje funkcje, które dodają i usuwają zasoby czcionek, powinna również wywołać funkcję SendMessage i wysłać komunikat WM_FONTCHANGE do wszystkich okien najwyższego poziomu w systemie. Ten komunikat powiadamia inne aplikacje, że wewnętrzna tabela czcionek została zmieniona przez aplikację, która dodała lub usunęła czcionkę.