Suavização de ClearType
A suavização do Microsoft ClearType é um método de suavização que melhora a resolução de exibição de fontes em relação à suavização tradicional. Ele melhora drasticamente a legibilidade em monitores LCD de cores com uma interface digital, como aqueles em laptops e telas de área de trabalho plana de alta qualidade. A legibilidade em telas CRT também é um pouco melhorada.
No entanto, ClearType depende da orientação e ordenação das faixas LCD. Atualmente, ClearType é implementado apenas para LCDs com faixas verticais que são ordenadas RGB. Em particular, isso afeta os computadores tablet, onde a exibição pode ser orientada em qualquer direção, e as telas que podem ser transformadas de paisagem para retrato.
A suavização ClearType é permitida:
- Para cores de 16, 24 e 32 bits (desabilitada para 256 cores ou menos)
- Para DC de tela e DC de memória (não para DC de impressora)
- Para fontes TrueType e fontes OpenType com estruturas de tópicos TrueType
A suavização ClearType está desabilitada:
- No cliente do servidor de terminal
- Para fontes de bitmap, fontes de vetor, fontes de dispositivo, fontes tipo 1 ou fontes OpenType postscript sem estruturas de tópicos TrueType
- Se a fonte tiver bitmaps inseridos ajustados, somente para os tamanhos de fonte que contêm os bitmaps inseridos
Para ativar a suavização ClearType, chame SystemParametersInfo uma vez para ativar a suavização de fonte e, em seguida, uma segunda vez para definir o tipo de suavização como FE_FONTSMOOTHINGCLEARTYPE, conforme mostrado no exemplo de código a seguir:
SystemParametersInfo(SPI_SETFONTSMOOTHING,
TRUE,
0,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,
0,
(PVOID)FE_FONTSMOOTHINGCLEARTYPE,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Você pode ajustar a aparência do texto alterando o valor de contraste usado no algoritmo ClearType. O padrão é 1.400, mas pode ser qualquer valor de 1.000 a 2.200. Dependendo do dispositivo de exibição e da sensibilidade do usuário às cores, um valor de contraste maior ou inferior pode melhorar a legibilidade. Para alterar o contraste, chame SystemParametersInfo com SPI_SETFONTSMOOTHINGCONTRAST. O código a seguir define o valor de contraste como 1.600.
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST,
0,
(PVOID)1600,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Você deve considerar os seguintes detalhes para compatibilidade do aplicativo:
- A renderização de texto com ClearType é um pouco mais lenta do que com suavização padrão.
- Os aplicativos não devem usar XOR para exibir o texto selecionado. Os aplicativos devem definir a cor da tela de fundo e exibir novamente o texto selecionado.
- Os aplicativos não devem pintar o mesmo texto sobre si mesmos no modo transparente. Se isso ocorrer, os pixels de borda suavizados serão mesclados por cores em vez de com a cor da tela de fundo. Isso resulta em bordas escuras e coloridas.
- Os aplicativos não devem pintar texto pintando os caracteres individualmente quando estiverem no modo opaco porque a borda de um caractere pode ser recortada pelo caractere a seguir. Isso ocorre porque um caractere suavizado com ClearType pode ter uma largura A ou C negativa em que o caractere regular tem uma largura A ou C positiva. Somente a largura B do caractere tem a garantia de ser a mesma. Da mesma forma, os aplicativos devem ter cuidado se o texto suavizado estiver ao lado do texto sem modificação.
- Se um aplicativo renderizar texto e manipular o bitmap, a suavização de fonte deverá ser desativada definindo o membro lfQuality da estrutura LOGFONT como NONANTIALIASED_QUALITY. Por exemplo, um jogo pode adicionar um efeito de sombra de bitmap ou o texto renderizado em um bitmap pode ser dimensionado para produzir uma visão geral.
- Se o usuário estiver executando no modo retrato (ou seja, a distribuição de monitores for horizontal) a suavização ClearType deverá ser desabilitada.
O parâmetro fdwQuality em CreateFont e o membro lfQuality do LOGFONT aceitam o sinalizador CLEARTYPE_QUALITY. A rasterização de fontes criadas com esse sinalizador usará o rasterizador ClearType. Esse sinalizador não tem efeito sobre as versões anteriores do sistema operacional.