Share via


Funzionalità dei tipi di carattere OpenType

Questo argomento offre una panoramica di alcune delle funzionalità principali della tecnologia dei tipi di carattere OpenType in Windows Presentation Foundation (WPF).

Formato dei tipi di carattere OpenType

Il formato del tipo di carattere OpenType è un'estensione del formato del tipo di carattere TrueType®, aggiungendo il supporto per i dati del tipo di carattere PostScript. Il formato del tipo di carattere OpenType è stato sviluppato congiuntamente da Microsoft e Adobe Corporation. I tipi di carattere OpenType e i servizi del sistema operativo che supportano i tipi di carattere OpenType offrono agli utenti un modo semplice per installare e usare i tipi di carattere, indipendentemente dal fatto che i tipi di carattere contengano contorni TrueType o struttura CFF (PostScript).

Il formato del tipo di carattere OpenType risolve le problematiche seguenti per gli sviluppatori:

  • Supporto multipiattaforma più esteso.

  • Supporto migliore per set di caratteri internazionali.

  • Migliore protezione per i dati dei tipi di carattere.

  • Dimensioni di file minori per rendere più efficiente la distribuzione dei tipi di carattere.

  • Supporto più ampio per il controllo tipografico avanzato.

Nota

Windows SDK contiene un set di tipi di carattere OpenType di esempio che è possibile usare con applicazioni Windows Presentation Foundation (WPF). Questi tipi di carattere offrono la maggior parte delle funzionalità descritte nelle altre sezioni di questo argomento. Per altre informazioni, vedere Esempio di pacchetto di tipi di carattere OpenType.

Per informazioni dettagliate sul formato del tipo di carattere OpenType, vedere la specifica OpenType.

Estensioni tipografiche avanzate

Le tabelle typografiche avanzate (tabelle OpenType Layout) estendono la funzionalità dei tipi di carattere con contorni TrueType o CFF. I tipi di carattere OpenType Layout contengono informazioni aggiuntive che estendono le funzionalità dei tipi di carattere per supportare la tipografia internazionale di alta qualità. La maggior parte dei tipi di carattere OpenType espone solo un subset delle funzionalità OpenType totali disponibili. I tipi di carattere OpenType forniscono le funzionalità seguenti.

  • Mapping avanzato tra caratteri e glifi che supportano legature, formati posizionali, glifi alternativi e altre sostituzioni di tipi di carattere.

  • Supporto per posizionamento bidimensionale e collegamento di glifi.

  • Informazioni esplicite su script e lingua contenute in un carattere, per permettere a un'applicazione di elaborazione del testo di modificare il proprio comportamento di conseguenza.

Le tabelle OpenType Layout sono descritte in modo più dettagliato nella sezione "Tabelle file di carattere" della specifica OpenType.

La parte restante di questa panoramica introduce l'ampiezza e la flessibilità di alcune delle funzionalità OpenType interessanti visivamente esposte dalle proprietà dell'oggetto Typography . Per altre informazioni su questo oggetto, vedere Classe Typography.

Varianti

Le varianti vengono usate per eseguire il rendering di stili tipografici diversi, come gli apici e i pedici.

Apici e pedici

La Variants proprietà consente di impostare i valori apice e pedice per un tipo di carattere OpenType.

Il testo seguente mostra apici per il tipo di carattere Palatino Linotype.

Text using OpenType superscripts

Nell'esempio di markup seguente viene illustrato come definire apice per il tipo di carattere Palatino Linotype utilizzando le proprietà dell'oggetto Typography .

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

Il testo seguente mostra pedici per il tipo di carattere Palatino Linotype.

Text using OpenType subscripts

Nell'esempio di markup seguente viene illustrato come definire pedice per il tipo di carattere Palatino Linotype utilizzando le proprietà dell'oggetto Typography .

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

Uso decorativo di apici e pedici

È anche possibile usare apici e pedici per creare effetti decorativi di testo con maiuscole e minuscole miste. Il testo seguente mostra testo in apice e pedice per il tipo di carattere Palatino Linotype. Si noti che questa formattazione non influisce sulle maiuscole.

