Partilhar via


Recursos de fonte OpenType

Este tópico fornece uma visão geral de alguns dos principais recursos da tecnologia de fonte OpenType no Windows Presentation Foundation (WPF).

Formato de fonte OpenType

O formato de fonte OpenType é uma extensão do formato de fonte TrueType®, adicionando suporte para dados de fonte PostScript. O formato de fonte OpenType foi desenvolvido em conjunto pela Microsoft e Adobe Corporation. As fontes OpenType e os serviços do sistema operacional que suportam fontes OpenType fornecem aos usuários uma maneira simples de instalar e usar fontes, quer as fontes contenham contornos TrueType ou contornos CFF (PostScript).

O formato de fonte OpenType aborda os seguintes desafios do desenvolvedor:

  • Suporte multiplataforma mais amplo.

  • Melhor suporte para conjuntos de caracteres internacionais.

  • Melhor proteção dos dados dos tipos de letra.

  • Tamanhos de arquivo menores para tornar a distribuição de fontes mais eficiente.

  • Suporte mais amplo para controle tipográfico avançado.

Observação

O SDK do Windows contém um conjunto de fontes OpenType de exemplo que você pode usar com aplicativos do Windows Presentation Foundation (WPF). Essas fontes fornecem a maioria dos recursos ilustrados no restante deste tópico. Para obter mais informações, consulte Sample OpenType Font Pack.

Para obter detalhes do formato de fonte OpenType, consulte a especificação OpenType.

Extensões tipográficas avançadas

As tabelas tipográficas avançadas (tabelas OpenType Layout) estendem a funcionalidade de fontes com contornos TrueType ou CFF. As fontes OpenType Layout contêm informações adicionais que ampliam os recursos das fontes para suportar tipografia internacional de alta qualidade. A maioria das fontes OpenType expõe apenas um subconjunto do total de recursos OpenType disponíveis. As fontes OpenType fornecem os seguintes recursos.

  • Mapeamento avançado entre caracteres e glifos que suportam ligaduras, formas posicionais, alternativas e outras substituições de fontes.

  • Suporte para posicionamento bidimensional e fixação de glifos.

  • Informações explícitas de script e linguagem contidas na fonte, para que um aplicativo de processamento de texto possa ajustar seu comportamento de acordo.

As tabelas OpenType Layout são descritas com mais detalhes na seção "Font File Tables" da especificação OpenType.

O restante desta visão geral apresenta a amplitude e a flexibilidade de alguns dos recursos OpenType visualmente interessantes que são expostos pelas propriedades do Typography objeto. Para obter mais informações sobre esse objeto, consulte Typography Class.

Variantes

As variantes são usadas para renderizar diferentes estilos tipográficos, como sobrescritos e subscritos.

Sobrescritos e Subscritos

A Variants propriedade permite que você defina valores sobrescritos e subscritos para uma fonte OpenType.

O texto seguinte apresenta sobrescritos para a fonte Palatino Linotype.

Texto usando sobrescritos OpenType

O exemplo de marcação a seguir mostra como definir sobrescritos para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<Paragraph FontFamily="Palatino Linotype">
  2<Run Typography.Variants="Superscript">3</Run>
  14<Run Typography.Variants="Superscript">th</Run>
</Paragraph>

O texto a seguir exibe subscritos para a fonte Palatino Linotype.

Texto usando subscritos do OpenType

O exemplo de marcação a seguir mostra como definir subscritos para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<Paragraph FontFamily="Palatino Linotype">
  H<Run Typography.Variants="Subscript">2</Run>O
  Footnote<Run Typography.Variants="Subscript">4</Run>
</Paragraph>

Uso decorativo de sobrescritos e subscritos

Você também pode usar sobrescritos e subscritos para criar efeitos decorativos de texto misto de maiúsculas e minúsculas. O texto a seguir exibe texto sobrescrito e subscrito para a fonte Palatino Linotype. Note-se que as capitais não são afetadas.

Texto que usa sobrescritos e subscritos OpenType

O exemplo de marcação a seguir mostra como definir sobrescritos e subscritos para uma fonte, utilizando as propriedades do objeto Typography.

<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Superscript">
  Chapter One
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Subscript">
  Chapter One
</Paragraph>

Capitais

As maiúsculas são um conjunto de formas tipográficas que representam texto em glifos em maiúsculas. Normalmente, quando o texto é renderizado em todas as maiúsculas, o espaçamento entre as letras pode parecer muito apertado e o peso e a proporção das letras muito pesado. OpenType suporta uma série de formatos de estilo para maiúsculas, incluindo pequenas maiúsculas, maiúsculas pequenas, titulação e espaçamento entre maiúsculas. Estes formatos de estilo permitem-lhe controlar a aparência das maiúsculas.

O texto a seguir exibe letras maiúsculas padrão para a fonte Pescadero, seguidas pelas letras estilizadas como "SmallCaps" e "AllSmallCaps". Neste caso, o mesmo tamanho de fonte é usado para todas as três palavras.

Texto usando maiúsculas OpenType

O exemplo de marcação a seguir mostra como definir maiúsculas para a fonte Pescadero, usando propriedades do Typography objeto. Quando o formato "SmallCaps" é usado, qualquer letra maiúscula inicial é ignorada.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

Titulação de Capitais

Os capitéis de titulação são mais leves em peso e proporção e projetados para dar uma aparência mais elegante do que os capitéis normais. Os títulos em maiúsculas são normalmente utilizados como cabeçalhos em caracteres maiores. O texto a seguir exibe maiúsculas normais e maiúsculas de título para a fonte Pescadero. Observe as larguras de haste mais estreitas do texto na segunda linha.

Texto usando maiúsculas de título OpenType

O exemplo de marcação a seguir mostra como definir maiúsculas de titulação para a fonte Pescadero, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pescadero">
  <Run Typography.Capitals="Titling">chapter one</Run>
</Paragraph>

Espaçamento de Capital

O espaçamento entre maiúsculas é um recurso que permite fornecer mais espaçamento ao usar todas as letras maiúsculas no texto. As letras maiúsculas são normalmente concebidas para se misturarem com letras minúsculas. O espaçamento que parece atraente entre uma letra maiúscula e uma letra minúscula pode parecer muito apertado quando todas as letras maiúsculas são usadas. O texto a seguir exibe o espaçamento normal e maiúsculo para a fonte Pescadero.

Texto usando espaçamento entre maiúsculas OpenType

O exemplo de marcação a seguir mostra como definir o espaçamento entre maiúsculas para a fonte Pescadero, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pescadero">
  <Run Typography.CapitalSpacing="True">CHAPTER ONE</Run>
</Paragraph>

Ligaduras

Ligaduras são dois ou mais glifos que são formados em um único glifo, a fim de criar um texto mais legível ou atraente. As fontes OpenType suportam quatro tipos de ligaduras:

  • Ligaduras padrão. Concebido para melhorar a legibilidade. As ligaduras padrão incluem "fi", "fl" e "ff".

  • Ligaduras contextuais. Projetado para melhorar a legibilidade, proporcionando um melhor comportamento de união entre os caracteres que compõem a ligadura.

  • Ligaduras discricionárias. Projetado para ser ornamental, e não especificamente projetado para legibilidade.

  • Ligaduras históricas. Projetado para ser histórico, e não especificamente projetado para legibilidade.

O texto a seguir exibe glifos de ligadura padrão para a fonte Péricles.

Texto usando ligaduras padrão OpenType

O exemplo de marcação a seguir mostra como definir glifos de ligadura padrão para a fonte Pericles, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pericles" Typography.StandardLigatures="True">
  <Run Typography.StylisticAlternates="1">FI</Run>
  <Run Typography.StylisticAlternates="1">FL</Run>
  <Run Typography.StylisticAlternates="1">TH</Run>
  <Run Typography.StylisticAlternates="1">TT</Run>
  <Run Typography.StylisticAlternates="1">TV</Run>
  <Run Typography.StylisticAlternates="1">TW</Run>
  <Run Typography.StylisticAlternates="1">TY</Run>
  <Run Typography.StylisticAlternates="1">VT</Run>
  <Run Typography.StylisticAlternates="1">WT</Run>
  <Run Typography.StylisticAlternates="1">YT</Run>
</Paragraph>

O texto a seguir exibe glifos de ligadura discricionários para a fonte Péricles.

Texto usando ligaduras discricionárias OpenType

