Problema estranho de renderização de fonte do Windows (com demonstração em vídeo)

9

Veja a demonstração em vídeo em: vimeo.com/155636855

Eu luto com esse problema há muito tempo - agora gostaria de alguma ajuda externa.

* Isso não tem nada a ver com a tecnologia VM - veja nota adicional no final do post *

A imagem anexada contém uma imagem lado a lado de um arquivo do WordPad com o texto representando todas as letras do alfabeto, maiúsculas e minúsculas. A imagem à esquerda foi tirada de uma máquina virtual Windows 10 (o SO "convidado") em execução em um host do Windows 10 (o SO "host"); a imagem à direita foi tirada do host do Windows:

insira a descrição da imagem aqui

Amplie a imagem e dê uma boa olhada nas diferenças nas bordas de cada letra: A esquerda é muito mais suave que a direita - e, se você estiver tentado a chegar rapidamente a uma conclusão rápida, CLEARTYPE NÃO É O PROBLEMA (veja os pontos abaixo) ), pelo menos não da perspectiva "ativado" versus "desativado" (em outras palavras, uma configuração de registro relacionada ao ClearType pode estar envolvida, mas nada na interface do usuário do Windows relacionada ao ClearType está causando isso porque os dois computadores são calibrados para ClearType e O ClearType está ativado nas máquinas host e convidado).

Fatos:


Ambos os sistemas operacionais estão usando o mesmo arquivo de fonte TrueType (TTF) da fonte Myriad

Ambos os sistemas operacionais estão configurados com a mesma resolução de tela.

Eu pensei que este era um problema de driver de vídeo do Windows, mas tenho o driver nVidia mais recente e estou executando uma placa GeForce GTX 560 relativamente avançada com DirectX 12 no host e no hóspede.

Os dois arquivos do WordPad estão usando a mesma fonte, tamanho da fonte, estilo da fonte e zoom (100%).

Os dois sistemas operacionais Windows 10 são totalmente atualizados usando o Windows Update.

O ClearType está ativo (ativado) no host do Windows e na máquina virtual. Eu tentei várias combinações de ClearType (desativá-lo no host e desativá-lo no convidado e todas as outras combinações) e não há alteração no artefato de ponta exibido no host em comparação com o convidado.

Não conheço nenhuma diferença de DPI entre o convidado e o host. Outras fontes, como a fonte Arial, incluída no Windows, mostram problemas semelhantes apenas no host - acabei de escolher o Myriad Pro para ilustrar o problema.

A cor das duas fontes é 100% PRETA (# 000).

Esse problema aparece em TODOS os aplicativos que podem renderizar fontes TrueType. Usei o WordPad apenas como exemplo, mas também acontece no Microsoft PowerPoint e no Camtasia do TechSmith.

Este problema não está relacionado às fontes TrueType; isso acontece também com fontes OTF.

E, pelo que vale, não importa se eu vejo o host de outro computador por meio de uma sessão de área de trabalho remota (RDP) ou usando algo como o TeamViewer; Além disso, o comportamento do convidado não muda quando eu uso o RDP ou o TeamViewer.


Claramente, algo está errado com o subsistema de renderização de fontes no host. Curiosamente, o host era uma máquina Windows 7 Ultimate até cerca de uma semana atrás (início de fevereiro de 2016), quando eu a atualizei instalando o Windows 10 Enterprise. Eu esperava que essa atualização do Windows 7 para o Windows 10 resolvesse o problema de renderização de fontes, especialmente porque eu já vi que o Windows 10 em execução em uma máquina virtual no mesmo host não apresentava o problema de renderização de fontes. Infelizmente, a atualização para o Windows 10 não corrigiu a renderização da fonte (não fiz uma nova instalação do Windows 10 - fiz a atualização que preserva os arquivos e as configurações anteriores do sistema operacional).

Devido a tudo o que escrevi acima, suspeito que haja algum valor corrompido, ausente ou incorreto no registro relacionado à renderização da fonte para o SO host - mas o que poderia ser?

* Adicionado em 12/12/2016 * Peguei um disco rígido novo e instalei uma instância limpa do Windows 10 no mesmo hardware em que o "host" a que me refiro acima está em execução. A nova instância do Windows 10 possui fontes suaves, assim como a instância da máquina virtual (VM) do Windows 10. Isso me diz que o hardware da máquina não está causando o problema de gerar a imagem à direita e que a VM (ou virtualização) tecnologia) não é a razão da disparidade. Agora tenho o disco rígido A com o Windows 10 em uma máquina física na qual posso inicializar e ver a imagem à direita; Eu tenho um segundo disco rígido B com o Windows 10 na mesma máquina em que posso inicializar para mostrar a imagem à esquerda.

Limpei o novo disco rígido e instalei o Windows 7 Ultimate no DVD de instalação da Microsoft. Também renderiza a imagem na ESQUERDA (as fontes corretas e suaves). Portanto, o problema não é que o Windows 7 tenha o problema no meu hardware e que o Windows 10 não o corrija - está claro para mim agora que o Windows 7 não mostra o problema da fonte no meu hardware se eu reinstalar o Windows 7.

