Tipografía en WPF

En este tema se presentan las características tipográficas principales de WPF. Estas características incluyen la mejora de la calidad y el rendimiento de la representación de texto, la compatibilidad con tipografía OpenType, el texto internacional mejorado, la compatibilidad mejorada con fuentes y nuevas interfaces de programación de aplicaciones (API) de texto.

Mejora de la calidad y el rendimiento del texto

El texto en WPF se representa mediante Microsoft ClearType, que mejora la claridad y la legibilidad del texto. ClearType es una tecnología de software desarrollada por Microsoft que mejora la legibilidad del texto en pantallas de cristal líquido (LCD) existentes, como las de portátiles, Pocket PC y monitores de pantalla plana. ClearType usa la representación de subpíxeles, lo que permite mostrar el texto de una manera más fiel a su forma real, ya que alinea los caracteres en una parte fraccionaria de un píxel. Esta resolución adicional aumenta la nitidez de los detalles diminutos en la presentación del texto, lo que facilita la lectura durante largos períodos de tiempo. Otra mejora de ClearType en WPF es el suavizado de contorno en la dirección del eje Y, que suaviza la parte superior e inferior de las curvas de los caracteres de texto. Para obtener más detalles sobre las características de ClearType, consulte Información general sobre ClearType.

Texto con suavizado de contorno de ClearType en la dirección del eje y
Texto con función de suavizado de contorno de ClearType en la dirección del eje Y

La canalización de representación de texto completo se puede acelerar mediante hardware en WPF, siempre y cuando la máquina cumpla los requisitos mínimos de hardware. Si una representación no se puede realizar mediante hardware, se recurre a la representación mediante software. La aceleración de hardware afecta a todas las fases de la canalización de representación de texto: almacenamiento de glifos individuales, composición de glifos en secuencias de glifos, aplicación de efectos y aplicación del algoritmo de combinación de ClearType al resultado final mostrada. Para obtener más información sobre la aceleración de hardware, vea Niveles de representación de gráficos.

Diagrama de la canalización de representación de texto

Además, el texto animado, ya sea mediante caracteres o glifos, aprovecha al máximo la capacidad de hardware gráfico habilitada por WPF. Como resultado, la animación de texto se suaviza.

Tipografía enriquecida

El formato de fuente OpenType es una extensión del formato de fuente TrueType®. Microsoft y Adobe desarrollaron conjuntamente el formato de fuente OpenType, que proporciona una gran variedad de características tipográficas avanzadas. El objeto Typography expone muchas de las características avanzadas de las fuentes OpenType, como alternativas de estilo y caracteres floreados. Windows SDK proporciona un conjunto de fuentes OpenType de ejemplo que están diseñadas con características enriquecidas, como las fuentes Pericles y Pescadero. Para obtener más información, vea Paquete de fuentes OpenType de ejemplo.

La fuente OpenType Pericles contiene glifos adicionales que proporcionan alternativas estilísticas al conjunto estándar de glifos. En el texto siguiente se muestran glifos alternativos de estilo.

Texto con glifos estilísticos alternativos OpenType

Los caracteres floreados son glifos decorativos que usan adornos elaborados que suelen asociarse a la caligrafía. En el texto siguiente se muestran glifos estándar y de caracteres floreados de la fuente Pescadero.

Texto con glifos OpenType estándar y floreados

Para obtener más detalles sobre las características de OpenType, consulte Características de las fuentes OpenType.

Compatibilidad mejorada con texto internacional

WPF proporciona compatibilidad mejorada con texto internacional mediante las características siguientes:

  • Interlineado automático en todos los sistemas de escritura mediante la medición adaptable.

  • Amplia compatibilidad con texto internacional. Para obtener más información, vea Globalización de WPF.

  • Saltos de línea, guiones y justificación basados en el idioma.

Compatibilidad mejorada con fuentes

WPF proporciona compatibilidad con fuentes mejorada mediante las características siguientes:

  • Se usa Unicode para todo el texto. El comportamiento y la selección de la fuente ya no requieren un conjunto de caracteres o página de códigos.

  • El comportamiento de la fuente es independiente de la configuración global, como la configuración regional del sistema.

  • Separe los tipos FontWeight, FontStretch y FontStyle para definir una FontFamily. Esto proporciona mayor flexibilidad que en la programación de Win32, en la que se usan combinaciones booleanas de negrita y cursiva para definir una familia de fuentes.

  • La dirección de escritura (horizontal o vertical) se controla con independencia del nombre de la fuente.

  • La vinculación de fuentes y la reserva de fuentes se incluye en un archivo XML portátil mediante la tecnología de fuentes compuestas. Las fuentes compuestas permiten la construcción de fuentes multilingües completas. Las fuentes compuestas también proporcionan un mecanismo que impide la presentación de los glifos que faltan. Para obtener más información, vea los comentarios en la clase FontFamily.

  • Las fuentes internacionales se generan a partir de fuentes compuestas mediante un grupo de fuentes de un solo idioma. De este modo se ahorran recursos a la hora de desarrollar fuentes para varios idiomas.

  • Las fuentes compuestas se insertan en un documento, lo que permite la portabilidad de los documentos. Para obtener más información, vea los comentarios en la clase FontFamily.

Nuevas interfaces de programación de aplicaciones (API) de texto

WPF proporciona varias API de texto para que las usen los desarrolladores al incluir texto en sus aplicaciones. Estas API se agrupan en tres categorías:

  • Diseño e interfaz de usuario. Los controles de texto comunes para la interfaz gráfica de usuario (GUI).

  • Dibujo de texto ligero. Permite dibujar texto directamente en objetos.

  • Formato de texto avanzado. Permite implementar un motor de texto personalizado.