O exemplo de marcação a seguir mostra como definir glifos de ligadura discricionários para a fonte Péricles, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pericles" Typography.DiscretionaryLigatures="True">
  <Run Typography.StylisticAlternates="1">CO</Run>
  <Run Typography.StylisticAlternates="1">LA</Run>
  <Run Typography.StylisticAlternates="1">LE</Run>
  <Run Typography.StylisticAlternates="1">LI</Run>
  <Run Typography.StylisticAlternates="1">LL</Run>
  <Run Typography.StylisticAlternates="1">LO</Run>
  <Run Typography.StylisticAlternates="1">LU</Run>
</Paragraph>

Por padrão, as fontes OpenType no Windows Presentation Foundation (WPF) habilitam ligaduras padrão. Por exemplo, se você usar a fonte Palatino Linotype, as ligaduras padrão "fi", "ff" e "fl" aparecerão como um glifo de caractere combinado. Observe que o par de caracteres para cada ligadura padrão está em contato um com o outro.

Texto usando ligaduras padrão OpenType com Palatino Linotype

No entanto, você pode desativar os recursos de ligadura padrão para que uma ligadura padrão, como "ff", seja exibida como dois glifos separados, em vez de como um glifo de caractere combinado.

Texto usando ligaduras padrão OpenType desabilitadas

O exemplo de marcação a seguir mostra como desabilitar glifos de ligadura padrão para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<!-- Set standard ligatures to false in order to disable feature. -->
<Paragraph Typography.StandardLigatures="False" FontFamily="Palatino Linotype" FontSize="72">
  fi ff fl
</Paragraph>

Lavagens

Swashes são glifos decorativos que usam ornamentação elaborada frequentemente associada à caligrafia. O texto a seguir exibe glifos padrão e ornamentais nesta fonte Pescadero.

Texto usando o padrão OpenType e glifos ornamentais

Os swashes são frequentemente usados como elementos decorativos em frases curtas, como anúncios de eventos. O texto seguinte utiliza floreios para enfatizar as letras maiúsculas do nome do evento.

Texto usando OpenType swashes

O exemplo de marcação a seguir mostra como definir swashes para uma fonte, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pescadero" TextBlock.TextAlignment="Center">
  Wishing you a<LineBreak/>
  <Run Typography.StandardSwashes="1" FontSize="36">Happy New Year!</Run>
</Paragraph>

Swashes contextuais

Certas combinações de glifos swash podem resultar numa aparência pouco atraente, como descendentes que se sobrepõem em letras adjacentes. O uso de um swash contextual permite que você use um glifo de swash substituto que produz uma aparência melhor. O texto a seguir mostra a mesma palavra antes e depois de uma lavagem contextual ser aplicada.

Texto usando floreios contextuais OpenType

O exemplo de marcação a seguir mostra como definir um swash contextual para a fonte Pescadero, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pescadero" Typography.StandardSwashes="1">
  Lyon <Run Typography.ContextualSwashes="1">L</Run>yon
</Paragraph>

Suplentes

Os alternativos são glifos que podem ser substituídos por um glifo padrão. As fontes OpenType, como a fonte Pericles usada nos exemplos a seguir, podem conter glifos alternativos que você pode usar para criar aparências diferentes para o texto. O texto a seguir exibe glifos padrão para a fonte Péricles.

Texto usando glifos padrão 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

O exemplo de marcação a seguir mostra como definir glifos alternativos estilísticos para a fonte Pericles, usando propriedades do Typography objeto.

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>NCIENT
  GR<Run Typography.StylisticAlternates="1">EE</Run>K
  MYTH<Run Typography.StylisticAlternates="1">O</Run>LOGY
</Paragraph>

O texto a seguir exibe vários outros glifos alternativos estilísticos para a fonte Péricles.

Texto usando glifos alternativos estilísticos OpenType para a fonte Pericles

O exemplo de marcação a seguir mostra como definir esses outros glifos alternativos estilísticos.

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>
  <Run Typography.StylisticAlternates="2">A</Run>
  <Run Typography.StylisticAlternates="3">A</Run>
  <Run Typography.StylisticAlternates="1">C</Run>
  <Run Typography.StylisticAlternates="1">E</Run>
  <Run Typography.StylisticAlternates="1">G</Run>
  <Run Typography.StylisticAlternates="1">O</Run>
  <Run Typography.StylisticAlternates="1">Q</Run>
  <Run Typography.StylisticAlternates="1">R</Run>
  <Run Typography.StylisticAlternates="2">R</Run>
  <Run Typography.StylisticAlternates="1">S</Run>
  <Run Typography.StylisticAlternates="1">Y</Run>
