wingdi.h


CreateFont

La función CreateFont crea una fuente lógica con las características especificadas. La fuente lógica puede ser seleccionada después como la fuente para cualquier dispositivo.

Sintaxis

HFONT CreateFont(
    int  nHeight,        // altura lógica de la fuente
    int  nWidth,         // anchura media lógica de carácter
    int  nEscapement,    // ángulo de escape
    int  nOrientation,   // ángulo de orientación de línea de base
    int  fnWeight,       // peso de la fuente
    DWORD  fdwItalic,    // banderín de atributo de cursiva
    DWORD  fdwUnderline, // banderín de atributo de subrayado
    DWORD  fdwStrikeOut, // banderín de atributo de tachada
    DWORD  fdwCharSet,   // identificador de conjunto de caracteres
    DWORD  fdwOutputPrecision, // precisión de salida
    DWORD  fdwClipPrecision,   // precisión de recorte
    DWORD  fdwQuality,   // calidad de salida
    DWORD  fdwPitchAndFamily,  // pitch y familia 
    LPCTSTR  lpszFace    // dirección de cadena con nombre de fuente
   );

Parámetros:

nHeight: 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);

nWidth: 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.

nEscapement: 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, nEscapement especifica tanto el ángulo de escape como el de orientación. Se debe asignar a nEscapement y a nOrientation el mismo valor.

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

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

fnWeight: 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

fdwItalic: especifica una fuente cursiva si se asigna TRUE.

fdwUnderline: especifica una fuente subrayada si se asigna TRUE.

fdwStrikeOut: especifica una fuente tachada si se asigna TRUE.

fdwCharSet: 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 lfFaceName, hay que asegurarse de que el valor lfCharSet coincide con el conjunto de caracteres del tipo especificado en lfFaceName.

fdwOutputPrecision: 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.

fdwClipPrecision: 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 nOrientation.
CLIP_TT_ALWAYS No usado.

fdwQuality: 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.

fdwPitchAndFamily: 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 fdwPitchAndFamily 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.

lpszFace: 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 lpszFace es NULL o apunta a una cadena vacía, el GDI usa la primera fuente que coincida con el resto de los atributos especificados.

Valor de retorno

Si la función tiene éxito, el valor de retorno es un manipulador de una fuente lógica.

Si falla, el velor de retorno es NULL. Para obtener mayor información sobre el error, llamar a la función GetLastError.

Observaciones

Cuando ya no se necesite la fuente, llamar a DeleteObject para borrarla.

Como ayuda a la protección de derechos de copia del vendedor que proporciona fuentes para sistemas operativos Windows, las aplicaciones deben siempre indicar el nonbre exacto de la fuente seleccionada. Ya que las fuentes disponibles pueden variar de un sistema a otro, no se debe asumir que la fuente seleccionada es siempre la misma que la pedida. Por ejemplo, si se pide una fuente llamada "Palatino," pero no está disponible en el sistema, el transformador de fuentes puede sustituirla por itra con atributos similares pero con nombre diferente. Siempre informa sobre el nombre de la fuente seleccionada al usuario.