Compartir a través de


Creación y selección de fuentes

El fuente cuadro de diálogo común simplifica el proceso de creación y selección de fuentes. Al inicializar la estructura CHOOSEFONT y llamar a la función CHOOSEFONT, una aplicación puede admitir la misma interfaz de selección de fuentes que anteriormente requería muchas líneas de código personalizado. (Para obtener más información sobre el cuadro de diálogo común fuente de, vea biblioteca de cuadros de diálogo comunes).

Selección por parte del usuario

La mayoría de las operaciones de creación y selección de fuentes implican al usuario. Por ejemplo, las aplicaciones de procesamiento de texto permiten al usuario seleccionar fuentes únicas para encabezados, notas al pie y texto del cuerpo. Una vez que el usuario selecciona una fuente mediante el cuadro de diálogo fuente de y presiona el botón Aceptar , la función CHOOSEFONT inicializa los miembros de una estructura LOGFONT con los atributos de la fuente solicitada. Para usar esta fuente para las operaciones de salida de texto, una aplicación primero debe crear una fuente lógica y, a continuación, seleccionar esa fuente en su contexto de dispositivo. Un fuente lógica es una descripción proporcionada por la aplicación de una fuente ideal. Un desarrollador puede crear una fuente lógica llamando a laCreateFont deo a las funcionescreateFontIndirect de. En este caso, la aplicación llamaría a CreateFontIndirect y proporcionaría un puntero a la estructuraLOGFONTinicializada por CHOOSEFONT. En general, es más eficaz llamar a CreateFontIndirect, ya que CreateFont requiere varios parámetros, mientras que CreateFontIndirect requiere solo un puntero para LOGFONT.

Antes de que una aplicación pueda empezar a dibujar texto con una fuente lógica, debe encontrar la coincidencia más cercana de las fuentes almacenadas internamente en el dispositivo y las fuentes cuyos recursos se han cargado en el sistema operativo. Las fuentes almacenadas en el dispositivo o en el sistema operativo se denominan fuentes físicas. El proceso de búsqueda de la fuente física que coincide más estrechamente con una fuente lógica especificada se denomina asignación de fuentes. Este proceso se produce cuando una aplicación llama a la función SelectObject y proporciona un identificador que identifica una fuente lógica. La asignación de fuentes se realiza mediante un algoritmo interno que compara los atributos de la fuente lógica solicitada con los atributos de las fuentes físicas disponibles. Cuando el algoritmo del asignador de fuentes completa su búsqueda y determina la coincidencia más cercana posible, la función SelectObject devuelve y la aplicación puede empezar a dibujar texto con la nueva fuente.

La función SetMapperFlags especifica si el algoritmo del asignador de fuentes solo busca fuentes físicas con relaciones de aspecto que coincidan con el dispositivo físico. La relación de aspecto de un dispositivo es la relación formada por el ancho y el alto de un píxel en ese dispositivo.

La fuente del sistema (también conocida como shell o fuente predeterminada) es la fuente utilizada para el texto en las barras de título, los menús y los cuadros de diálogo.

Consideraciones especiales sobre la selección de fuentes

Aunque la mayoría de las operaciones de selección de fuentes implican al usuario, hay algunas instancias en las que esto no es cierto. Por ejemplo, un desarrollador puede querer usar una fuente única en una aplicación para dibujar texto en una ventana de control. Para seleccionar una fuente adecuada, la aplicación debe poder determinar qué fuentes están disponibles, crear una fuente lógica que describa una de estas fuentes disponibles y, a continuación, seleccionar esa fuente en el contexto de dispositivo adecuado.

Una aplicación puede enumerar las fuentes disponibles mediante las funciones EnumFonts o EnumFontFamilies. se recomienda EnumFontFamilies porque enumera todos los estilos asociados a un nombre de familia. Esto puede ser útil para fuentes con muchos o estilos inusuales y para fuentes que cruzan fronteras internacionales.

Una vez que una aplicación ha enumerado las fuentes disponibles y ha localizado una coincidencia adecuada, debe usar los valores devueltos por la función de enumeración de fuentes para inicializar los miembros de una estructura de LOGFONT. A continuación, puede llamar a la función CreateFontIndirect y pasarle un puntero a la estructura deLOGFONT inicializada. Si la funcióncreateFontIndirectse realiza correctamente, la aplicación puede seleccionar la fuente lógica llamando a la función SelectObject. Al inicializar los miembros de la estructura LOGFONT, asegúrese de especificar un juego de caracteres específico en el miembro lfCharSet de. Este miembro es importante en el proceso de asignación de fuentes y los resultados serán incoherentes si este miembro no se inicializa correctamente. Si especifica un nombre de tipo en el miembro lfFaceName de la estructura LOGFONT de, asegúrese de que el lfCharSet valor coincide con el juego de caracteres del tipo de letra especificado en lfFaceName. Por ejemplo, si desea seleccionar una fuente como MS Mincho, lfCharSet debe establecerse en el valor predefinido SHIFTJIS_CHARSET.

Las fuentes de muchos idiomas asiáticos orientales tienen dos nombres de tipo: un nombre en inglés y un nombre localizado. CreateFont, CreateFontIndirecty CreateFontIndirectEx tomar el nombre de tipo de letra localizado para una configuración regional del sistema que coincida con el idioma, pero toman el nombre de tipo inglés para todas las demás configuraciones regionales del sistema. El mejor método es probar un nombre y, en caso de error, probar el otro. Tenga en cuenta que EnumFonts, EnumFontFamiliesy EnumFontFamiliesEx devuelven el nombre del tipo de letra inglés si la configuración regional del sistema no coincide con el idioma de la fuente. A partir de Windows 2000, esto ya no es un problema porque el asignador de fuentes para CreateFont, CreateFontIndirecty CreateFontIndirectEx reconoce cualquier nombre de tipo de letra, independientemente de la configuración regional.