wingdi.h

Estructura LOGFONT

Definición

typedef struct tagLOGFONT { // lf  
   LONG lfHeight; 
   LONG lfWidth; 
   LONG lfEscapement; 
   LONG lfOrientation; 
   LONG lfWeight; 
   BYTE lfItalic; 
   BYTE lfUnderline; 
   BYTE lfStrikeOut; 
   BYTE lfCharSet; 
   BYTE lfOutPrecision; 
   BYTE lfClipPrecision; 
   BYTE lfQuality; 
   BYTE lfPitchAndFamily; 
   TCHAR lfFaceName[LF_FACESIZE]; 
} LOGFONT;

La estructura LOGFONT define los atributos de una fuente.

Descripción

lfHeight: especifica la altura, en unidades lógicas, de la celda de carácter de la fuente o del carácter. El valor de altura del carácter The (también llamado altura em) es la altura de la celda del carácter menos el valor de separación vertical interno. El transformador de fuente interpreta el valor especificado en nHeight de la siguiente forma:

Valor Significado
> 0 El transformador de fuente transforma el valor a unidades de dispositivo y los hace coincidir con la altura de celda de las fuentes disponibles.
0 El transformador de fuente usa un valor de altura por defecto cuando busca una coincidencia.
< 0 El transformador de fuente transforma este valor a unidades de dispositivo y los hace coincidir con la altura de carácter de las fuentes disponibles.

Para todas las comparaciones de altura, el seleccionador de fuente busca la fuente más grande que no exceda el tamaño requerido.

Esta transformación se realiza cuando la fuente se usa por primera vez.

Para el modo de proyección MM_TEXT, se puede usar la siguiente fórmula para especificar una altura para una fuente con un tamaño en puntos dado:

nHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth: especifica la anchura media, en unidades lógicas, de los caracteres en la fuente requerida. Si ese valor es cero, se usa la proporción de aspecto del dispositivo para buscar una coincidencia comparando con las proporciones de aspecto de las fuentes disponibles, determinada por el valor absoluto de la diferencia.

lfEscapement: especifica el ángulo, en décimas de grado, entre el vector de escape y el eje x del dispositivo. El vector de escape es paralelo a la línea base de una línea de texto.

Windows NT:
Cuando el modo gráfico se pone a GM_ADVANCED, se puede especificar el ángulo de escape de la cadena independientemente del ángulo de orientación de los caracteres de la cadena.
Cuando el modo gráfico es GM_COMPATIBLE, lfEscapement especifica tanto el ángulo de escape como el de orientación. Se debe asignar a lfEscapement y a lfOrientation el mismo valor.

Windows 95:
El parámetro lfEscapement especifica tanto el ángulo de escape como la orientación. Se debe usar el mismo valor para ambos.

lfOrientation: especifica el ángulo, en décimas de grado, entre la línea base de cada carácter y el eje x del dispositivo.

lfWeight: especifica el peso de la fuente en el rango de 0 a 1000. Por ejemplo, 400 es normal y 700 es negrita. Si el valor es cero, se usa el peso por defecto.

Se han definido los siguientes valores por conveniencia:

Valor Peso
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900

lfItalic: especifica una fuente cursiva si se asigna TRUE.

lfUnderline: especifica una fuente subrayada si se asigna TRUE.

lfStrikeOut: especifica una fuente tachada si se asigna TRUE.

lfCharSet: especifica el conjunto de caracteres. Existen los siguientes valores predefinidos:

  • ANSI_CHARSET
  • DEFAULT_CHARSET
  • SYMBOL_CHARSET
  • SHIFTJIS_CHARSET
  • GB2312_CHARSET
  • HANGEUL_CHARSET
  • CHINESEBIG5_CHARSET
  • OEM_CHARSET