Portanto, virtualização à parte - parece que estou testemunhando algum tipo de corrupção no subsistema de renderização de fontes entre minha máquina host existente e uma máquina Windows 7/10 "normal" (lembre-se, minha máquina host existente foi atualizada a partir do Windows 7 Ultimate para o Windows 10 Enterprise e o problema existia no Windows 7 Ultimate antes de fazer a atualização; na verdade, eu esperava que a atualização resolvesse esse problema (infelizmente, não).

Tentarei procurar / comparar as entradas principais do registro em busca de disparidades no meu tempo livre, mas ainda estou ansioso por receber algum especialista que possa me ajudar a encontrar a causa raiz.

Jazimov
fonte
qual software VM?
Yorik
11
O convidado é uma máquina virtual do VMWare 12 Workstation, mas também a executei no HyperV.
Jazimov 11/02
Eu sei que o Word é processado internamente em cerca de 300 dpi e depois apresenta amostras para exibição. A versão do host em sua imagem parece ter sido renderizada em uma configuração de DPI mais baixa. Não sei por que. Não sei muito sobre a renderização de fontes no Windows 10, mas parece que eles eliminaram a renderização de subpixel em favor do AA em escala de cinza, pois a renderização de subpixel tem uma orientação e isso não é útil para dispositivos móveis e rotativos. Se eu tivesse que adivinhar, diria que o problema está na forma como o hardware de vídeo virtual da VM convidado é apresentado ao sistema operacional.
Yorik
Este não é um problema de VM (veja minhas notas adicionadas), mas esse foi um palpite razoável. Você pode estar interessado em alguma coisa quando fala em DPI, mas suas idéias / teorias infelizmente não se aplicam à minha configuração. Além disso, este também não é um "novo modo de fazer o Windows 10". Observe que ambas as máquinas são máquinas Windows 10 - e meu novo comentário prova que o Windows 10 se comporta de maneira diferente, mesmo na mesma máquina física ... Quando eu disse que estava lidando com isso, quis dizer isso! :)
Jazimov
você está conectado via HDMI? Verifique a configuração da sua placa de vídeo para um ajuste de overdraw e desative? IIRC Radeon cartões padrão para esta habilitado através de HDMI e escalas longe nativa
Yorik

Respostas:

2

Eu nunca notei que a renderização de fontes ClearType funciona tão mal em tamanho de fonte grande ... mas no meu Win10 é igual ao seu computador.

O comportamento que você descreve, na minha opinião, não é um bug ... é uma característica :-)

Veja as seguintes imagens:

Imagem 1 : A renderização do ClearType está ativada (clique na imagem para ver melhor)

Renderização ClearType ativada

Quando o ClearType está ativado, o mecanismo de renderização de fontes do Windows tenta otimizar a renderização de fontes aproveitando o subpixel de LCD R / G / B. Se você verificar a imagem ampliada à esquerda, poderá ver que cada fonte possui suavização azulada / avermelhada, devido à estrutura de subpixel de LCD ( mais informações sobre renderização de subpixel aqui ).
Mas, como você observou, isso funciona mal em tamanho de fonte grande.
Mas ainda funciona muito bem em fontes pequenas.

Imagem 2 : a renderização do ClearType está desativada (clique na imagem para vê-la melhor) insira a descrição da imagem aqui

Se você desativar a renderização ClearType, o mecanismo de renderização de fonte do Windows deixará de aproveitar a estrutura de subpixel de LCD e agora a fonte terá uma simples suavização de cinza (em vez da suavização azulada / avermelhada).
Isso funciona melhor em tamanho de fonte grande ... mas funciona muito mal em tamanho de fonte pequeno, como você pode verificar olhando a renderização de nome de arquivo, a renderização de menu e assim por diante ...

Agora, o fato de que no PC convidado a renderização da fonte parece melhor, provavelmente se deve ao fato de a renderização da fonte do subpixel ClearType ser ativada apenas quando o Windows detectar uma tela de LCD física. Se o PC virtual não detectar um LCD físico, provavelmente usará a suavização de fonte "padrão" (escala de cinza).

Agora você pode tentar forçar o Windows a usar a suavização de fonte "padrão / escala de cinza", em vez da suavização Cleartype / subpixel, mas no meu computador isso não faz nenhuma diferença: forçar a suavização da escala de cinza produz o mesmo resultado que a desativação do Cleartype. Painel de controle. ( Mais informações aqui sobre hacks de registro para tentar ajustar a renderização do Cleartype )

Máx.
fonte
Excelente feedback - e possivelmente a resposta certa. Antes de aceitar, admito que estou perplexo com o motivo pelo qual uma nova instância do Windows 10 no meu host não detectou o LCD e depois usou o antialiasing de subpixel (a menos que o driver de vídeo padrão que a Microsoft seleciona para uma nova instância do Windows 10 faça algo diferente do driver Instalei na minha instância do Windows 7 que atualizei mais tarde para o Windows 10) ... Vou experimentar a VM para ver se consigo forçar subpixel contra renderização em escala de cinza - e também experimentarei o host e publicarei novamente em breve.
Jazimov
A detecção do monitor @Jazimov é feita pelo Windows através da placa de vídeo, de modo que o driver da placa de vídeo certamente pode ter um impacto sobre como o monitor é detectado pelo Windows.
Max
Então, qual é a maneira "correta" de executar um sistema ao usar monitores LCD? Se o ClearType estiver desativado, você perderá melhorias na renderização de fontes pequenas; se estiver ativado, você perde melhorias na renderização de fontes grandes ... O que fazer?
Jazimov
@Jazimov provavelmente não há solução ... Eu mantenho o cleartype ebabled porque geralmente trabalho com fontes pequenas, mas sou apenas eu. Eu nunca percebi o problema de processamento cleartype em fontes grandes antes de ler seu post 2 horas atrás (eu sou um desenvolvedor de software, e eu gastar pelo menos 11/12 horas a PC a cada dia ...)
Max
Eu ainda vou fazer alguns ajustes para ver o que eu acho. Muitas pessoas pensam que você precisa manter o ClearType para obter um texto menor aceitável, mas mesmo se você desmarcá-lo usando a primeira página do sintonizador ClearType, você ainda pode passar pelo processo de ajuste para calibrar sua exibição. Essa pode ser a melhor solução: ClearType OFF, exibe calibrado.
Jazimov