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.