</Paragraph>

Alternativas contextuais aleatórias

Alternativas contextuais aleatórias fornecem vários glifos substitutos para um único caractere. Quando implementado com fontes do tipo script, esse recurso pode simular a caligrafia usando um conjunto de glifos escolhidos aleatoriamente com pequenas diferenças na aparência. O texto a seguir usa alternativas contextuais aleatórias para a fonte Lindsey. Observe que a letra "a" varia ligeiramente na aparência

Texto usando alternativas contextuais aleatórias OpenType

O exemplo de marcação a seguir mostra como definir alternativas contextuais aleatórias para a fonte Lindsey, usando propriedades do Typography objeto.

<TextBlock FontFamily="Lindsey">
  <Run Typography.ContextualAlternates="True">
    a banana in a cabana
  </Run>
</TextBlock>

Formas Históricas

As formas históricas são convenções tipográficas que eram comuns no passado. O texto a seguir exibe a frase "Boston, Massachusetts", usando uma forma histórica de glifos para a fonte Palatino Linotype.

Texto usando formulários históricos do OpenType

O exemplo de marcação a seguir mostra como definir formas históricas para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.HistoricalForms="True">Boston, Massachusetts</Run>
</Paragraph>

Estilos Numéricos

As fontes OpenType suportam um grande número de recursos que podem ser usados com valores numéricos no texto.

Frações

As fontes OpenType suportam estilos para frações, incluindo cortadas e empilhadas.

O texto a seguir exibe estilos de fração para a fonte Palatino Linotype.

Texto usando frações cortadas e empilhadas OpenType

O exemplo de marcação a seguir mostra como definir estilos de fração para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Slashed">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Stacked">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>

Algarismos de estilo antigo

As fontes OpenType suportam um formato numérico de estilo antigo. Este formato é útil para exibir numerais em estilos que não são mais padrão. O texto a seguir exibe uma data do século 18 em formatos numéricos padrão e antigos para a fonte Palatino Linotype.

Texto usando algarismos de estilo antigo OpenType

O texto a seguir exibe algarismos padrão para a fonte Palatino Linotype, seguidos por algarismos de estilo antigo.

Texto usando conjuntos de numerais de estilo antigo OpenType

O exemplo de marcação a seguir mostra como definir numerais de estilo antigo para a fonte Palatino Linotype, usando propriedades do Typography objeto.

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.NumeralStyle="Normal">1234567890</Run>
  <Run Typography.NumeralStyle="OldStyle">1234567890</Run>
</Paragraph>

Valores proporcionais e tabulares

As fontes OpenType suportam um recurso de figura proporcional e tabular para controlar o alinhamento de larguras ao usar numerais. Os números proporcionais tratam cada algarismo como tendo uma largura diferente — "1" é mais estreito do que "5". As figuras tabulares são tratadas como algarismos de largura igual para que se alinhem verticalmente, o que aumenta a legibilidade das informações do tipo financeiro.

O texto a seguir exibe duas figuras proporcionais na primeira coluna usando a fonte Miramonte. Observe a diferença de largura entre os algarismos "5" e "1". A segunda coluna mostra os mesmos dois valores numéricos com as larguras ajustadas usando o recurso de figura tabular.

Texto usando figuras proporcionais ou tabulares OpenType

O exemplo de marcação a seguir mostra como definir figuras proporcionais e tabulares para a fonte Miramonte, usando propriedades do Typography objeto.

<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Proportional">114,131</Run>
</TextBlock>
<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Tabular">114,131</Run>
</TextBlock>

Zero cortado

As fontes OpenType suportam um formato de numeral zero cortado para enfatizar a diferença entre a letra "O" e o numeral "0". O numeral zero cortado é frequentemente usado para identificadores em informações financeiras e comerciais.

O texto a seguir exibe um identificador de ordem de exemplo usando a fonte Miramonte. A primeira linha utiliza algarismos padrão. A segunda linha usava zeros cortados para melhorar o contraste com a letra "O" maiúscula.

Texto usando numerais com zero cortado do OpenType

O exemplo de marcação a seguir mostra como definir algarismos zero cortados para a fonte Miramonte, usando propriedades do Typography objeto.

<Paragraph FontFamily="Miramonte">
  <Run>Order #0048-OTC-390</Run>
  <LineBreak/>
  <Run Typography.SlashedZero="True">Order #0048-OTC-390</Run>
