Problema di rendering dei caratteri di Windows dispari (con demo video)


9

Guarda la demo video su: vimeo.com/155636855

Ho affrontato questo problema per troppo tempo - ora mi piacerebbe un po 'di aiuto esterno.

* Questo non ha nulla a che fare con la tecnologia VM - vedi nota aggiunta alla fine del post *

L'immagine allegata contiene un'immagine affiancata di un file WordPad con testo che rappresenta tutte le lettere dell'alfabeto, minuscole e maiuscole. L'immagine a sinistra è stata presa da una macchina virtuale Windows 10 (il sistema operativo "guest") in esecuzione su un host Windows 10 (il sistema operativo "host"); l'immagine a destra è stata presa dall'host Windows:

inserisci qui la descrizione dell'immagine

Ingrandisci l'immagine e osserva bene le differenze attorno ai bordi di ogni lettera: la sinistra è molto più liscia della destra e, nel caso in cui sei tentato di saltare a una rapida conclusione, CLEARTYPE NON È IL PROBLEMA (vedi i punti seguenti ), almeno non dal punto di vista "on" contro "off" (in altre parole, potrebbe essere coinvolta un'impostazione del registro di sistema relativa a ClearType, ma nulla sull'interfaccia utente di Windows relativa a ClearType lo sta causando perché entrambe le macchine sono calibrate per ClearType e ClearType è attivo su entrambi i computer host e guest).

I fatti:


Entrambi i sistemi operativi utilizzano lo stesso file di caratteri TrueType (TTF) del font Myriad

Entrambi i sistemi operativi sono impostati sulla stessa risoluzione dello schermo.

Pensavo che si trattasse di un problema con il driver video di Windows, ma ho l'ultimo driver nVidia e sto eseguendo una scheda GeForce GTX 560 relativamente di fascia alta con DirectX 12 su host e guest.

Entrambi i file di WordPad utilizzano lo stesso carattere, la dimensione del carattere, lo stile del carattere e lo zoom (100%).

Entrambi i sistemi operativi Windows 10 sono completamente aggiornati utilizzando Windows Update.

ClearType è attivo (attivo) sia sull'host Windows sia nella macchina virtuale. Ho provato varie combinazioni di ClearType (spegnendolo sull'host e spegnendolo sull'ospite, e tutte le altre combinazioni) e non c'è alcun cambiamento al manufatto grezzo visualizzato sull'host rispetto all'ospite.

Non sono a conoscenza di differenze DPI tra l'ospite e l'host. Altri caratteri, come il carattere Arial incluso in Windows, mostrano problemi analoghi solo all'host: ho appena scelto Myriad Pro per illustrare il problema.

