Voir la vidéo de démonstration sur: vimeo.com/155636855
Je suis aux prises avec ce problème depuis trop longtemps - j'aimerais maintenant une aide extérieure.
* Cela n'a rien à voir avec la technologie VM - voir la note ajoutée à la fin du post *
L'image jointe contient une image côte à côte d'un fichier WordPad avec du texte représentant toutes les lettres de l'alphabet, en minuscules et en majuscules. L'image de gauche a été prise à partir d'une machine virtuelle Windows 10 (le système d'exploitation "invité") fonctionnant sur un hôte Windows 10 (le système d'exploitation "hôte"); l'image de droite a été prise depuis l'hôte Windows:
Agrandissez l'image et examinez bien les différences sur les bords de chaque lettre: la gauche est beaucoup plus lisse que la droite - et au cas où vous seriez tenté de sauter à une conclusion rapide, CLEARTYPE N'EST PAS LE PROBLÈME (voir les points ci-dessous ), du moins pas du point de vue "activé" ou "désactivé" (en d'autres termes, un paramètre de registre lié à ClearType peut être impliqué, mais rien sur l'interface utilisateur Windows lié à ClearType n'est à l'origine de ce problème car les deux machines sont calibrées pour ClearType et ClearType est activé sur les machines hôtes et invitées).
Faits:
Les deux systèmes d'exploitation utilisent le même fichier de police TrueType (TTF) Myriad font
Les deux OS sont réglés sur la même résolution d'écran.
Je pensais que c'était un problème de pilote vidéo Windows, mais j'ai le dernier pilote nVidia et j'utilise une carte GeForce GTX 560 relativement haut de gamme avec DirectX 12 sur l'hôte et l'invité.
Les deux fichiers WordPad utilisent la même police, taille de police, style de police et zoom (100%).
Les deux systèmes d'exploitation Windows 10 sont entièrement mis à jour à l'aide de Windows Update.
ClearType est actif (activé) sur l'hôte Windows ainsi que sur la machine virtuelle. J'ai essayé diverses combinaisons de ClearType (le désactiver sur l'hôte et le désactiver sur l'invité, et toutes les autres combinaisons) et il n'y a aucun changement à l'artefact brut affiché sur l'hôte par rapport à l'invité.
Je ne suis au courant d'aucune différence DPI entre l'hôte et l'hôte. D'autres polices, telles que la police Arial incluse dans Windows, ne présentent des problèmes similaires que sur l'hôte - j'ai simplement choisi Myriad Pro pour illustrer le problème.
La couleur des deux polices est 100% NOIRE (# 000).
Ce problème apparaît dans TOUTES les applications pouvant rendre les polices TrueType. J'ai utilisé WordPad à titre d'exemple, mais cela se produit également dans Microsoft PowerPoint et Camtasia de TechSmith.
Ce problème n'est pas lié aux polices TrueType; cela se produit également pour les polices OTF.
Et, pour ce que ça vaut, peu importe si je regarde l'hôte depuis un autre ordinateur via une session de bureau à distance (RDP) ou en utilisant quelque chose comme TeamViewer; De plus, le comportement de l'invité ne change pas lorsque j'utilise RDP ou TeamViewer.
De toute évidence, quelque chose ne va pas avec le sous-système de rendu des polices sur l'hôte. Fait intéressant, l'hôte était une machine Windows 7 Ultimate jusqu'à il y a environ une semaine (début février 2016), lorsque je l'ai mis à niveau en installant Windows 10 Enterprise. J'avais espéré que faire une telle mise à niveau de Windows 7 vers Windows 10 résoudrait le problème de rendu des polices, surtout parce que j'ai déjà vu que Windows 10 fonctionnant sur une machine virtuelle sur le même hôte n'avait pas le problème de rendu des polices. Malheureusement, la mise à jour de Windows 10 n'a pas corrigé le rendu des polices (je n'ai pas fait une nouvelle installation de Windows 10 - j'ai fait la mise à jour qui préserve les fichiers et les paramètres du système d'exploitation précédent).
En raison de tout ce que j'ai écrit ci-dessus, je soupçonne qu'il y a une valeur corrompue, manquante ou incorrecte dans le registre liée au rendu des polices pour le système d'exploitation hôte - mais qu'est-ce que cela pourrait être?
* Ajouté le 12/12/2016 * J'ai pris un tout nouveau disque dur et installé une instance propre de Windows 10 sur le même matériel sur lequel "l'hôte" auquel je fais référence ci-dessus est en cours d'exécution. La nouvelle instance de Windows 10 a des polices fluides, tout comme l'instance de machine virtuelle (VM) de Windows 10. Cela m'indique que le matériel de la machine ne provoque pas le problème pour générer l'image à droite et que la VM (ou la virtualisation) technologie) n'est pas la raison de la disparité. J'ai maintenant le disque dur A avec Windows 10 sur une machine physique dans laquelle je peux démarrer et voir l'image à droite; J'ai un deuxième disque dur B avec Windows 10 sur la même machine que je peux démarrer pour afficher l'image sur la gauche.
J'ai ensuite effacé ce nouveau disque dur et installé Windows 7 Ultimate à partir du DVD d'installation de Microsoft. Il rend également l'image à GAUCHE (les polices correctes et lisses). Le problème n'est donc pas que Windows 7 a le problème sur mon matériel et que Windows 10 ne le corrige pas - il est clair pour moi maintenant que Windows 7 n'affiche pas le problème de police sur mon matériel si je réinstalle Windows 7.
Donc, mis à part la virtualisation - il semble que j'observe une sorte de corruption dans le sous-système de rendu des polices entre ma machine hôte existante et une machine Windows 7/10 "normale" (rappelez-vous, ma machine hôte existante a été mise à niveau à partir de Windows 7 Ultimate vers Windows 10 Entreprise et le problème existait dans Windows 7 Ultimate avant de faire la mise à niveau; en fait, j'espérais que la mise à niveau résoudrait ce problème - hélas, ce n'est pas le cas).
Je vais essayer de comparer / comparer les entrées clés du registre pour les disparités dans mon temps libre, mais je suis toujours impatient d'entendre des experts qui pourraient m'aider à me concentrer sur la cause première.
Réponses:
Je n'ai jamais remarqué que le rendu des polices ClearType fonctionne si mal sur une grande taille de police ... mais sur mon Win10, c'est la même chose que sur votre ordinateur.
Le comportement que vous décrivez, à mon avis, ce n'est pas un bug ... c'est une fonctionnalité :-)
Jetez un œil aux images suivantes:
Image 1 : le rendu ClearType est activé (cliquez sur l'image pour mieux la voir)
Lorsque ClearType est activé, le moteur de rendu des polices Windows essaie d'optimiser le rendu des polices en profitant du sous-pixel LCD R / G / B. Si vous vérifiez l'image agrandie sur la gauche, vous pouvez voir que chaque police a un lissage bleuâtre / rougeâtre, cela est dû à la structure du sous-pixel LCD ( plus d'informations sur le rendu des sous-pixels ici ).
Mais, comme vous l'avez noté, cela fonctionne mal sur une grande taille de police.
Mais cela fonctionne toujours très bien sur une petite taille de police.
Image 2 : le rendu ClearType est désactivé (cliquez sur l'image pour mieux la voir)
Si vous désactivez le rendu ClearType, le moteur de rendu des polices Windows cessera de tirer parti de la structure des sous-pixels LCD et la police aura désormais un lissage gris simple (au lieu du lissage bleuâtre / rougeâtre).
Cela fonctionne mieux sur une grande taille de police ... mais fonctionne très mal sur une petite taille de police, comme vous pouvez le vérifier en regardant le rendu du nom de fichier, le rendu du menu et ainsi de suite ...
Maintenant, le fait que sur votre PC invité le rendu de police semble meilleur est probablement dû au fait que le rendu de police de sous-pixel ClearType n'est activé que lorsque Windows détecte un écran LCD physique. Si le PC virtuel ne détecte pas d'écran LCD physique, il utilisera probablement le lissage de police "standard" (niveaux de gris).
Maintenant, vous pouvez essayer de forcer Windows à utiliser le lissage des polices "standard / niveaux de gris", au lieu du lissage Cleartype / sous-pixel, mais sur mon ordinateur, cela ne fait aucune différence: forcer le lissage des niveaux de gris donne le même résultat que la désactivation de Cleartype à partir de Panneau de configuration. ( Plus d'informations ici sur les hacks de registre pour essayer de modifier le rendu Cleartype )
la source