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 police système. La table de polices est un tableau interne qui identifie toutes les polices non liées aux appareils 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 qui est stockée dans un fichier de ressource 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 Server, la police est disponible pour la session en cours, mais n’est disponible pour d’autres sessions qu’après un redémarrage.
- Copiez la police dans le dossier %windir%\fonts. 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 Server, la police est disponible pour la session en cours, mais n’est disponible pour d’autres sessions qu’après un redémarrage. Si vous copiez la police uniquement dans le dossier %windir%\fonts, la police n’est disponible qu’après le redémarrage du système.
Lorsqu’une application termine l’utilisation 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 :
- Les polices temporaires sont 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.
- Les polices permanentes restent installées après le redémarrage et sont 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 police (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 chargée dans aucune session. Après le redémarrage, procédez à 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 avertit d’autres applications que la table de police interne a été modifiée par une application qui a ajouté ou supprimé une police.