Il colore di entrambi i caratteri è 100% NERO (# 000).

Questo problema si presenta in TUTTE le applicazioni in grado di eseguire il rendering dei caratteri TrueType. Ho usato WordPad solo come esempio, ma succede anche in Microsoft PowerPoint e Camtasia di TechSmith.

Questo problema non è correlato ai caratteri TrueType; succede anche per i caratteri OTF.

E, per quello che vale, non importa se visualizzo l'host da un altro computer attraverso una sessione desktop remoto (RDP) o usando qualcosa come TeamViewer; inoltre, il comportamento dell'ospite non cambia quando utilizzo RDP o TeamViewer.


Chiaramente qualcosa non va con il sottosistema di rendering dei caratteri sull'host. È interessante notare che l'host era una macchina Windows 7 Ultimate fino a circa una settimana fa (inizio febbraio 2016), quando l'ho aggiornato installando Windows 10 Enterprise. Speravo che un tale aggiornamento da Windows 7 a Windows 10 avrebbe risolto il problema del rendering dei caratteri, soprattutto perché avevo già visto che Windows 10 in esecuzione in una macchina virtuale sullo stesso host non aveva il problema di rendering dei caratteri. Sfortunatamente, l'aggiornamento a Windows 10 non ha corretto il rendering dei caratteri (non ho eseguito una nuova installazione di Windows 10 - ho fatto l'aggiornamento che preserva i file e le impostazioni precedenti del sistema operativo).

A causa di tutto ciò che ho scritto sopra, sospetto che ci sia un valore danneggiato, mancante o errato nel registro relativo al rendering dei caratteri per il sistema operativo host - ma cosa potrebbe essere?

* Aggiunto il 2/12/2016 * Ho preso un disco rigido nuovo di zecca e ho installato un'istanza pulita di Windows 10 sullo stesso hardware su cui è in esecuzione l '"host" a cui mi riferisco sopra. La nuova istanza di Windows 10 ha caratteri uniformi, proprio come l'istanza della macchina virtuale (VM) di Windows 10. Questo mi dice che l'hardware della macchina non sta causando il problema per generare l'immagine sulla destra e che la VM (o la virtualizzazione) tecnologia) non è la ragione della disparità. Ora ho il disco rigido A con Windows 10 su una macchina fisica in cui posso avviare e vedere l'immagine a destra; Ho un secondo disco rigido B con Windows 10 sulla stessa macchina in cui posso avviare per mostrare l'immagine a sinistra.

Ho quindi cancellato il nuovo disco rigido e ho installato Windows 7 Ultimate dal DVD di installazione di origine Microsoft. Rende anche l'immagine a SINISTRA (i caratteri corretti e lisci). Quindi il problema non è che Windows 7 ha il problema sul mio hardware e che Windows 10 non lo corregge - mi è chiaro ora che Windows 7 non mostra il problema del carattere sul mio hardware se reinstallo Windows 7.

Quindi, a parte la virtualizzazione - sembra che sto assistendo a una sorta di corruzione nel sottosistema di rendering dei caratteri tra la mia macchina host esistente e una macchina "normale" di Windows 7/10 (ricorda, la mia macchina host esistente è stata aggiornata da Windows 7 Ultimate a Windows 10 Enterprise e il problema esisteva in Windows 7 Ultimate prima di eseguire l'aggiornamento; in effetti, speravo che l'aggiornamento risolvesse questo problema, purtroppo non lo era).

Cercherò di cercare / confrontare le voci di registro chiave per le disparità nel mio tempo libero, ma sono ancora desideroso di sentire da tutti gli esperti che potrebbero aiutarmi a concentrarsi sulla causa principale.


quale software VM?
Yorik,

1
Il guest è una macchina virtuale VMWare 12 Workstation ma l'ho anche eseguito su HyperV.
Jazimov,

So che Word viene visualizzato internamente a circa 300 dpi e quindi viene eseguito il down-sample per la visualizzazione. La versione host nell'immagine sembra essere stata visualizzata con un'impostazione DPI inferiore. Non so perché. Non conosco molto sul rendering dei caratteri in Windows 10, ma mi sembra che abbiano eliminato il rendering subpixel a favore di AA in scala di grigi, poiché il rendering subpixel ha un orientamento e non è utile per dispositivi mobili e ruotabili. Se dovessi indovinare, direi che il problema risiede nel modo in cui l'hardware video virtuale della VM guest si presenta al sistema operativo.
Yorik,

Questo non è un problema di VM (vedi le mie note aggiunte), ma era un'ipotesi ragionevole. Potresti essere interessato a qualcosa quando parli di DPI, ma le tue idee / teorie purtroppo non si applicano alla mia configurazione. Inoltre, questo non è neanche un problema di "nuovo modo di fare Windows 10". Nota che entrambe le macchine sono macchine Windows 10 - e il mio nuovo commento dimostra che Windows 10 si comporta in modo diverso anche sulla stessa macchina fisica ... Quando ho detto che mi sono trovato alle prese con questo, intendevo quello! :)
Jazimov,

sei collegato tramite HDMI? Controlla le impostazioni della tua scheda video per una regolazione del sovraccarico e disabilita? Le schede IIRC Radeon sono abilitate per impostazione predefinita su HDMI e si riducono dal nativo
Yorik,

Risposte:


2

Non ho mai notato che il rendering dei caratteri ClearType funziona così male su caratteri di grandi dimensioni ... ma sul mio Win10 è lo stesso del tuo computer.

Il comportamento che descrivi, secondo me, non è un bug ... è una caratteristica :-)

Dai un'occhiata alle seguenti immagini:

Immagine 1 : il rendering ClearType è attivo (fare clic sull'immagine per vederlo meglio)

Rendering ClearType attivato

Quando ClearType è attivo, il motore di rendering dei caratteri di Windows tenta di ottimizzare il rendering dei caratteri sfruttando il subpixel LCD R / G / B. Se controlli l'immagine ingrandita a sinistra, puoi vedere che ogni carattere ha un livellamento bluastro / rossastro, ciò è dovuto alla struttura dei subpixel LCD ( maggiori informazioni sul rendering dei subpixel qui ).
Ma, come hai notato, questo funziona male su caratteri di grandi dimensioni.
Ma funziona ancora molto bene con caratteri di piccole dimensioni.

Immagine 2 : il rendering ClearType è OFF (fare clic sull'immagine per vederlo meglio) inserisci qui la descrizione dell'immagine

Se si disattiva il rendering ClearType, il motore di rendering dei caratteri di Windows smetterà di sfruttare la struttura del subpixel LCD e ora il carattere avrà un semplice livellamento grigio (anziché il livellamento bluastro / rossastro).
Funziona meglio con caratteri di grandi dimensioni ... ma funziona molto male con caratteri di piccole dimensioni, come puoi verificare guardando il rendering del nome del file, il rendering del menu e così via ...

Ora, il fatto che sul tuo PC guest il rendering dei caratteri appaia migliore, è probabilmente dovuto al fatto che il rendering dei caratteri subpixel ClearType è abilitato solo quando Windows rileva uno schermo LCD fisico. Se il pc virtuale non rileva un LCD fisico, probabilmente utilizzerà il livellamento del carattere "standard" (scala di grigi).

Ora potresti provare a forzare Windows a usare il livellamento del carattere "standard / in scala di grigi", invece che il livellamento Cleartype / subpixel, ma sul mio computer non ha fatto alcuna differenza: forzare il livellamento della scala di grigi dare lo stesso risultato disabilitando Cleartype da pannello di controllo. ( Maggiori informazioni qui sugli hack del registro per provare a modificare il rendering di Cleartype )


Ottimo feedback - e forse la risposta giusta. Prima di accettare, sono certamente perplesso sul motivo per cui una nuova istanza di Windows 10 sul mio host non ha rilevato l'LCD e quindi utilizza l'antialiasing subpixel (a meno che il driver video predefinito che Microsoft seleziona per una nuova istanza di Windows 10 faccia qualcosa di diverso dal driver Ho installato per la mia istanza di Windows 7 che ho successivamente aggiornato a Windows 10) ... Farò esperimenti con la VM per vedere se posso forzare il rendering subpixel rispetto alla scala di grigi - e sperimenterò anche con l'host e posterò presto.
Jazimov,

Il rilevamento del monitor @Jazimov viene effettuato da Windows attraverso la scheda video, quindi il driver della scheda video potrebbe sicuramente avere un impatto sul modo in cui il monitor viene rilevato da Windows.
Max

Allora, qual è il modo "giusto" per eseguire un sistema quando si utilizzano display LCD? Se ClearType è disattivato, si perdono miglioramenti del rendering con caratteri piccoli; se è attivo, perdi miglioramenti al rendering di caratteri di grandi dimensioni ... Cosa fare?
Jazimov,

@Jazimov probabilmente non c'è soluzione ... Tengo cleartype ebabled perché di solito lavoro con caratteri piccoli, ma sono solo io. Non ho mai notato il problema di rendering in chiaro sui caratteri grandi prima di leggere il tuo post 2 ore fa (sono uno sviluppatore di software e passo almeno 11/12 ore al PC ogni giorno ...)
Max

Farò ancora qualche modifica per vedere cosa mi viene in mente. Molte persone pensano che sia necessario mantenere ClearType attivo per ottenere un testo più piccolo accettabile, ma anche se si deseleziona usando la prima pagina del sintonizzatore ClearType, è ancora possibile eseguire il processo di ottimizzazione per calibrare il display. Potrebbe essere la soluzione migliore: ClearType OFF, display calibrati.
Jazimov,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.