Sólo Windows 95:

  • JOHAB_CHARSET
  • HEBREW_CHARSET
  • ARABIC_CHARSET
  • GREEK_CHARSET
  • TURKISH_CHARSET
  • THAI_CHARSET
  • EASTEUROPE_CHARSET
  • RUSSIAN_CHARSET
  • MAC_CHARSET
  • BALTIC_CHARSET

El valor OEM_CHARSET especifica un conjunto de caracteres que es dependiente del sistema operativo.

Se puede usar el valor DEFAULT_CHARSET para usar una fuente cuyo nombre y tamaño describen completamente la fuente lógica. Si el nombre de fuente especificado no existe, una fuente de cualquier conjunto de caracteres puede sustituir a la especificada, así que se debe usar DEFAULT_CHARSET con cuidado para evitar resultados inesperados.

Las fuentes con otros conjuntos de caracteres pueden existir en el sistema operativo. Si una aplicación usa una fuente con un conjunto de caracteres desconocido, no debe intentar traducir o interpretar cadenas que se hayan sido trazadas con esa fuente.

Este parámetro es importante en el proceso de transformación de la fuente. Para asegurar resultados consistentes, hay que especificar un conjunto de caracteres concreto. Si se especifica un nombre de tipo en el parámetro lpszFace, hay que asegurarse de que el valor fdwCharSet coincide con el conjunto de caracteres del tipo especificado en lpszFace.

lfOutputPrecision: especifica la precisión de salida. La precisión de salida define cuánto debe aproximarse la salida a los valores de altura, anchura, orientación, escape, espaciado y tipo de fuente requeridos. Puede ser uno de los siguientes valores:

Valor Significado
OUT_CHARACTER_PRECIS No se usa.
OUT_DEFAULT_PRECIS Especifica el comportamiento de transformación por defecto.
OUT_DEVICE_PRECIS Indica al transformador para que elija una fuente de dispositivo cuando el sistema contiene múltiples fuentes con el mismo nombre.
OUT_OUTLINE_PRECIS Windows NT: este valor indica al transformador que elija entre TrueType y otras fuentes de contornos.
Windows 95: este valor no se usa.
OUT_RASTER_PRECIS Indica al transformador de fuentes que elija una fuente matricial cuando el sistema contenga múltiples fuentes con el mismo nombre.
OUT_STRING_PRECIS Este valor no se usa por el transformador de fuentes, pero es devuelto cuando se enumeran fuentes matriciales.
OUT_STROKE_PRECIS Windows NT: este valor no se usa por el transformador de fuentes, pero se devuelve cuando se enumeran fuentes TrueType, otras fuentes de contornos y fuentes vectoriales.
Windows 95: Este valor se usa para transformar fuentes vectoriales, y se devuelve cuando se enumeran fuentes TrueType o vectoriales.
OUT_TT_ONLY_PRECIS Indica al transformador de fuentes que elija sólo entre fuentes TrueType. Si no hay fuentes TrueType instaladas en el sistema, el transformador de fuentes regresa al comportamiento por defecto.
OUT_TT_PRECIS Indica al transformador de fuentes que elija una fuente TrueType cuando el sistema contenga varias fuentes con el mismo nombre.

Las aplicaciones pueden usar los valores OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS y OUT_TT_PRECIS para controlar el modo en que el transformador de fuentes selecciona una fuente cuando el sistema operativo contiene más de una fuente con el nombre dado. Por ejemplo, si un sistema operativo contiene una fuente llamada Symbol tanto en formato matricial como TrueType, especificando OUT_TT_PRECIS se fuerza al transformador a elegir la versión TrueType. Especificando OUT_TT_ONLY_PRECIS se fuerza al transformador a elegir la fuente TrueType, aúnque tenga que sustituirla por una fuente TrueType de otro nombre.

lfClipPrecision: especifica la precisión de recorte. La precisión de recorte define cómo recortar los caracteres que están parcialmente fuera de la región de recorte. Puede tener uno o más de los siguientes valores:

