Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

Tipografía en WPF

 

Publicado: junio de 2016

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.

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 función de suavizado de contorno de ClearType en la dirección del eje y

Texto con 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.

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 usa glifos alternativos de estilo OpenType

Texto que utiliza alternativas estilísticas de glifos 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 usa glifos OpenType estándar y floreados

Texto que utiliza glifos OpenType normales y floreados

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

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.

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 compilan 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.

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

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

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

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

En el nivel superior de funcionalidad, las API de texto proporcionan controles comunes de la interfaz de usuario (UI), tales como Label, TextBlock y TextBox. Estos controles proporcionan los elementos básicos de la IU 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 IU proporcionan propiedades como FontFamily, FontSize y FontStyle, que permiten controlar la fuente que se utiliza para representar el texto.

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

Sombra de texto con Suavidad = 0.25

Texto con sombra paralela

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

Sombra de texto con ruido

Texto con sombra paralela y ruido

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

Sombra de texto usando OuterGlowBitmapEffect

Texto con efecto de resplandor exterior

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

Sombra de texto usando BlurBitmapEffect

Texto con efecto de desenfoque

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 con escala ajustada usando ScaleTransform

Texto al que se ha aplicado ScaleTransform

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

Texto sesgado usando SkewTransform

Texto al que se ha aplicado 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.

Captura de pantalla de efecto de texto girando texto

Ejemplo de animación de efecto de texto giratorio

Además de los controles comunes de la IU, 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 IU.

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.

Captura de pantalla del ejemplo Using OpenType Fonts

Texto hospedado en un objeto FlowDocumentReader

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

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 un objeto FormattedText

Texto mostrado mediante el 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.

Esquema de texto que usa un pincel de degradado lineal

Aplicación de un contorno al texto mediante 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

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

Texto con pincel de imagen aplicado a 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

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

En el nivel más avanzado de las API 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 la 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.

Diagrama de TextFormatter y cliente de diseño de texto

Interacción entre la aplicación y TextFormatter

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

Mostrar: