Tipografia no WPF

Este tópico apresenta os principais recursos tipográficos do WPF. Esses recursos incluem melhor qualidade e desempenho de renderização de texto, suporte a tipografia OpenType, texto internacional aprimorado, suporte aprimorado a fontes e novas interfaces de programação de aplicativos (APIs) de texto.

Melhor qualidade e desempenho de texto

O texto no WPF é renderizado usando o Microsoft ClearType, que melhora a clareza e a legibilidade do texto. ClearType é uma tecnologia de software desenvolvida pela Microsoft que melhora a legibilidade do texto em LCDs (Liquid Crystal Displays) existentes, como telas de laptop, telas de Pocket PC e monitores de tela plana. O ClearType usa renderização de subpixel, que permite que o texto seja exibido com maior fidelidade à sua forma verdadeira, alinhando caracteres em uma parte fracionária de um pixel. A resolução extra aumenta a nitidez dos detalhes mínimos na exibição de texto, tornando a leitura por longos períodos muito mais fácil. Outra melhoria do ClearType no WPF é a suavização de borda na direção y, que suaviza as partes superiores e inferiores das curvas superficiais em caracteres de texto. Para obter mais detalhes sobre os recursos do ClearType, consulte Visão geral do ClearType.

Text with ClearType y-direction anti-aliasing
Texto com suavização da direção y do ClearType

Todo o pipeline de renderização de texto pode ser acelerado por hardware no WPF, desde que sua máquina atenda ao nível mínimo de hardware necessário. Renderização que não pode ser executada usando hardware cai para renderização de software. A aceleração de hardware afeta todas as fases do pipeline de renderização de texto — desde o armazenamento de glifos individuais, composição de glifos em execuções de glifos, aplicação de efeitos até a aplicação do algoritmo de mistura ClearType à saída final exibida. Para obter mais informações sobre aceleração de hardware, consulte camadas de renderização de gráficos.

Diagram of the text rendering pipeline

Além disso, o texto animado, seja por caractere ou glifo, aproveita ao máximo o recurso de hardware gráfico habilitado pelo WPF. Isso resulta em animação de texto suave.

Tipografia rica

O formato de fonte OpenType é uma extensão do formato de fonte TrueType®. O formato de fonte OpenType foi desenvolvido em conjunto pela Microsoft e pela Adobe e fornece uma rica variedade de recursos tipográficos avançados. O Typography objeto expõe muitos dos recursos avançados das fontes OpenType, como alternativas estilísticas e swashes. O SDK do Windows fornece um conjunto de fontes OpenType de exemplo que são projetadas com recursos avançados, como as fontes Pericles e Pescadero. Para obter mais informações, consulte Pacote de fontes OpenType de exemplo.

A fonte Pericles OpenType contém glifos adicionais que fornecem alternativas estilísticas para o conjunto padrão de glifos. O texto a seguir exibe glifos alternativos estilísticos.

Text using OpenType stylistic alternate glyphs

Swashes são glifos decorativos que utilizam ornamentação elaborada, geralmente associada à caligrafia. O texto a seguir exibe glifos padrão e swash para a fonte Pescadero.

Text using OpenType standard and swash glyphs

Para obter mais detalhes sobre os recursos do OpenType, consulte Recursos de fonte OpenType.

Suporte a texto internacional melhorado

O WPF fornece suporte aprimorado a texto internacional, fornecendo os seguintes recursos:

  • Espaçamento automático em todos os sistemas de escrita, utilizando medida adaptativa.

  • Amplo suporte a texto internacional. Para obter mais informações, consulte globalização do WPF.

  • Quebra de linha orientada pelo idioma, hifenização e justificação.

Suporte a fonte melhorado

O WPF fornece suporte aprimorado a fontes fornecendo os seguintes recursos:

  • Unicode para todo o texto. Comportamento de fonte e a seleção não requerem charset ou codepage.

  • Comportamento de fonte independente de configurações globais, como localidade do sistema.

  • Separe FontWeight, FontStretche FontStyle tipos para definir um FontFamilyarquivo . Isso fornece maior flexibilidade do que na programação Win32, na qual combinações booleanas de itálico e negrito são usadas para definir uma família de fontes.

  • Direção de escrita (horizontal versus vertical) manipulada de forma independente do nome da fonte.

  • Vinculação de fonte e fallback de fonte em um arquivo XML portátil, usando tecnologia de fonte composta. Fontes compostas permitem a construção de fontes multilíngue de alcance completo. Fontes compostas também fornecem um mecanismo que evita exibir glifos que faltam. Para obter mais informações, consulte os FontFamily comentários na classe.

  • Fontes internacionais criadas por meio de fontes compostas, utilizando um grupo de fontes de único idioma. Isso economiza recurso ao desenvolver fontes para múltiplos idiomas.

  • Fontes compostas inseridas em um documento, fornecendo assim portabilidade ao documento. Para obter mais informações, consulte os FontFamily comentários na classe.

Novas Interfaces de programação de aplicativo texto (APIs)

O WPF fornece várias APIs de texto para os desenvolvedores usarem ao incluir texto em seus aplicativos. Essas APIs são agrupadas em três categorias:

  • Layout e interface do usuário. Os controles de texto comuns para a interface gráfica do usuário (GUI).

  • Desenho de texto leve. Permite que você desenhe texto diretamente a objetos.

  • Formatação de texto avançada. Permite que você implemente um mecanismo de texto personalizado.

