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 mais amplo a várias plataformas.

  • Melhor suporte para conjuntos de caracteres internacionais.

  • Melhor proteção para dados de fonte.

  • Arquivos menores para tornar a distribuição de fonte 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 oferecem a maioria dos recursos ilustrados no restante deste tópico. Para obter mais informações, consulte Pacote de fontes OpenType de exemplo.

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 de layout OpenType) 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 oferecer suporte a 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.

  • O mapeamento avançado entre caracteres e glifos dá suporte a ligaduras, formas posicionais, alternativos e outras substituições de fonte.

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

  • Informações explícitas de script e de 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 em 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 Classe de tipografia.

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 a seguir exibe sobrescritos para a fonte Palatino Linotype.

Text using OpenType superscripts

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.

Text using OpenType subscripts

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>

Usos decorativos de sobrescritos e subscritos

Sobrescritos e subscritos também podem ser utilizados para criar efeitos decorativos em textos que contêm maiúsculas e minúsculas. O texto a seguir exibe texto sobrescrito e subscrito para a fonte Palatino Linotype. Observe que as letras maiúsculas não são afetadas.

Text using OpenType superscripts and subscripts

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

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

Letras maiúsculas

As letras maiúsculas são um conjunto de formas tipográficas que renderizam texto em glifos no estilo maiúsculo. Normalmente, quando o texto inteiro é renderizado em letras maiúsculas, o espaçamento entre elas pode parecer muito apertado, e o peso e a proporção das letras, muito pesados. O OpenType suporta vários formatos de estilo para maiúsculas, incluindo maiúsculas pequenas, maiúsculas pequenas, titulação e espaçamento entre maiúsculas. Esses formatos de estilo permitem controlar a aparência das letras maiúsculas.

O texto a seguir exibe letras maiúsculas padrão para a fonte Pescadero, seguidas pelas letras nos estilos “SmallCaps” e “AllSmallCaps”. Nesse caso, o mesmo tamanho de fonte é usado para as três palavras.

Text using OpenType capitals

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” é utilizado, todas as letras maiúsculas à esquerda são ignoradas.

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

Letras maiúsculas inclinadas

As letras maiúsculas inclinadas são mais leves, em peso e proporção, e foram concebidas para dar uma aparência mais elegante do que as letras maiúsculas normais. Normalmente, elas são usadas em tamanhos de fonte maiores, como títulos. O texto a seguir exibe maiúsculas normais e inclinadas para a fonte Pescadero. Observe as larguras mais estreitas das hastes na segunda linha do texto.

Text using OpenType titling capitals

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

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

Espaçamento de letras maiúsculas

O espaçamento de letras maiúsculas é um recurso que permite oferecer um espaçamento maior ao usar somente letras maiúsculas no texto. As letras maiúsculas são normalmente projetadas para se misturar 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.

Text using OpenType capital spacing

O exemplo de marcação a seguir mostra como definir o espaçamento maiúsculo 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 formam um único glifo com o objetivo de criar um texto mais legível ou atraente. As fontes OpenType suportam quatro tipos de ligaduras:

  • Ligaduras padrão. Concebidas para aumentar a legibilidade. As ligaduras padrão incluem “fi”, “fl” e “ff”.

  • Ligaduras contextuais. Concebida para aumentar a legibilidade, pois oferece um melhor comportamento de ligação entre os caracteres que compõem a ligadura.

  • Ligaduras discricionárias. Concebidas para serem ornamentais, não especificamente para facilitar a leitura.

  • Ligaduras históricas. Concebidas para serem históricas, não especificamente para facilitar a leitura.

O texto a seguir exibe glifos com ligadura padrão para a fonte Pericles.

Text using OpenType standard ligatures

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 com ligadura discricionária para a fonte Pericles.

Text using OpenType discretionary ligatures

O exemplo de marcação a seguir mostra como definir glifos de ligadura discricionários para a fonte Pericles, 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, fontes OpenType no Windows Presentation Foundation (WPF) habilitam ligaduras padrão. Por exemplo, se a fonte Palatino Linotype for usada, as ligaduras padrão “fi”, “ff” e “fl” aparecerão como um glifo de caracteres combinados. Observe que o par de caracteres para cada ligadura padrão toca um no outro.

Text using OpenType standard ligatures with Palatino Linotype

No entanto, é possível desabilitar 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 caracteres combinados.

Text using disabled OpenType standard ligatures

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>

Swashes

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

Muitas vezes, os swashes são utilizados como elementos decorativos em frases curtas, como anúncios de eventos. O texto a seguir usa swashes para enfatizar as letras maiúsculas do nome do evento.

Text using 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

Algumas combinações de glifos swash podem causar uma aparência pouco atraente, como descendentes sobrepostos 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 varredura contextual ser aplicada.

Text using OpenType contextual swashes

O exemplo de marcação a seguir mostra como definir uma lavagem 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>

Alternativos

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

Text using OpenType standard glyphs

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

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

Text using OpenType stylistic alternate glyphs for the Pericles font

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>

Alternativos contextuais aleatórios

Os alternativos contextuais aleatórios fornecem vários glifos substitutos para um único caractere. Quando implementado com fontes do tipo script, esse recurso pode simular a escrita manual 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

Text using OpenType random contextual alternates

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 foram comuns no passado. O texto a seguir exibe a frase “Boston, Massachusetts” usando uma forma histórica de glifos para a fonte Palatino Linotype.

Text using OpenType historical forms

O exemplo de marcação a seguir mostra como definir formulários históricos 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 dão suporte a um grande número de recursos que podem ser usados com valores numéricos em 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.

Text using OpenType slashed and stacked fractions

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>

Numerais em estilo antigo

As fontes OpenType suportam um formato numérico de estilo antigo. Esse 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 de numerais padrão e em estilo antigo para a fonte Palatino Linotype.

Text using OpenType old style numerals

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

Text using OpenType old style numeral sets

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>

Figuras proporcionais e tabulares

As fontes OpenType oferecem suporte a um recurso de figura proporcional e tabular para controlar o alinhamento das larguras ao usar numerais. As figuras proporcionais tratam cada numeral como tendo uma largura diferente — “1” é mais estreito do que “5”. As figuras tabulares são tratadas como numerais de larguras iguais para se alinharem verticalmente, o que aumenta a legibilidade de 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.

Text using OpenType proportional & tabular figures

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". Muitas vezes, o número zero cortado é utilizado 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 usa numerais padrão. A segunda linha usou números zero cortados para fornecer melhor contraste com a letra "O" maiúscula.

Text using OpenType slashed zero numerals

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>

Classe de tipografia

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

O texto a seguir exibe letras maiúsculas padrão para a fonte Pescadero, seguidas pelas letras nos estilos “SmallCaps” e “AllSmallCaps”. Nesse caso, o mesmo tamanho de fonte é usado para as três palavras.

Text using OpenType capitals

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” é utilizado, todas as letras maiúsculas à esquerda são ignoradas.

<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, os valores e as Typography configurações padrão do 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

Confira também