Text using OpenType superscripts and subscripts

Nell'esempio di markup seguente viene illustrato come definire apice e pedice per un tipo di carattere usando le proprietà dell'oggetto Typography .

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

Caratteri maiuscoli

I caratteri maiuscoli sono un set di caratteri tipografici per il rendering del testo in glifi in stile maiuscolo. In genere, quando il testo viene visualizzato come tutto maiuscolo, la spaziatura tra le lettere può risultare insufficiente, mentre lo spessore e le proporzioni delle lettere possono apparire eccessivi. OpenType supporta diversi formati di stile per maiuscole, tra cui maiuscole piccole, minuscole maiuscole, titling e spaziatura maiuscola. Questi formati permettono di controllare l'aspetto dei caratteri maiuscoli.

Il testo seguente visualizza lettere maiuscole standard per il tipo di carattere Pescadero, seguite da lettere in stile "SmallCaps" e "AllSmallCaps". In questo caso, viene usata la stessa dimensione di carattere per tutte e tre le parole.

Text using OpenType capitals

Nell'esempio di markup seguente viene illustrato come definire maiuscole per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography . Quando si usa il formato "SmallCaps", tutte le iniziali maiuscole vengono ignorate.

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

Caratteri maiuscoli di titolazione

I caratteri maiuscoli di titolazione hanno spessore e proporzioni minori e sono progettati per conferire un aspetto più elegante rispetto alle lettere maiuscole normali. I caratteri maiuscoli di titolazione vengono in genere usati con dimensioni di carattere maggiori come intestazioni. Il testo seguente mostra caratteri maiuscoli normali e di titolazione per il tipo di carattere Pescadero. Notare la larghezza minore delle aste nel testo della seconda riga.

Text using OpenType titling capitals

Nell'esempio di markup seguente viene illustrato come definire maiuscole per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography .

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

Spaziatura tra caratteri maiuscoli

La spaziatura tra caratteri maiuscoli è una funzionalità che permette di aggiungere più spazio quando si usano caratteri tutti maiuscoli nel testo. Le lettere maiuscole sono in genere progettate per essere combinate con lettere minuscole. La gradevole spaziatura tra una lettera maiuscola e una minuscola può risultare troppo ridotta quando si usano lettere tutte maiuscole. Il testo seguente mostra una spaziatura normale e una tra caratteri maiuscoli per il tipo di carattere Pescadero.

Text using OpenType capital spacing

Nell'esempio di markup seguente viene illustrato come definire la spaziatura maiuscola per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography .

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

Legature

Le legature sono due o più glifi uniti a formare un singolo glifo per creare un testo più leggibile o gradevole. I tipi di carattere OpenType supportano quattro tipi di legature:

  • Legature standard. Progettate per migliorare la leggibilità. Le legature standard includono "fi", "fl" e "ff".

  • Legature contestuali. Progettate per migliorare la leggibilità applicando un accostamento migliore tra i caratteri che costituiscono la legatura.

  • Legature discrezionali. Progettate per scopi ornamentali e non appositamente ideate per favorire la leggibilità.

  • Legature storiche. Progettate per testi di tipo storico e non appositamente ideate per favorire la leggibilità.

Il testo seguente mostra glifi con legature standard per il tipo di carattere Pericles.

Text using OpenType standard ligatures

Nell'esempio di markup seguente viene illustrato come definire glifi di legatura standard per il tipo di carattere Pericles usando le proprietà dell'oggetto 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>

Il testo seguente mostra glifi con legature discrezionali per il tipo di carattere Pericles.

Text using OpenType discretionary ligatures

Nell'esempio di markup seguente viene illustrato come definire glifi di legatura discrezionale per il tipo di carattere Pericles, usando le proprietà dell'oggetto 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>

Per impostazione predefinita, i tipi di carattere OpenType in Windows Presentation Foundation (WPF) abilitano le legature standard. Se si usa, ad esempio, il tipo di carattere Palatino Linotype, le legature standard "fi", "ff" e "fl" verranno visualizzate come glifi di caratteri combinati. Si noti che nella coppia di caratteri per ogni legatura standard i caratteri si toccano tra loro.