Diseño e interfaz de usuario

En el nivel más alto de funcionalidad, las API de texto proporcionan controles comunes de interfaz de usuario como Label, TextBlock, y TextBox. Estos controles proporcionan los elementos básicos de la interfaz de usuario dentro de una aplicación y ofrecen una manera fácil de presentar e interactuar con texto. Los controles como RichTextBox y PasswordBox habilitan un control del texto más avanzado o especializado. Y clases como TextRange, TextSelection y TextPointer permiten la manipulación de texto útil. Estos controles de UI proporcionan propiedades como FontFamily, FontSize y FontStyle, que le permiten controlar la fuente utilizada para representar el texto.

Uso de efectos de imagen, transformaciones y efectos de texto

WPF permite crear usar el texto de forma visualmente interesante mediante características como efectos de imagen, transformaciones y efectos de texto. En el ejemplo siguiente se muestra un efecto típico de sombra paralela aplicado al texto.

Sombra de texto con Suavidad = 0.25

En el ejemplo siguiente se muestra un efecto de sombra paralela y ruido aplicado al texto.

Sombra de texto con ruido

En el ejemplo siguiente se muestra un efecto de iluminado exterior aplicado al texto.

Sombra de texto usando OuterGlowBitmapEffect

En el ejemplo siguiente se muestra un efecto de desenfoque aplicado al texto.

Sombra de texto usando BlurBitmapEffect

En el ejemplo siguiente se muestra la segunda línea de texto escalada al 150 % a lo largo del eje X y la tercera línea de texto escalada al 150 % a lo largo del eje Y.

Texto con escala ajustada usando ScaleTransform

En el ejemplo siguiente se muestra el texto sesgado a lo largo del eje X.

Texto sesgado usando SkewTransform

Un objeto TextEffect es un objeto del asistente que permite tratar el texto como uno o más grupos de caracteres de una cadena de texto. En el ejemplo siguiente se muestra un carácter individual girado. Cada carácter se gira de manera independiente a intervalos de 1 segundo.

Captura de pantalla de efecto de texto girando texto

Uso de documentos dinámicos

Además de los controles comunes de la interfaz de usuario, WPF ofrece un control de diseño para la presentación de texto, el elementoFlowDocument. El elementoFlowDocument, junto con el elementoDocumentViewer, proporciona un control para grandes cantidades de texto con distintos requisitos de diseño. Los controles de diseño proporcionan acceso a la tipografía avanzada a través del objetoTypography y las propiedades relacionadas con fuentes de otros controles de interfaz de usuario.

En el ejemplo siguiente se muestra el contenido de texto hospedado en un FlowDocumentReader, que proporciona compatibilidad con búsqueda, navegación, paginación y escalado de contenido.

Captura de pantalla que muestra fuentes OpenType.

Para obtener más información, vea Documentos en WPF.

Dibujo de texto ligero

Puede dibujar texto directamente en objetos de WPF mediante el método DrawText del objeto DrawingContext. Para usar este método, debe crear un objeto FormattedText. Este objeto permite dibujar texto de varias líneas, en el que se puede dar formato individual a cada carácter del texto. La funcionalidad del objeto FormattedText contiene gran parte de la funcionalidad de las marcas DrawText de la API de Windows. Además, el objeto FormattedText contiene funcionalidades como la compatibilidad con puntos suspensivos, mediante la cual se muestra un botón de puntos suspensivos cuando el texto supera los límites establecidos. En el ejemplo siguiente se muestra texto al que se han aplicado varios formatos diferentes, incluido un degradado lineal en la segunda y tercera palabra.

Texto mostrado mediante un objeto FormattedText

Puede convertir texto con formato a objetos Geometry, lo que le permite crear otros tipos de texto visualmente interesantes. Por ejemplo, puede crear un objeto Geometry basado en el contorno de una cadena de texto.

Esquema de texto que usa un pincel de degradado lineal

En los ejemplos siguientes se muestran varias maneras de crear efectos visuales interesantes modificando el trazo, el relleno y el resaltado del texto convertido.

Texto con colores diferentes para relleno y trazo

Texto con pincel de imagen aplicado a trazo

Texto con pincel de imagen aplicado a trazo y resaltado

Para obtener más información sobre el objeto FormattedText, consulte Dibujar texto con formato.

Formato de texto avanzado

Al nivel más avanzado de las API de texto, WPF le ofrece la capacidad de crear diseños de texto personalizado para usar el objeto TextFormatter y otros tipos en el espacio de nombres System.Windows.Media.TextFormatting. El objeto TextFormatter y las clases asociadas permiten implementar un diseño de texto personalizado que admita su propia definición de formatos de caracteres, estilos de párrafo, reglas de salto de línea y otras características de diseño para el texto internacional. Se darán muy pocos casos en los que le interese reemplazar la implementación predeterminada de la compatibilidad con el diseño de texto de WPF. Sin embargo, si está creando un aplicación o un control de edición de texto, es posible que necesite una implementación diferente de la implementación de WPF predeterminada.

A diferencia de una API de texto tradicional, el TextFormatter interactúa con un cliente de diseño de texto a través de un conjunto de métodos de devolución de llamadas. Requiere que el cliente proporcione estos métodos en una implementación de la clase TextSource. En el diagrama siguiente se muestra la interacción del diseño de texto entre la aplicación cliente y el objeto TextFormatter.

Diagrama de TextFormatter y cliente de diseño de texto

Para obtener más información sobre la creación de un diseño de texto personalizado, vea Formato de texto avanzado.

Vea también