次の方法で共有


フォントのインストールと削除

アプリケーションでフォントを使用してテキストを描画できるのは、そのフォントが指定されたデバイスに存在するか、システム フォント テーブルにインストールされている場合のみです。 フォント テーブルは、アプリケーションで使用できるすべての非デバイス フォントを識別する内部配列です。 アプリケーションは、 EnumFontFamilies 関数または ChooseFont 関数を呼び出すことによって、デバイスに現在インストールされている、または内部フォント テーブルに格納されているフォントの名前を取得できます。

フォントを一時的にインストールするには、 AddFontResource または AddFontResourceEx を呼び出します。 これらの関数は、font-resource ファイルに格納されているフォントを読み込みます。 ただし、再起動後にフォントが存在しないため、これは一時的なインストールです。

システムの再起動後も残るフォントをインストールするには、次のいずれかの方法を使用します。

  • コントロール パネルに移動し、[フォント] アイコンをクリックし、[ファイル] メニューから [新しいフォントのインストール] を選択します。 フォントは、再起動前でもアプリケーションで使用できます。 ただし、ターミナル サーバーの状況では、フォントは現在のセッションで使用できますが、再起動後まで他のセッションでは使用できません。
  • %windir%\fonts フォルダーにフォントをコピーします。 次に、コントロール パネルに移動して [フォント] アイコンをクリックするか、AddFontResource または AddFontResourceEx を呼び出します。 フォントは、再起動前でもアプリケーションで使用できます。 ただし、ターミナル サーバーの状況では、フォントは現在のセッションで使用できますが、再起動後まで他のセッションでは使用できません。 %windir%\fonts フォルダーにのみフォントをコピーする場合、フォントはシステムの再起動後にのみ使用できます。

インストールされているフォントの使用が完了したら、 RemoveFontResource 関数を呼び出して、そのフォントを削除する必要があります。

%windir%\fonts フォルダー以外の場所からインストールされたフォントは、セッション 0 を含むアクティブなセッションに読み込まれるときに変更できません。 変更、置換、または削除を試みると、ブロックされます。 フォントの変更が必要な場合:

  • 一時フォント は、現在のセッションでのみ読み込まれます。 フォントの変更を試みる前に、 RemoveFontResource を呼び出して、現在のセッションでフォントを強制的にアンロードします。
  • 永続的なフォント は再起動後もインストールされたままで、作成されたすべてのセッションによって読み込まれます。 RemoveFontResource を呼び出して、現在のセッションでフォントを強制的にアンロードします。 次に、フォント レジストリ キー (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) で、フォントに関連付けられているレジストリ値を見つけて削除します。 最後に、コンピューターを再起動して、フォントがセッションに読み込まれないようにします。 再起動後、フォントの変更/削除に進みます。

アプリケーションは、フォント リソースを追加および削除する関数を呼び出すたびに SendMessage 関数を呼び出し、システム内のすべての最上位ウィンドウに WM_FONTCHANGE メッセージを送信する必要があります。 このメッセージは、内部フォント テーブルが、フォントを追加または削除したアプリケーションによって変更されたことを他のアプリケーションに通知します。