Text using OpenType standard ligatures with Palatino Linotype

Tuttavia, è possibile disabilitare le funzionalità di legatura standard in modo che una legatura standard come "ff" venga visualizzata come due glifi separati invece che come glifo di caratteri combinati.

Text using disabled OpenType standard ligatures

Nell'esempio di markup seguente viene illustrato come disabilitare i glifi di legatura standard per il tipo di carattere Palatino Linotype, utilizzando le proprietà dell'oggetto Typography .

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

Glifi ornati

I glifi ornati sono glifi decorativi che usano ornamenti elaborati spesso associati alla calligrafia. Il testo seguente mostra glifi standard e ornati per il tipo di carattere Pescadero.

Text using OpenType standard and swash glyphs

I glifi ornati vengono spesso usati come elementi decorativi in brevi frasi come gli annunci di eventi. Il testo seguente usa glifi ornati per porre in risalto le lettere maiuscole del nome dell'evento.

Text using OpenType swashes

Nell'esempio di markup seguente viene illustrato come definire gli swash per un tipo di carattere usando le proprietà dell'oggetto Typography .

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

Glifi ornati contestuali

Alcune combinazioni di glifi ornati possono creare un aspetto poco gradevole, ad esempio con tratti discendenti che si sovrappongono nelle lettere adiacenti. L'uso di un glifo ornato contestuale permette di usare un glifo ornato sostitutivo che conferisce un aspetto migliore. Il testo seguente mostra la stessa parola prima e dopo l'applicazione di un glifo ornato contestuale.

Text using OpenType contextual swashes

Nell'esempio di markup seguente viene illustrato come definire uno swash contestuale per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography .

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

Glifi alternativi

I glifi alternativi possono essere usati per sostituire un glifo standard. I tipi di carattere OpenType, ad esempio il tipo di carattere Pericles usato negli esempi seguenti, possono contenere glifi alternativi che è possibile usare per creare aspetti diversi per il testo. Il testo seguente mostra i glifi standard per il tipo di carattere Pericles.

Text using OpenType standard glyphs

Il tipo di carattere Pericles OpenType contiene glifi aggiuntivi che forniscono alternative stilistiche al set standard di glifi. Il testo seguente mostra glifi con stile alternativo.

Text using OpenType stylistic alternate glyphs

Nell'esempio di markup seguente viene illustrato come definire glifi alternativi stilistici per il tipo di carattere Pericles usando le proprietà dell'oggetto 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>

Il testo seguente mostra altri glifi con stile alternativo per il tipo di carattere Pericles.

Text using OpenType stylistic alternate glyphs for the Pericles font

L'esempio di markup seguente mostra come definire questi altri glifi con stile alternativo.

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

Alternative contestuali casuali

Le alternative contestuali casuali forniscono più glifi sostitutivi per un singolo carattere. Se implementate con tipi di carattere di tipo script, questa funzionalità può simulare la scrittura manuale tramite un set di glifi scelti casualmente con differenze di aspetto minime. Il testo seguente usa alternative contestuali casuali per il tipo di carattere Lindsey. Notare come la lettera "a" varia leggermente nell'aspetto.

Text using OpenType random contextual alternates

Nell'esempio di markup seguente viene illustrato come definire alternative contestuali casuali per il tipo di carattere Lindsey usando le proprietà dell'oggetto Typography .

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

Formati di tipo storico

I formati di tipo storico sono convenzioni tipografiche usate comunemente in passato. Il testo seguente mostra la frase "Boston, Massachusetts" usando glifi con un formato di tipo storico per il tipo di carattere Palatino Linotype.

Text using OpenType historical forms

Nell'esempio di markup seguente viene illustrato come definire forme storiche per il tipo di carattere Palatino Linotype utilizzando le proprietà dell'oggetto Typography .

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

Stili numerici

I tipi di carattere OpenType supportano numerose funzionalità che possono essere usate con i valori numerici nel testo.