Valor Significado
CLIP_DEFAULT_PRECIS Especifica el comportamiento de recorte por defecto.
CLIP_CHARACTER_PRECIS No usado.
CLIP_STROKE_PRECIS No se usa por el transformador de fuentes, pero se devuelve cuando fuentes matriciales, vectoriales o TrueType son enumeradas.
Windows NT: por compatibilidad, este valor es siempre devuelto cuando se enumeran fuentes.
CLIP_MASK No usado.
CLIP_EMBEDDED Se debe especificar este banderín para usar una fuente de sólo lectura embebida.
CLIP_LH_ANGLES Cuando se usa este valor, la rotación para todas las fuentes depende de si la orientación del sistema de coordenadas es a izquierdas o a derechas.
Si no se usa, las fuentes de dispositivo siempre se rotan en el sentido de las agujas del reloj, pero la rotación de las otras fuentes depende de la orientación del sistema de coordenadas
Para mayor información sobre la orientación de sistemas de coordenadas, ver la descripción del parámetro lfOrientation.
CLIP_TT_ALWAYS No usado.

lfQuality: especifica la calidad de salida. La calidad de salida define con cuanto cuidado el GDI debe intentar hacer coincidir los atributos de fuentes lógicas con la fuente física actual. Puede ser uno de los siguientes valores:

Valor Significado
DEFAULT_QUALITY La apariencia de la fuente no importa.
DRAFT_QUALITY La apariencia de la fuente es menos importante que cuando se usa el valor PROOF_QUALITY. Se pueden escalar fuentes de GDI matriciales, esto significa que hay más tamaños de fuentes disponibles, pero la calidad puede ser menor. Las fuentes negritas, cursivas, subrayadas y tachadas se sintetizan si es necesario.
PROOF_QUALITY La calidad de los caracteres de la fuente es más importante que la exactitud de aproximación de los atributos de la fuente. No se permite escalar fuentes matriciales del GDI, y se selecciona la fuente del tamaño más próximo al elegido. Además, el tamaño de la fuente elegida no puede transformase exactamente cuando se usa PROOF_QUALITY, la calidad de la fuente es mayor y no hay distorsión de apariencia. Las fuentes negritas, cursivas, subrayadas y tachadas se sintetizan si es necesario.

lfPitchAndFamily: especifica el tipo de paso y familia de la fuente. Los dos bits de menor orden especifican el tipo de paso de la fuente y pueden ser uno de los siguientes valores:

  • DEFAULT_PITCH
  • FIXED_PITCH
  • VARIABLE_PITCH

Los cuatro bits de mayor orden especifican la familia de la fuente y pueden ser uno de los siguientes valores:

Valor Descripción
FF_DECORATIVE Fuentes novedosas. Por ejemplo "Old English".
FF_DONTCARE No importa o no se conoce.
FF_MODERN Fuentes con anchura constante, con o sin decoraciones (serif). Ejemplos: Pica, Elite y Courier New®.
FF_ROMAN Fuentes con anchura variable con uniones. MS® Serif es un ejemplo.
FF_SCRIPT Fuentes diseñadas para que parezcan manuscritas. Por ejemplo Script y Cursive.
FF_SWISS Fuentes con anchura variable con o sin decoraciones (serif). MS® Sans Serif es un ejemplo.

La aplicación puede especificar un valor para el parámetro lfPitchAndFamily usando el operador booleano OR para unis una constante de tipo de paso con una constante de familia.

Las familias de fuentes describen la apariencia de una fuente de una forma general. Están diseñadas para especificar fuentes cuando el tipo exacto requerido no está disponible.

lfFaceName: apunta a una cadena terminada en cero que especifica el nombre de la fuente. La longitud de esa cadena no debe exceder los 32 caracteres, incluyendo el cero terminador. Se puede usar la función EnumFontFamilies para enumerar los nombres de todas las fuentes disponibles actualmente. Si lfFaceName es NULL o apunta a una cadena vacía, el GDI usa la primera fuente que coincida con el resto de los atributos especificados.