Tipografía en WPF

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

Este tema contiene las secciones siguientes.

  • Mejora de la calidad y el rendimiento del texto
  • Tipografía enriquecida
  • Compatibilidad mejorada con el texto internacional
  • Compatibilidad mejorada de fuentes
  • Nuevas interfaces de programación de aplicaciones (API) de texto
  • Temas relacionados

Mejora de la calidad y el rendimiento del texto

En WPF, se presenta el texto utilizando Microsoft ClearType, que mejora su claridad y legibilidad. ClearType es una tecnología de software desarrollada por Microsoft que mejora la legibilidad del texto en las pantallas de cristal líquido (LCD) existentes, tales como las de los equipos portátiles, los Pocket PC o los monitores de pantalla plana. ClearType utiliza una presentación con unidades menores que los píxeles, que permite mostrar la forma real del texto con mayor fidelidad y alinear los caracteres con respecto a 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 mucho su lectura durante espacios de tiempo prolongados. Otra mejora de ClearType en WPF es el suavizado de contorno en la dirección del eje y, que suaviza las partes superior e inferior de las curvas superficiales de los caracteres de texto. Para obtener más detalles sobre las características de ClearType, vea 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 completa puede acelerarse mediante hardware en el WPF, siempre que el equipo cumpla los requisitos mínimos de hardware necesarios. La representación que no se puede llevar a cabo mediante hardware se realiza mediante software. La aceleración de hardware afecta a todas las fases de la canalización de representación de texto, desde el almacenamiento de glifos individuales hasta la aplicación del algoritmo de mezcla de ClearType a la salida final mostrada, pasando por la composición de glifos en ejecuciones de glifos y la aplicación de efectos. 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

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 de gráficos del WPF. De este modo se suaviza la animación de texto.

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 completa selección de características tipográficas avanzadas. El objeto Typography expone muchas de las características avanzadas de las fuentes OpenType, tales como alternativas estilísticas y letras floreadas. Windows SDK proporciona un conjunto de fuentes OpenType de ejemplo diseñadas con características enriquecidas, tales 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 de alternativas estilísticas.

Texto que utiliza alternativas estilísticas de glifos OpenType

Texto que usa glifos alternativos de estilo OpenType

Las letras floreadas son glifos decorativos en los que se utilizan adornos detallados que suelen asociarse a la caligrafía. El texto siguiente muestra glifos normales y floreados de la fuente Pescadero.

Texto que utiliza glifos OpenType normales y floreados

Texto que usa ligaduras estándar y swash OpenType

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

Compatibilidad mejorada con el texto internacional

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

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

  • Compatibilidad general con el 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 de fuentes

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

  • Unicode para todo el texto. Ya no se requiere un juego de caracteres ni una página de códigos para regir el comportamiento y la selección de fuentes.

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

  • Tipos FontWeight, FontStretch, y FontStyle independientes para definir una clase FontFamily. De este modo se proporciona mayor flexibilidad que en la programación de Win32, donde se utilizan combinaciones booleanas de cursiva y negrita para definir una familia de fuentes.

  • El control de la dirección de escritura (horizontal o vertical) es independiente del nombre de la fuente.

  • Los vínculos y el retroceso de fuente se incluyen en un archivo XML portátil, mediante la tecnología de fuentes compuestas. Las fuentes compuestas permiten la construcción de fuentes multilingües de intervalo completo. Las fuentes compuestas también proporcionan un mecanismo que evita la presentación de glifos ausentes. Para obtener más información, vea los comentarios de 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 costos de recursos al desarrollar fuentes para varios idiomas.

  • Las fuentes compuestas se incrustan en el documento para proporcionar portabilidad de los documentos. Para obtener más información, vea los comentarios de la clase FontFamily.

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

El WPF proporciona varias APIs de texto que los programadores pueden usar al incluir texto en sus aplicaciones. Estas APIs se agrupan en tres categorías:

  • Diseño e interfaz de usuario. Controles de texto comunes de la graphical user interface (GUI).

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

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

Diseño e interfaz de usuario

