Problème étrange de rendu des polices Windows (avec démonstration vidéo)

9

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:

entrez la description de l'image ici

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.

Jazimov
la source
quel logiciel VM?
Yorik
1
L'invité est une machine virtuelle VMWare 12 Workstation mais je l'ai également exécutée sous HyperV.
Jazimov
Je sais que Word effectue un rendu à environ 300 dpi en interne puis des sous-échantillons pour l'affichage. La version hôte de votre image semble avoir été rendue avec un paramètre DPI inférieur. Pas certain de pourquoi. Je ne connais pas beaucoup le rendu des polices dans Windows 10, mais il me semble qu'ils ont supprimé le rendu en sous-pixels au profit de l'échelle de gris AA, car le rendu en sous-pixels a une orientation et n'est pas utile pour les appareils mobiles et rotatifs. Si je devais deviner, je dirais que le problème réside dans la façon dont le matériel vidéo virtuel de la VM invitée se présente au système d'exploitation.
Yorik
Ce n'est pas un problème de machine virtuelle (voir mes notes ajoutées), mais c'était une supposition raisonnable. Vous pourriez être sur quelque chose lorsque vous parlez de DPI, mais vos idées / théories ne s'appliquent malheureusement pas à ma configuration. En outre, ce n'est pas non plus un problème de "nouvelle façon de faire Windows 10". Notez que les deux machines sont des machines Windows 10 - et mon nouveau commentaire prouve que Windows 10 se comporte différemment même sur la même machine physique ... Quand j'ai dit que je me débattais avec ça, je voulais dire ça! :)
Jazimov
êtes-vous connecté via HDMI? Vérifiez le réglage de votre carte vidéo pour un ajustement de sur-retrait et désactivez-le? Les cartes IIRC Radeon par défaut sont activées sur HDMI et elles évoluent loin des natives
Yorik

Réponses:

2

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)

Rendu ClearType activé

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) entrez la description de l'image ici

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 )

Max
la source
Excellente rétroaction - et peut-être la bonne réponse. Avant d'accepter, je suis certes perplexe quant à la raison pour laquelle une nouvelle instance de Windows 10 sur mon hôte n'a pas détecté l'écran LCD, puis utilise l'anticrénelage sous-pixel (sauf si le pilote vidéo par défaut que Microsoft sélectionne pour une nouvelle instance de Windows 10 fait quelque chose de différent du pilote J'ai installé pour mon instance Windows 7 que j'ai ensuite mise à niveau vers Windows 10) ... Je vais expérimenter avec la machine virtuelle pour voir si je peux forcer le rendu sous-pixel par rapport aux niveaux de gris - et je vais également expérimenter avec l'hôte et je posterai encore bientôt.
Jazimov
La détection du moniteur @Jazimov est effectuée par Windows via la carte vidéo, de sorte que le pilote de la carte vidéo pourrait sûrement avoir un impact sur la façon dont le moniteur est détecté par Windows.
Max
Alors, quelle est la "bonne" façon de faire fonctionner un système lorsque vous utilisez des écrans LCD? Si ClearType est désactivé, vous perdez les améliorations du rendu des petites polices; si elle est activée, vous perdez les améliorations du rendu des grandes polices ... Que faire?
Jazimov
@Jazimov il n'y a probablement pas de solution ... Je garde le type clair activé car je travaille généralement avec de petites polices, mais c'est juste moi. Je n'ai jamais remarqué le problème de rendu en clair sur les grandes polices avant de lire votre post il y a 2 heures (je suis développeur de logiciels, et je passe au moins 11/12 heures sur PC chaque jour ...)
Max
Je ferai encore quelques ajustements pour voir ce que je propose. Beaucoup de gens pensent que vous devez garder ClearType activé pour obtenir un texte plus petit acceptable, mais même si vous le décochez en utilisant la première page du tuner ClearType, vous pouvez toujours suivre le processus de mise au point pour calibrer votre affichage. Cela pourrait être la meilleure solution: ClearType OFF, écrans calibrés.
Jazimov