Windows 10: exibição incompleta dos caracteres de uma fonte

Windows 10: exibição incompleta dos caracteres de uma fonte
  • por padrão, o Windows 10 vem com osegoe ui emojiFonte
  • esta fonte é a única fonte padrão que possui os 4 caracteres Unicode a seguir:

Responder1

Os elementos modernos da UI não funcionam da mesma maneira que os elementos legados. A caixa de diálogo de execução e o bloco de notas são elementos legados antigos que não são atualizados com o restante do sistema operacional. A barra de pesquisa é um elemento moderno do sistema operacional, portanto este deve ser o comportamento de todos os elementos mais recentes do sistema operacional. A família de fontes Segoe foi desenvolvida para UI moderna e todas são usadas para várias funções de exibição de texto. Dito isto, o desenvolvimento da Microsoft não é conhecido pela consistência. Você pode encontrar elementos diferentes, desenvolvidos por equipes diferentes, com comportamentos diferentes.

Para obter mais informações sobre como as fontes são tratadas de maneira diferente em aplicativos "modernos" do Windows 10, leia este artigo:https://docs.microsoft.com/en-us/dotnet/framework/wpf/advanced/typography-in-wpf

O WPF fornece suporte aprimorado a fontes, fornecendo os seguintes recursos: Unicode para todo o texto. O comportamento e a seleção da fonte não exigem mais conjunto de caracteres ou página de código.

Isso explica como os aplicativos modernos podem exibir caracteres de várias fontes dentro de uma família de fontes.

Responder2

@harrymc "Todo software no Windows usa a mesma API que é suportada pelos mesmos componentes do Windows."

eu: * isso é relativo à sua definição de "api" * ambos rodam em .net, que roda em winrt (windows runtime) * no entanto, eles ainda podem ter interfaces diferentes * com isso observado, o wiki sugere que eles são diferente: https://en.wikipedia.org/wiki/Windows_Forms * "O Windows Forms é baseado na API existente do Windows e alguns controles apenas agrupam componentes subjacentes do Windows." https://en.wikipedia.org/wiki/Windows_Presentation_Foundation * "A arquitetura do WPF abrange componentes de código gerenciado e de código nativo. No entanto, a API pública exposta só está disponível por meio de código gerenciado. Embora a maior parte do WPF esteja em código gerenciado, o mecanismo de composição que renderiza os aplicativos WPF é um componente nativo ."

https://docs.microsoft.com/en-us/dotnet/api/system.windows.media.fontfamily?view=netframework-4.8

"O mecanismo de fallback de fontes WPF substitui tecnologias anteriores de substituição de fontes Win32."

https://support.microsoft.com/en-us/help/3083806/why-does-some-text-display-with-square-boxes-in-some-apps-on-windows-1

"O Windows ainda tem excelente suporte para Unicode e texto internacional, garantindo que os aplicativos universais do Windows possam ter excelente exibição de texto em dispositivos de desktop e em todos os outros formatos

@HackSlash "A caixa de diálogo de execução e o bloco de notas são elementos legados antigos que não são atualizados com o resto do sistema operacional."

eu: * não é verdade * no entanto, o bloco de notas não é atualizado com tanta frequência quanto o wordpad

observação * vou arrumar este post em breve * mal tive tempo de fazer isso antes que o tempo de recompensa acabasse * @harrymc e @HackSlash ambos cometeram erros fundamentais * então eu queria fornecer informações mais precisas

Responder3

Não concordo com a resposta aceita: todos os softwares no Windows usam a mesma API, que é suportada pelos mesmos componentes do Windows. Embora softwares mais antigos possam usar APIs desatualizadas, esse não é o caso do Notepad ou do Wordpad, que ainda estão em desenvolvimento hoje.

O problema enfrentado pelo autor da postagem com o Notepad e o Wordpad está mais relacionado à interface do usuário do que a um problema com esses produtos, e aqui está a prova, onde os caracteres são exibidos corretamente quando a fonte atual é especificada como Segoe UI Emoji:

insira a descrição da imagem aqui

No entanto, não espere que colar esses caracteres funcione quando a fonte atual não for Segoe UI Emoji, a menos que um ou mais deles estejam incluídos na fonte atual.

Para caixas de diálogo do Windows: Quando a caixa de diálogo é criada, a fonte usada pelo campo de texto é especificada na definição da caixa de diálogo. A fonte Segoe UI Emoji é obviamente inadequada como fonte de texto normal e, portanto, nunca seria usada para tal interface de usuário.

Você não pode forçar um diálogo a usar outra fonte diferente daquela com a qual foi programado, pelo menos não sem hackear o .exeou .dllque contém a definição do diálogo. Portanto, você não pode esperar que colar emojis funcione em caixas de diálogo.

EDITAR

A gama de caracteres Unicode, embora muito grande, não é suficiente para conter todos os caracteres de todos os idiomas da Terra. É por isso que as fontes são importantes, já que o mesmo ponto de código Unicode pode ser usado para caracteres diferentes em fontes diferentes.

A área de transferência do Windows é rica, ao contrário da área de transferência do Linux. Ele não contém apenas os caracteres, mas também pode conter informações sobre idioma, direção (direita, esquerda), fonte e muito mais. A API é capaz de configurar e obter diferentes formatos, e também é inteligente o suficiente para converter ao obter o formato armazenado para o formato solicitado.

Portanto, o que você obtém ao copiar e colar caracteres especiais depende da API usada pelos programas de origem e de destino. Abaixo está um exemplo que usa o Wordpad.

Este é o texto inicial na fonte Arial:

insira a descrição da imagem aqui

Agora copio e colo seu quarto caractere do navegador no final do texto e eis o milagre - a fonte agora é Segoe UI Emoji:

insira a descrição da imagem aqui

Então agora clico na palavra "Arial" e a fonte de repente fica diferente:

insira a descrição da imagem aqui

Portanto, agora temos texto em duas fontes diferentes. O personagem que colamos (

informação relacionada