Partilhar via


Tipografia no WPF

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

Qualidade e desempenho aprimorados do texto

O texto no WPF é renderizado usando o Microsoft ClearType, o que aprimora a clareza e a legibilidade do texto. O ClearType é uma tecnologia de software desenvolvida pela Microsoft que melhora a legibilidade do texto em LCDs existentes (Liquid Crystal Displays), como telas de laptop, telas do Pocket PC e monitores de painel plano. O ClearType usa a renderização de sub pixel 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 pequenos detalhes na exibição de texto, tornando muito mais fácil ler por longas durações. Outro aprimoramento de ClearType no WPF é a suavização na direção y, que ajusta a parte superior e inferior de curvas rasas em caracteres de texto. Para obter mais detalhes sobre os recursos do ClearType, consulte Visão geral do ClearType.

Texto com suavização na direção y do ClearType
Texto com suavização da direção y do ClearType

Todo o fluxo de renderização de texto pode ser acelerado por hardware no WPF, desde que seu computador atenda aos requisitos mínimos de hardware. A renderização que não pode ser executada usando hardware volta à 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, a composição de glifos em sequências de glifos, a aplicação de efeitos, até a aplicação do algoritmo de mesclagem ClearType ao resultado final exibido. Para obter mais informações sobre aceleração de hardware, consulte camadas de renderização de gráficos.

Diagrama do fluxo de trabalho de renderização de texto

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

Tipografia avançada

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 variedade avançada de recursos tipográficos avançados. O objeto Typography expõe muitos dos recursos avançados de fontes OpenType, como alternativas estilísticas e lavagens. 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 exemplo de pacote de fontes OpenType.

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.

Texto usando glifos alternativos estilísticos OpenType

Caracteres ornamentados são glifos decorativos que utilizam ornamentação elaborada, geralmente associada à caligrafia. O texto a seguir exibe glifos padrão e de caractere ornamentado para a fonte Pescadero.

Texto usando glifos padrão e de caractere ornamentado OpenType

Para obter mais detalhes sobre as funcionalidades de fonte OpenType, consulte .

Suporte avançado a texto internacional

O WPF fornece suporte avançado a texto internacional fornecendo os seguintes recursos:

  • Espaçamento automático de linha em todos os sistemas de escrita, usando medida adaptável.

  • Amplo suporte para 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 fontes aprimoradas

O WPF fornece suporte aprimorado à fonte fornecendo os seguintes recursos:

  • Unicode para todo o texto. O comportamento e a seleção da fonte não exigem mais charset ou página de código.

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

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

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

  • Vinculação de fonte e substituição de fonte em um arquivo XML portátil, usando a tecnologia de fonte composta. Fontes compostas permitem a construção de fontes multilíngues de amplo espectro. Fontes compostas também fornecem um mecanismo que evita exibir glifos ausentes. Para obter mais informações, consulte as observações na classe FontFamily.

  • Fontes internacionais criadas a partir de fontes compostas, usando um grupo de fontes de idioma único. Isso economiza nos custos de recursos ao desenvolver fontes para vários idiomas.

  • Fontes compostas inseridas em um documento, fornecendo portabilidade do documento. Para obter mais informações, consulte as observações na classe FontFamily.

NOVAS APIs (Interfaces de Programação de Aplicativo de Texto)

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 GUI (interface gráfica do usuário).

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

  • Formatação de Texto Avançado. Permite implementar um mecanismo de texto personalizado.

Layout e interface do usuário

No mais alto nível 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 habilitam o tratamento de texto mais avançado ou especializado. E classes como TextRange, TextSelectione TextPointer habilitam a manipulação de texto útil. Esses controles de interface do usuário fornecem propriedades como FontFamily, FontSizee FontStyle, que 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 típico de um efeito de sombra suspensa aplicado ao texto.

sombra de texto Sombra de texto com Suavidade = 0,25

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

sombra de texto com ruído

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

Sombras de texto usando o efeito OuterGlowBitmapEffect

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

Sombra de texto com BlurBitmapEffect

O exemplo a seguir mostra a segunda linha de texto dimensionada em 150% ao longo do eixo x e a terceira linha de texto dimensionada em 150% ao longo do eixo y.

Texto escalado usando um ScaleTransform

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

Texto distorcido usando um SkewTransform SkewTransform

Um objeto TextEffect é 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 é girado independentemente em intervalos de 1 segundo.

Captura de tela do efeito de texto rotativo

Usando os documentos de fluxo

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

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

captura de tela que mostra fontes OpenType.

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

Desenho de texto leve

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

Texto exibido usando o objeto FormattedText

Você pode converter texto formatado em objetos Geometry, permitindo que você crie outros tipos de texto visualmente interessante. Por exemplo, você pode criar um objeto Geometry com base no contorno de uma cadeia de texto.

estrutura de texto Contorno do texto usando um pincel de gradiente linear

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.

Texto com cores diferentes para preenchimento e traço

Texto com pincel de imagem aplicado ao traço

Texto com pincel de imagem aplicado ao traço e ao realce

Para obter mais informações sobre o objeto FormattedText, veja Desenho de Texto Formatado.

Formatação avançada de texto

No nível mais avançado das APIs de texto, o WPF oferece a capacidade de criar layout de texto personalizado usando o objeto TextFormatter e outros tipos no namespace System.Windows.Media.TextFormatting. As classes TextFormatter e associadas permitem implementar o layout de texto personalizado que dá suporte à sua própria definição de formatos de caractere, estilos de parágrafo, regras de quebra de linha e outros recursos de layout para texto internacional. Há pouquíssimos casos em que você deseja substituir a implementação padrão do suporte ao layout de texto do WPF. No entanto, se você estiver criando um controle de edição de texto ou aplicativo, poderá exigir 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 funções de retorno. Ele requer que o cliente forneça esses métodos em uma implementação da classe TextSource. O diagrama a seguir ilustra a interação de layout de texto entre o aplicativo cliente e o TextFormatter.

Diagrama de cliente de layout de texto e TextFormatter TextFormatter

Para mais detalhes sobre a criação de um layout de texto personalizado, consulte Formatação Avançada de Texto.

Consulte também