Compartir a través de


Función EnumFontFamiliesExW (wingdi.h)

La función EnumFontFamiliesEx enumera todas las fuentes con nombre único del sistema que coinciden con las características de fuente especificadas por la estructura LOGFONT . EnumFontFamiliesEx enumera las fuentes basadas en el nombre del tipo de letra, el juego de caracteres o ambos.

Sintaxis

int EnumFontFamiliesExW(
  [in] HDC           hdc,
  [in] LPLOGFONTW    lpLogfont,
  [in] FONTENUMPROCW lpProc,
  [in] LPARAM        lParam,
       DWORD         dwFlags
);

Parámetros

[in] hdc

Identificador del contexto del dispositivo desde el que se van a enumerar las fuentes.

[in] lpLogfont

Puntero a una estructura LOGFONT que contiene información sobre las fuentes que se van a enumerar. La función examina los siguientes miembros.

Miembro Descripción
lfCharSet Si se establece en DEFAULT_CHARSET, la función enumera todas las fuentes con nombre único en todos los juegos de caracteres. (Si hay dos fuentes con el mismo nombre, solo se enumera una). Si se establece en un valor de juego de caracteres válido, la función enumera solo las fuentes del juego de caracteres especificado.
lfFaceName Si se establece en una cadena vacía, la función enumera una fuente en cada nombre de tipo de letra disponible. Si se establece en un nombre de tipo de letra válido, la función enumera todas las fuentes con el nombre especificado.
lfPitchAndFamily Debe establecerse en cero para todas las versiones de idioma del sistema operativo.

[in] lpProc

Puntero a la función de devolución de llamada definida por la aplicación. Para obtener más información, vea la función EnumFontFamExProc .

[in] lParam

Valor definido por la aplicación. La función pasa este valor a la función de devolución de llamada junto con la información de fuente.

dwFlags

Este parámetro no se usa y debe ser cero.

Valor devuelto

El valor devuelto es el último valor devuelto por la función de devolución de llamada. Este valor depende de las familias de fuentes disponibles para el dispositivo especificado.

Comentarios

La función EnumFontFamiliesEx no usa nombres de tipo de letra etiquetados para identificar conjuntos de caracteres. En su lugar, siempre pasa el nombre del tipo de letra correcto y un valor de juego de caracteres independiente a la función de devolución de llamada. La función enumera las fuentes basadas en los valores de los miembros lfCharSet y lfFaceName en la estructura LOGFONT .

Al igual que con EnumFontFamilies, EnumFontFamiliesEx enumera todos los estilos de fuente. No todos los estilos de una fuente cubren los mismos juegos de caracteres. Por ejemplo, Fontorama Bold podría contener caracteres ANSI, griegos y cirílicos, pero Fontorama Italic podría contener solo caracteres ANSI. Por este motivo, es mejor no suponer que una fuente especificada cubre un juego de caracteres específico, incluso si es el juego de caracteres ANSI. En la tabla siguiente se muestran los resultados de varias combinaciones de valores para lfCharSet y lfFaceName.

Valores Significado
lfCharSet = DEFAULT_CHARSET

lfFaceName = '\0'

Enumera todas las fuentes con nombre único dentro de todos los juegos de caracteres. Si hay dos fuentes con el mismo nombre, solo se enumera una.
lfCharSet = DEFAULT_CHARSET

lfFaceName = una fuente específica

Enumera todos los juegos de caracteres y estilos en una fuente específica.
lfCharSet =un juego de caracteres específico

lfFaceName = '\0'

Enumera todos los estilos de todas las fuentes del juego de caracteres específico.
lfCharSet =un juego de caracteres específico

lfFaceName = una fuente específica

Enumera todos los estilos de una fuente en un juego de caracteres específico.
 

En el ejemplo de código siguiente se muestra cómo se usan estos valores.


// To enumerate all styles and charsets of all fonts: 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;
HRESULT hr;

// To enumerate all styles and character sets of the Arial font: 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = DEFAULT_CHARSET;


// To enumerate all styles of all fonts for the ANSI character set 
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;

// To enumerate all styles of Arial font that cover the ANSI charset 
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler 
}

lf.lfCharSet = ANSI_CHARSET;

Las funciones de devolución de llamada para EnumFontFamilies y EnumFontFamiliesEx son muy similares. La principal diferencia es que la estructura ENUMLOGFONTEX incluye un campo de script.

Tenga en cuenta que, en función de los valores de lfCharSet y lfFaceName, EnumFontFamiliesEx enumerará la misma fuente tantas veces como hay distintos juegos de caracteres en la fuente. Esto puede crear una amplia lista de fuentes que pueden ser pesadas para un usuario. Por ejemplo, la fuente Century Schoolbook puede aparecer para los juegos de caracteres bálticos, occidentales, griegos, turcos y cirílicos. Para evitar esto, una aplicación debe filtrar la lista de fuentes.

Las fuentes de muchos idiomas asiáticos orientales tienen dos nombres de letra: un nombre de inglés y un nombre localizado. EnumFonts, EnumFontFamilies y EnumFontFamiliesEx devuelven el nombre del tipo de letra en inglés si la configuración regional del sistema no coincide con el idioma de la fuente.

Cuando el modo gráfico del contexto del dispositivo se establece en GM_ADVANCED mediante la función SetGraphicsMode y la marca DEVICE_FONTTYPE se pasa al parámetro FontType, esta función devuelve una lista de fuentes de tipo 1 y OpenType en el sistema. Cuando el modo gráfico no está establecido en GM_ADVANCED, esta función devuelve una lista de fuentes de tipo 1, OpenType y TrueType en el sistema.

Nota:

El encabezado wingdi.h define EnumFontFamiliesEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutro de codificación con código que no es neutral de codificación puede provocar discrepancias que dan lugar a errores de compilación o en tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado wingdi.h (incluye Windows.h)
Library Gdi32.lib
Archivo DLL Gdi32.dll

Consulte también

EnumFontFamExProc

EnumFontFamilies

EnumFonts

Funciones de fuente y texto

Información general sobre fuentes y texto

LOGFONT