</Paragraph>

Aula de tipografia

O Typography objeto expõe o conjunto de recursos suportados por uma fonte OpenType. Ao definir as propriedades de Typography na marcação, você pode facilmente criar documentos que aproveitam os recursos do OpenType.

O texto a seguir exibe letras maiúsculas padrão para a fonte Pescadero, seguidas pelas letras estilizadas como "SmallCaps" e "AllSmallCaps". Neste caso, o mesmo tamanho de fonte é usado para todas as três palavras.

Texto usando maiúsculas OpenType

O exemplo de marcação a seguir mostra como definir maiúsculas para a fonte Pescadero, usando propriedades do Typography objeto. Quando o formato "SmallCaps" é usado, qualquer letra maiúscula inicial é ignorada.

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

O exemplo de código a seguir realiza a mesma tarefa que o exemplo de marcação anterior.

MyParagraph.FontFamily = new FontFamily("Pescadero");
MyParagraph.FontSize = 48;

Run run_1 = new Run("CAPITALS ");
MyParagraph.Inlines.Add(run_1);

Run run_2 = new Run("Capitals ");
run_2.Typography.Capitals = FontCapitals.SmallCaps;
MyParagraph.Inlines.Add(run_2);

Run run_3 = new Run("Capitals");
run_3.Typography.Capitals = FontCapitals.AllSmallCaps;
MyParagraph.Inlines.Add(run_3);

MyParagraph.Inlines.Add(new LineBreak());
MyParagraph.FontFamily = New FontFamily("Pescadero")
MyParagraph.FontSize = 48

Dim run_1 As New Run("CAPITALS ")
MyParagraph.Inlines.Add(run_1)

Dim run_2 As New Run("Capitals ")
run_2.Typography.Capitals = FontCapitals.SmallCaps
MyParagraph.Inlines.Add(run_2)

Dim run_3 As New Run("Capitals")
run_3.Typography.Capitals = FontCapitals.AllSmallCaps
MyParagraph.Inlines.Add(run_3)

MyParagraph.Inlines.Add(New LineBreak())

Propriedades da Classe de Tipografia

A tabela a seguir lista as propriedades, valores e configurações padrão do Typography objeto.

Propriedade Valor(es) Valor padrão
AnnotationAlternates Valor numérico - byte 0
Capitals AllPetiteCaps | AllSmallCaps | Normal | PetiteCaps | SmallCaps | Titling | Unicase FontCapitals.Normal
CapitalSpacing Boolean false
CaseSensitiveForms Boolean false
ContextualAlternates Boolean true
ContextualLigatures Boolean true
ContextualSwashes Valor numérico - byte 0
DiscretionaryLigatures Boolean false
EastAsianExpertForms Boolean false
EastAsianLanguage HojoKanji | Jis04 | Jis78 | Jis83 | Jis90 | NlcKanji | Normal | Simplified | Traditional | TraditionalNames FontEastAsianLanguage.Normal
EastAsianWidths Full | Half | Normal | Proportional | Quarter | Third FontEastAsianWidths.Normal
Fraction Normal | Slashed | Stacked FontFraction.Normal
HistoricalForms Boolean false
HistoricalLigatures Boolean false
Kerning Boolean true
MathematicalGreek Boolean false
NumeralAlignment Normal | Proportional | Tabular FontNumeralAlignment.Normal
NumeralStyle Boolean FontNumeralStyle.Normal
SlashedZero Boolean false
StandardLigatures Boolean true
StandardSwashes valor numérico – byte 0
StylisticAlternates valor numérico – byte 0
StylisticSet1 Boolean false
StylisticSet2 Boolean false
StylisticSet3 Boolean false
StylisticSet4 Boolean false
StylisticSet5 Boolean false
StylisticSet6 Boolean false
StylisticSet7 Boolean false
StylisticSet8 Boolean false
StylisticSet9 Boolean false
StylisticSet10 Boolean false
StylisticSet11 Boolean false
StylisticSet12 Boolean false
StylisticSet13 Boolean false
StylisticSet14 Boolean false
StylisticSet15 Boolean false
StylisticSet16 Boolean false
StylisticSet17 Boolean false
StylisticSet18 Boolean false
StylisticSet19 Boolean false
StylisticSet20 Boolean false
Variants Inferior | Normal | Ordinal | Ruby | Subscript | Superscript FontVariants.Normal

Ver também