En el nivel superior de funcionalidad, las APIs de texto proporcionan controles comunes de la user interface (UI), tales como Label, TextBlock y TextBox. Estos controles proporcionan los elementos básicos de la UI en una aplicación, además de constituir una manera fácil de presentar el texto e interactuar con él. Los controles como RichTextBox y PasswordBox permiten un control más avanzado o especializado del texto. Por su parte, las clases como TextRange, TextSelection y TextPointer resultan de gran utilidad para manipular el texto. Estos controles de la UI proporcionan propiedades como FontFamily, FontSize y FontStyle, que permiten controlar la fuente que se utiliza para representar el texto.

Utilizar efectos de mapa de bits, transformaciones y efectos de texto

El WPF permite crear usos visualmente interesantes de texto mediante características tales como efectos de mapa de bits, transformaciones y efectos de texto. En el ejemplo siguiente se muestra un tipo típico de efecto de sombra paralela aplicado al texto.

Texto con sombra paralela

Sombra de texto con Suavidad = 0.25

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

Texto con sombra paralela y ruido

Sombra de texto con ruido

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

Texto con efecto de resplandor exterior

Sombra de texto usando OuterGlowBitmapEffect

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

Texto con efecto de desenfoque

Sombra de texto usando BlurBitmapEffect

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

Texto al que se ha aplicado ScaleTransform

Texto con escala ajustada usando ScaleTransform

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

Texto al que se ha aplicado SkewTransform

Texto sesgado usando SkewTransform

TextEffect es un objeto auxiliar que permite tratar el texto como uno o más grupos de caracteres en una cadena de texto. En el ejemplo siguiente se muestra un carácter individual al que se aplica una rotación. Cada carácter gira de manera independiente a intervalos de 1 segundo.

Ejemplo de animación de efecto de texto giratorio

Captura de pantalla de efecto de texto girando texto

Utilizar documentos dinámicos

Además de los controles comunes de la UI, el WPF proporciona un control de diseño para la presentación de texto, el elemento FlowDocument. El elemento FlowDocument, junto con el elemento DocumentViewer, proporciona un control para grandes cantidades de texto con requisitos de diseño variables. Los controles de diseño proporcionan acceso a la tipografía avanzada por medio del objeto Typography y de las propiedades relacionadas con fuentes de otros controles de la UI.

En el ejemplo siguiente se muestra el contenido de texto hospedado en FlowDocumentReader, que admite búsquedas, navegación, paginación y ajuste de contenidos.

Texto hospedado en un objeto FlowDocumentReader

Captura de pantalla del ejemplo Using OpenType Fonts

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 utilizar este método, cree un objeto FormattedText. Este objeto permite dibujar texto de varias líneas, en el que se puede dar formato a cada carácter individualmente. La funcionalidad del objeto FormattedText contiene gran parte de la funcionalidad de los marcadores de DrawText de la API de Win32. Además, el objeto FormattedText contiene funcionalidades tales como la compatibilidad con los puntos suspensivos, que permite mostrar puntos suspensivos cuando el texto supera los límites establecidos. En el ejemplo siguiente se muestra texto al que se han aplicado varios formatos, incluido un degradado lineal en las palabras segunda y tercera.

Texto mostrado mediante el objeto FormattedText

Texto mostrado mediante un objeto FormattedText

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

Aplicación de un contorno al texto mediante un pincel de degradado lineal

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.

Ejemplo de cómo establecer el trazo y el relleno en diferentes colores

Texto con colores diferentes para relleno y trazo

Ejemplo de un pincel de imagen aplicado al trazo

Texto con pincel de imagen aplicado a trazo

Ejemplo de un pincel de imagen aplicado al trazo y al resaltado

Texto con pincel de imagen aplicado a trazo

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

Formato de texto avanzado

En el nivel más avanzado de las APIs de texto, el WPF ofrece la capacidad de crear un diseño de texto personalizado mediante 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 admite 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. Hay muy pocos casos en los que es conveniente invalidar la implementación predeterminada de la compatibilidad de diseño de texto del WPF. Sin embargo, si va a crear un control o aplicación de edición de texto, quizás necesite una implementación diferente que la predeterminada del WPF.

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

Interacción entre la aplicación y TextFormatter

Diagrama de TextFormatter y cliente de diseño de texto

Para obtener información más detallada sobre cómo crear el diseño de texto personalizado, vea Formato de texto avanzado.

Vea también

Referencia

FormattedText

TextFormatter

Conceptos

Información general sobre ClearType

Características de las fuentes OpenType

Dibujar texto con formato

Formato de texto avanzado

Optimizar el rendimiento: Texto

Otros recursos

Microsoft Typography