Installation et suppression de polices

Une application peut utiliser une police pour dessiner du texte uniquement si cette police réside sur un périphérique spécifié ou installée dans la table des polices système. La table de polices est un tableau interne qui identifie toutes les polices non-périphériques disponibles pour une application. Une application peut récupérer les noms des polices actuellement installées sur un périphérique 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 ressources de police. Toutefois, il s’agit d’une installation temporaire, car après un redémarrage, la police n’est 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, même avant le redémarrage. Toutefois, dans une situation de serveur Terminal Server, la police est disponible pour la session active, mais elle n’est disponible pour les 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, même avant le redémarrage. Toutefois, dans une situation de serveur Terminal Server, la police est disponible pour la session active, mais elle n’est disponible pour les autres sessions qu’après un redémarrage. Si vous copiez uniquement la police dans le dossier% windir% \ Fonts, la police n’est disponible qu’après le redémarrage du système.

Quand une application se termine en utilisant 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 lorsqu’elle est chargée 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 de tenter toute modification de 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 en cours à décharger la police. ensuite, dans la clé de registre font (HKEY _ LOCAL _ MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ polices), 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, effectuez la modification ou la suppression de la 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 polices interne a été modifiée par une application qui a ajouté ou supprimé une police.