Partager via


Installation et suppression de polices

Une application peut utiliser une police pour dessiner du texte uniquement si cette police est résidente sur un appareil spécifié ou installée dans la table de polices système. La table de polices est un tableau interne qui identifie toutes les polices qui ne sont pas disponibles pour une application. Une application peut récupérer les noms des polices actuellement installées sur un appareil ou stockées dans la table de polices interne en appelant les fonctions EnumFontFamilies ou ChooseFont.

Pour installer temporairement une police, appelez AddFontResource ou AddFontResourceEx. Ces fonctions chargent une police stockée dans un fichier de ressources de police. Toutefois, il s’agit d’une installation temporaire, car après un redémarrage, la police ne sera pas présente.

Pour installer une police qui restera après le redémarrage du système, utilisez l’une des méthodes suivantes :

  • Accédez au Panneau de configuration, cliquez sur l’icône polices, puis sélectionnez Installer de nouvelles polices dans le menu Fichier. La police est disponible pour une application avant même le redémarrage. Toutefois, dans une situation de serveur terminal, la police est disponible pour la session active, mais n’est pas disponible pour d’autres sessions tant qu’après un redémarrage.
  • Copiez la police dans le dossier %windir%\polices. Ensuite, accédez au Panneau de configuration et cliquez sur l’icône Polices, ou appelez AddFontResource ou AddFontResourceEx. La police est disponible pour une application avant même le redémarrage. Toutefois, dans une situation de serveur terminal, la police est disponible pour la session active, mais n’est pas disponible pour d’autres sessions tant qu’après un redémarrage. Si vous copiez uniquement la police dans le dossier %windir%\fonts, la police sera disponible uniquement après le redémarrage du système.

Lorsqu’une application se termine à l’aide d’une police installée, elle doit supprimer cette police en appelant la fonction RemoveFontResource.

Une police installée à partir d’un emplacement autre que le dossier %windir%\fonts ne peut pas être modifiée lors du chargement dans une session active, y compris la session 0. Toute tentative de modification, de remplacement ou de suppression sera donc bloquée. Si la modification d’une police est nécessaire :

  • polices temporaires être chargées uniquement dans la session active. Avant d’essayer de modifier la police, appelez RemoveFontResource pour forcer la session active à décharger la police.
  • polices permanentes restent installées après le redémarrage et chargées par toutes les sessions créées. Appelez RemoveFontResource pour forcer la session active à décharger la police. Ensuite, dans la clé de Registre de polices (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Fonts) recherchez et supprimez la valeur de Registre associée à la police. Enfin, redémarrez l’ordinateur pour vous assurer que la police n’est pas chargée dans une session. Après le redémarrage, passez à la modification/suppression de votre police.

Chaque fois qu’une application appelle les fonctions qui ajoutent et suppriment des ressources de police, elle doit également appeler la fonction SendMessage et envoyer un message WM_FONTCHANGE à toutes les fenêtres de niveau supérieur du système. Ce message informe d’autres applications que la table de polices interne a été modifiée par une application qui a ajouté ou supprimé une police.