Compartilhar via


Dispositivo versus Unidades de Design

Um aplicativo pode recuperar métricas de fonte para uma fonte física somente depois que a fonte tiver sido selecionada em um contexto de dispositivo. Quando uma fonte é selecionada em um contexto de dispositivo, ela é dimensionada para o dispositivo. As métricas de fonte específicas para o dispositivo são conhecidas como unidades de dispositivo.

As métricas portáteis em fontes são conhecidas como unidades de design. Para aplicar a um dispositivo especificado, as unidades de design devem ser convertidas em unidades de dispositivo. Use a fórmula a seguir para converter unidades de design em unidades de dispositivo.

DeviceUnits = (DesignUnits/unitsPerEm) * (PointSize/72) * DeviceResolution

As variáveis nesta fórmula têm os seguintes significados.

Variável Descrição
DeviceUnits Especifica a métrica de fonte DesignUnits convertida em unidades de dispositivo. Esse valor está nas mesmas unidades que o valor especificado para DeviceResolution.
DesignUnits Especifica a métrica de fonte a ser convertida em unidades de dispositivo. Esse valor pode ser qualquer métrica de fonte, incluindo a largura de um caractere ou o valor crescente de uma fonte inteira.
unitsPerEm Especifica o tamanho quadrado em da fonte.
PointSize Especifica o tamanho da fonte, em pontos. (Um ponto é igual a 1/72 de polegada.)
DeviceResolution Especifica o número de unidades de dispositivo (pixels) por polegada. Os valores típicos podem ser 300 para uma impressora laser ou 96 para uma tela VGA.

 

Essa fórmula não deve ser usada para converter unidades de dispositivo novamente em unidades de design. As unidades do dispositivo são sempre arredondadas para o pixel mais próximo. O erro de arredondamento propagado pode se tornar muito grande, especialmente quando um aplicativo está trabalhando com tamanhos de tela.

Para solicitar unidades de design, crie uma fonte lógica cuja altura é especificada como unitsPerEm. Os aplicativos podem recuperar o valor de unitsPerEm chamando a função EnumFontFamilies e verificando o membro ntmSizeEM da estrutura NEWTEXTMETRIC .