フォントのインストールと削除
アプリケーションでフォントを使用してテキストを描画できるのは、そのフォントが指定されたデバイスに存在するか、システム フォント テーブルにインストールされている場合のみです。 フォント テーブルは、アプリケーションで使用できるすべての非デバイス フォントを識別する内部配列です。 アプリケーションは、デバイスに現在インストールされている、または内部フォント テーブルに格納されているフォントの名前を取得するには、EnumFontFamilies または ChooseFont関数呼び出します。
フォントを一時的にインストールするには、AddFontResourceまたは AddFontResourceEx呼び出します。 これらの関数は、フォント リソース ファイルに格納されているフォントを読み込みます。 ただし、再起動後にフォントが存在しないため、これは一時的なインストールです。
システムの再起動後も残るフォントをインストールするには、次のいずれかの方法を使用します。
- [コントロール パネル] に移動し、[フォント] アイコンをクリックし、[ファイル] メニューから [新しいフォントのインストール] 選択します。 フォントは、再起動前でもアプリケーションで使用できます。 ただし、ターミナル サーバーの状況では、フォントは現在のセッションで使用できますが、再起動後まで他のセッションでは使用できません。
- フォントを %windir%\fonts フォルダーにコピーします。 次に、コントロール パネルに移動して [フォント] アイコンをクリックするか、AddFontResourceまたは AddFontResourceEx呼び出します。 フォントは、再起動前でもアプリケーションで使用できます。 ただし、ターミナル サーバーの状況では、フォントは現在のセッションで使用できますが、再起動後まで他のセッションでは使用できません。 フォントを %windir%\fonts フォルダーにのみコピーする場合、フォントはシステムの再起動後にのみ使用できます。
インストールされているフォントの使用が終了したアプリケーションは、RemoveFontResource 関数を呼び出して、そのフォントを削除する必要があります。
%windir%\fonts フォルダー以外の場所からインストールされたフォントは、セッション 0 を含むアクティブなセッションに読み込まれるときに変更できません。 変更、置換、または削除を試みると、ブロックされます。 フォントの変更が必要な場合:
- 一時フォント 現在のセッションにのみ読み込まれます。 フォントの変更を試みる前に、RemoveFontResource呼び出して、現在のセッションでフォントを強制的にアンロードします。
- 永続的なフォント 再起動後もインストールされたままになり、作成されたすべてのセッションによって読み込まれます。 RemoveFontResource呼び出して、現在のセッションでフォントを強制的にアンロードします。 次に、フォント レジストリ キー (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) で、フォントに関連付けられているレジストリ値を見つけて削除します。 最後に、コンピューターを再起動して、フォントがセッションに読み込まれないようにします。 再起動後、フォントの変更/削除に進みます。
アプリケーションは、フォント リソースを追加および削除する関数を呼び出すたびに、SendMessage 関数も呼び出し、システム内のすべての最上位ウィンドウに WM_FONTCHANGE メッセージを送信する必要があります。 このメッセージは、フォントを追加または削除したアプリケーションによって内部フォント テーブルが変更されたことを他のアプリケーションに通知します。