Você está offline; aguardando reconexão

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

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
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.
3.00 3.10 3.50 4.00 win16sdk TrueType

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 74299 - Última Revisão: 11/21/2006 15:47:12 - Revisão: 3.2

Microsoft Windows Software Development Kit 3.1, Microsoft Win32 Application Programming Interface

  • kbmt kbinfo KB74299 KbMtpt
Comentários