Compartilhar via


Recursos da fonte OpenType

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

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 pela Adobe Corporation. As fontes OpenType e os serviços do sistema operacional que dão suporte a fontes OpenType fornecem aos usuários uma maneira simples de instalar e usar fontes, independentemente de as fontes contiverem estruturas de tópicos TrueType ou estruturas de tópicos 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 para dados de fonte.

  • 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 WPF (Windows Presentation Foundation). Essas fontes fornecem a maioria dos recursos ilustrados no restante deste tópico. Para obter mais informações, consulte exemplo de pacote de fontes OpenType.

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

Extensões tipográficas avançadas

As tabelas Tipográficas Avançadas (Tabelas de Disposição OpenType) estendem a funcionalidade das fontes com contornos TrueType ou CFF. As fontes de Layout OpenType contêm informações adicionais que estendem os recursos das fontes para dar suporte à 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 dão suporte a ligaturas, formulários posicionais, alternativas e outras substituições de fonte.

  • Suporte para posicionamento bidimensional e vinculação de glifo.

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

As tabelas de Layout OpenType são descritas com mais detalhes na seção "Tabelas de Arquivo de Fonte" da especificação OpenType.

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

Variantes

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

Sobrescritos e Subscritos

A propriedade Variants permite que você defina valores de expoente e índice para uma fonte OpenType.

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

Texto usando sobrescritos OpenType

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

<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 OpenType

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

<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 capitais não são afetadas.

Texto usando sobrescritos e subscritos OpenType

O exemplo de marcação a seguir mostra como definir sobrescritos e subscritos para uma fonte, usando 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 renderizam o texto em glifos em estilo maiúsculo. Normalmente, quando o texto é renderizado todas em maiúsculas, o espaçamento entre letras pode parecer muito apertado, e o peso e a proporção das letras parecerem muito grandes. O OpenType dá suporte a alguns formatos de estilo para letras maiúsculas, incluindo maiúsculas pequenas, minimaiúsculas, títulos e espaçamento de 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 denominadas "SmallCaps" e "AllSmallCaps". Nesse caso, o mesmo tamanho da fonte é usado para todas as três palavras.

Texto usando maiúsculas OpenType

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

<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. Letras maiúsculas são normalmente usadas em tamanhos de fonte maiores como títulos. O texto a seguir exibe maiúsculas regulares e maiúsculas de título para a fonte Pescadero. Observe as larguras mais estreitas das hastes na segunda linha do texto.

Texto usando letras maiúsculas OpenType inclinadas

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

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

Espaçamento de letras maiúsculas

O espaçamento de capital é um recurso que permite que você forneça mais espaçamento ao usar todas as capitais no texto. Letras maiúsculas são normalmente projetadas para se misturar com letras minúsculas. 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 espaçamento normal e maiúsculo para a fonte Pescadero.

Texto usando espaçamento de letras maiúsculas OpenType

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

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

Ligaduras

Ligaturas são dois ou mais glifos que são formados em um único glifo para criar um texto mais legível ou atraente. As fontes OpenType dão suporte a quatro tipos de ligaturas:

  • Ligaduras padrão. Projetado para aprimorar a legibilidade. As ligaturas padrão incluem "fi", "fl" e "ff".

  • Ligaduras contextuais. Projetado para aprimorar a legibilidade fornecendo melhor comportamento de junção entre os caracteres que compõem a ligatura.

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

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

O texto a seguir exibe glifos de ligações padrão para a fonte Pericles.

Texto usando ligaduras padrão OpenType

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

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

Texto usando ligaduras discricionárias OpenType

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

<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 WPF (Windows Presentation Foundation) habilitam ligaturas padrão. Por exemplo, se você usar a fonte Palatino Linotype, as ligaturas 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 toca um no outro.

Texto usando ligaduras padrão OpenType com o Palatino Linotype

No entanto, você pode desabilitar recursos de ligadura padrão para que uma ligatura 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 ligatura padrão para a fonte Palatino Linotype, usando propriedades do objeto Typography.

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

Caracteres ornamentados

Swashes 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

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

Texto usando caracteres ornamentados OpenType

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

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

Caracteres ornamentados contextuais

Algumas combinações de glifos swash podem causar uma aparência pouco atraente, como descendentes sobrepostos em letras adjacentes. Usar um caractere ornamentado contextual permite que você utilize um glifo alternativo que resulta em uma aparência melhor. O texto a seguir mostra a mesma palavra antes e depois de ser aplicado um caractere ornamentado contextual.

Texto usando caracteres ornamentados contextuais OpenType

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

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

Alternativas

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

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 Pélicas, usando propriedades do objeto Typography.

<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élicas.

Texto usando glifos alternativos estilísticos OpenType para a fonte Pélicas

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 manuscrito 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 objeto Typography.

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

Formas Históricas

Formulários históricos 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 OpenType

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

<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 no texto.

Frações

As fontes OpenType dão suporte a 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 do OpenType

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

<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 de estilo antigo

As fontes OpenType dão suporte a um formato numeral 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 XVIII em formatos numerais de estilo padrão e antigo para a fonte Palatino Linotype.

Texto usando numerais de estilo antigo do OpenType

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

Texto usando conjuntos numerais de estilo antigo OpenType

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

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

Figuras proporcionais e tabulares

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

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

<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 dão suporte a um formato numeral zero cortado para enfatizar a diferença entre a letra "O" e o numeral "0". O numeral zero cortado geralmente é usado para identificadores em informações financeiras e comerciais.

O texto a seguir exibe um identificador de pedido de exemplo usando a fonte Miramonte. A primeira linha usa numerais padrão. A segunda linha usou numerais zero cortados para fornecer melhor contraste com a letra "O" maiúscula.

Texto usando o número zero cortado OpenType

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

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

Classe de tipografia

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

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

Texto usando maiúsculas OpenType

O exemplo de marcação a seguir mostra como definir capitais para a fonte Pescadero usando propriedades do objeto Typography. Quando o formato "SmallCaps" é usado, qualquer letra maiúscula principal é 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, os valores e as configurações padrão do objeto Typography.

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

Consulte também