Layout e interface do usuário

No nível mais alto de funcionalidade, as APIs de texto fornecem controles comuns de interface do usuário, como Label, TextBlocke TextBox. Esses controles fornecem os elementos básicos da interface do usuário em um aplicativo e oferecem uma maneira fácil de apresentar e interagir com o texto. Controles como RichTextBox e PasswordBox permitem o tratamento de texto mais avançado ou especializado. E classes como TextRange, TextSelectione TextPointer permitem a manipulação de texto útil. Esses controles de interface do usuário fornecem propriedades como FontFamily, e FontStyle, FontSizeque permitem controlar a fonte usada para renderizar o texto.

Usando efeitos de Bitmap, transformações e efeitos de texto

O WPF permite que você crie usos visualmente interessantes de texto usando recursos como efeitos de bitmap, transformações e efeitos de texto. O exemplo a seguir mostra um tipo comum de um efeito de sombra aplicado a texto.

Text shadow with Softness = 0.25

O exemplo a seguir mostra um efeito de sombra e ruído aplicado ao texto.

Text shadow with noise

O exemplo a seguir mostra um efeito de brilho externo aplicado ao texto.

Text shadow using an OuterGlowBitmapEffect

O exemplo a seguir mostra um efeito de desfoque aplicado ao texto.

Text shadow using a BlurBitmapEffect

O exemplo a seguir mostra a segunda linha de texto com escala ajustada em 150% no eixo x e a terceira linha de texto ajustada em 150% no eixo y.

Text scaled using a ScaleTransform

O exemplo a seguir mostra texto distorcido ao longo do eixo x.

Text skewed using a SkewTransform

Um TextEffect objeto é um objeto auxiliar que permite tratar o texto como um ou mais grupos de caracteres em uma cadeia de caracteres de texto. O exemplo a seguir mostra um caractere individual sendo rotacionado. Cada caractere é rotacionado de forma independente em intervalos de 1 segundo.

Screenshot of text effect rotating text

Usando os documentos de fluxo

Além dos controles comuns da interface do usuário, o WPF oferece um controle de layout para apresentação de texto — o FlowDocument elemento . O FlowDocument elemento , em conjunto com o DocumentViewer elemento , fornece um controle para grandes quantidades de texto com requisitos de layout variados. Os controles de layout fornecem acesso à tipografia avançada por meio das propriedades relacionadas a Typography objetos e fontes de outros controles da interface do usuário.

O exemplo a seguir mostra o conteúdo de texto hospedado em um FlowDocumentReader, que fornece suporte a pesquisa, navegação, paginação e dimensionamento de conteúdo.

Screenshot that shows OpenType fonts.

Para obter mais informações, consulte Documentos no WPF.

Desenho de texto leve

Você pode desenhar texto diretamente para objetos WPF usando o DrawTextDrawingContext método do objeto. Para usar esse método, crie um FormattedText objeto. Esse objeto permite que você desenhe texto de várias linhas, no qual cada caractere no texto pode ser formatado individualmente. A funcionalidade do objeto contém grande parte da funcionalidade dos sinalizadores DrawText na API do FormattedText Windows. Além disso, o objeto contém funcionalidades como suporte a reticências, em que uma reticência é exibida quando o FormattedText texto excede seus limites. O exemplo a seguir mostra o texto que tem diversos formatos aplicados a ele, incluindo um gradiente linear na segunda e terceira palavras.

Text displayed using FormattedText object

Você pode converter texto formatado em Geometry objetos, permitindo que você crie outros tipos de texto visualmente interessante. Por exemplo, você pode criar um Geometry objeto com base na estrutura de tópicos de uma cadeia de caracteres de texto.

Text outline using a linear gradient brush

Os exemplos a seguir ilustram várias maneiras de criar efeitos visuais interessantes modificando o traço, o preenchimento e o realce do texto convertido.

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

Para obter mais informações sobre o FormattedText objeto, consulte Desenhando texto formatado.

Formatação de texto avançada

No nível mais avançado das APIs de texto, o WPF oferece a capacidade de criar layout de texto personalizado usando o TextFormatter objeto e outros tipos no System.Windows.Media.TextFormatting namespace. As TextFormatter classes e associadas permitem que você implemente um layout de texto personalizado que ofereça suporte à sua própria definição de formatos de caracteres, estilos de parágrafo, regras de quebra de linha e outros recursos de layout para texto internacional. Há muito poucos casos em que você gostaria de substituir a implementação padrão do suporte de layout de texto WPF. No entanto, se você estiver criando um controle ou aplicativo de edição de texto, talvez seja necessária uma implementação diferente da implementação padrão do WPF.

Ao contrário de uma API de texto tradicional, o TextFormatter interage com um cliente de layout de texto por meio de um conjunto de métodos de retorno de chamada. Ele requer que o cliente forneça esses métodos em uma implementação da TextSource classe. O diagrama a seguir ilustra a interação de layout de texto entre o aplicativo cliente e TextFormattero .

Diagram of text layout client and TextFormatter

Para obter mais detalhes sobre como criar o layout de texto personalizado, consulte formatação de texto avançada.

Confira também