INFO: Calcular A altura lógica e tamanho de ponto de um tipo de letra

Traduções de Artigos Traduções de Artigos
Artigo: 74299 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sumário

Para criar um tipo de letra no ambiente de gráfico do Microsoft Windows fornecido apenas necessário tamanho, uma aplicação tem de calcular a altura lógica do tipo de letra uma vez que as funções CreateFont() e CreateFontIndirect() utilizam unidades lógicas para especificar a altura.

Para descrever um tipo de letra para o utilizador, uma aplicação pode calcular o tamanho de um tipo de letra, fornecido a respectiva altura. Este artigo fornece as fórmulas necessárias para efectuar estes cálculos para o modo de mapeamento MM_TEXT. Terá de criar uma nova equação para calcular o tamanho de tipo de letra em outro modo de mapeamento.

Mais Informação

Para calcular a altura lógica, utilize a seguinte fórmula:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY é o número de pixels contidos numa polegada lógica no dispositivo. Este valor é obtida chamando a função GetDeviceCaps() com índice LOGPIXELSY. O valor 72 é importante porque uma polegada contém 72 pontos.

O problema com este cálculo é que não existe nenhum método para determinar o inicial interno para o tipo de letra porque ele foi não ainda criado. Para contornar esta dificuldade, utilize a seguinte variação da fórmula:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
esta fórmula também pode ser escrita da seguinte forma:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
quando uma aplicação chama CreateFont() ou CreateFontIndirect() funciona e especifica um valor negativo para o parâmetro de altura, o mapeador do tipo de letra fornece a correspondência mais próxima para a altura de caracteres em vez da altura da célula. A diferença entre a altura da célula e a altura de caracteres é o espaçamento interno, como demonstrado pelo diagrama seguinte:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
a fórmula seguinte calcula o tamanho de um tipo de letra:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
valores a altura e interno à esquerda são obtidos da estrutura de dados TEXTMETRIC . O valor LOGPIXELSY é obtido da função GetDeviceCaps conforme descrito acima.

Circular a calculado tamanho de ponto para o inteiro mais próximo. A função Windows MulDiv() Arredonda o resultado e é uma excelente opção para efectuar o cálculo anterior.

Propriedades

Artigo: 74299 - Última revisão: 21 de novembro de 2006 - Revisão: 3.2
A informação contida neste artigo aplica-se a:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface nas seguintes plataformas
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Developer Edition
Palavras-chave: 
kbmt kbinfo KB74299 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 74299

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com