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 .