INFORMACIÓN: Calcular el alto lógico y el tamaño de punto de una fuente

Seleccione idioma Seleccione idioma
Id. de artículo: 74299 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

Resumen

Para crear una fuente en el entorno de gráfico de Microsoft Windows proporciona sólo el tamaño del punto requerido, una aplicación debe calcular el alto lógico de la fuente porque las funciones CreateFont() y CreateFontIndirect() usan unidades lógicas para especificar el alto.

Para describir una fuente para el usuario, una aplicación puede calcular el tamaño en puntos la fuente, dada su alto. Este artículo proporciona las fórmulas necesarias para realizar estos cálculos para el modo de asignación MM_TEXT. Tendrá que derivar una nueva ecuación para calcular el tamaño de fuente de otro modo de asignación.

Más información

Para calcular el alto lógico, utilice la siguiente fórmula:
                                Point Size * LOGPIXELSY
   height = Internal Leading + -------------------------
                                          72
				
LOGPIXELSY es el número de píxeles contenidos en una pulgada lógica en el dispositivo. Este valor se obtiene llamando a la función GetDeviceCaps() con el índice LOGPIXELSY. El valor 72 es importante porque una pulgada contiene 72 puntos.

El problema con este cálculo es que no hay ningún método para determinar el iniciales interno de la fuente porque ha no se ha creado. Para evitar esta dificultad, utilice la siguiente variante de la fórmula:
            -(Point Size * LOGPIXELSY)
   height = --------------------------
                         72
				
esta fórmula también se puede escribir como sigue:
   plf->lfHeight = -MulDiv (nPtSize, GetDeviceCaps (hdc, LOGPIXELSY), 72);
				
cuando una aplicación llama a la CreateFont() o CreateFontIndirect() funciones y especifica un valor negativo para el parámetro de alto, el asignador de fuentes proporciona la coincidencia más cercana para el alto del carácter en lugar del alto de celda. La diferencia entre el alto de celda y el alto de carácter es el espacios iniciales internos, como se muestra en el siguiente diagrama:
   ----------  <------------------------------
   |        |           |- Internal Leading  |
   | |   |  |  <---------                    |
   | |   |  |        |                       |- Cell Height
   | |---|  |        |- Character Height     |
   | |   |  |        |                       |
   | |   |  |        |                       |
   ----------  <------------------------------
				
la fórmula siguiente calcula el tamaño de punto de una fuente:
                (Height - Internal Leading) * 72
   Point Size = --------------------------------
                           LOGPIXELSY
				
valores interno a la izquierda y el alto se obtienen de la estructura de datos TEXTMETRIC . El valor LOGPIXELSY se obtiene de la función GetDeviceCaps tal como se describe anteriormente.

Redondear el calculado tamaño de punto al entero más próximo. La función de Windows MulDiv() redondea su resultado y es una opción excelente para realizar el cálculo anterior.

Propiedades

Id. de artículo: 74299 - Última revisión: martes, 21 de noviembre de 2006 - Versión: 3.2
La información de este artículo se refiere a:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface sobre las siguientes 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
Palabras clave: 
kbmt kbinfo KB74299 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 74299

Enviar comentarios

 

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