Compartilhar via


Dispositivo vs. 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 o DesignUnits métrica de fonte 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 em quadrado 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 de volta em unidades de design. As unidades de 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 para unitsPerEm chamando a função EnumFontFamilies e verificando o membro ntmSizeEM da estruturaNEWTEXTMETRIC.