Frazioni

I tipi di carattere OpenType supportano gli stili per le frazioni, tra cui barre e impilate.

Il testo seguente mostra stili di frazione per il tipo di carattere Palatino Linotype.

Text using OpenType slashed and stacked fractions

Nell'esempio di markup seguente viene illustrato come definire gli stili frazionari per il tipo di carattere Palatino Linotype usando le proprietà dell'oggetto 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>

Caratteri numerici in stile antico

I tipi di carattere OpenType supportano un formato numerico vecchio stile. Questo formato è utile per visualizzare valori numerici in stili che non sono più quelli standard. Il testo seguente mostra una data del 18° secolo con formati numerici standard e in stile antico per il tipo di carattere Palatino Linotype.

Text using OpenType old style numerals

Il testo seguente mostra caratteri numerici standard per il tipo di carattere Palatino Linotype, seguiti da caratteri numerici in stile antico.

Text using OpenType old style numeral sets

Nell'esempio di markup seguente viene illustrato come definire i numerali di stile antico per il tipo di carattere Palatino Linotype, utilizzando le proprietà dell'oggetto Typography .

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

Cifre proporzionali e tabulari

I tipi di carattere OpenType supportano una funzionalità di figura proporzionale e tabulare per controllare l'allineamento delle larghezze quando si usano i numeri. Le cifre proporzionali gestiscono ogni carattere numerico applicando una larghezza diversa: "1" è più stretto di "5". Le cifre tabulari vengono gestite come caratteri numerici di uguale larghezza in modo da poter essere allineate in verticale, per aumentare la leggibilità delle informazioni di tipo finanziario.

Il testo seguente mostra due cifre proporzionali nella prima colonna usando il tipo di carattere Miramonte. Notare la differenza in larghezza tra i caratteri numerici "5" e "1". La seconda colonna mostra gli stessi valori numerici, le cui larghezze sono state modificate tramite la funzionalità per le cifre tabulari.

Text using OpenType proportional & tabular figures

Nell'esempio di markup seguente viene illustrato come definire figure proporzionali e tabulari per il tipo di carattereMirao, utilizzando le proprietà dell'oggetto Typography .

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

Zero barrato

I tipi di carattere OpenType supportano un formato numerico zero barrato per evidenziare la differenza tra la lettera "O" e il numero "0". Il carattere numerico zero barrato viene spesso usato per gli identificatori all'interno di informazioni finanziarie e aziendali.

Il testo seguente mostra un identificatore di ordine di esempio con il tipo di carattere Miramonte. La prima riga usa caratteri numerici standard. La seconda riga usa caratteri numerici con zero barrato per distinguere meglio il carattere numerico dalla lettera "O" maiuscola.

Text using OpenType slashed zero numerals

Nell'esempio di markup riportato di seguito viene illustrato come definire numeri zero barrati per il tipo di carattereMirao, utilizzando le proprietà dell'oggetto Typography .

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

Classe Typography

L'oggetto Typography espone il set di funzionalità supportate da un tipo di carattere OpenType. Impostando le proprietà di Typography nel markup, è possibile creare facilmente documenti che sfruttano le funzionalità OpenType.

Il testo seguente visualizza lettere maiuscole standard per il tipo di carattere Pescadero, seguite da lettere in stile "SmallCaps" e "AllSmallCaps". In questo caso, viene usata la stessa dimensione di carattere per tutte e tre le parole.

Text using OpenType capitals

Nell'esempio di markup seguente viene illustrato come definire maiuscole per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography . Quando si usa il formato "SmallCaps", tutte le iniziali maiuscole vengono ignorate.

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

L'esempio di codice seguente esegue la stessa attività dell'esempio di markup precedente.

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())

Proprietà della classe Typography

Nella tabella seguente sono elencate le proprietà, i valori e le impostazioni predefinite dell'oggetto Typography .

Proprietà Valore/i Valore predefinito
AnnotationAlternates Valore numerico, 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 Valore numerico, 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 Valore numerico, byte 0
StylisticAlternates Valore numerico, 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

Vedi anche