Condividi tramite


Caratteristiche 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 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ù ampio.

  • Miglior supporto per i set di caratteri internazionali.

  • Migliore protezione per i dati dei tipi di carattere.

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

  • Supporto più ampio per il controllo tipografico avanzato.

Annotazioni

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 forniscono la maggior parte delle funzionalità illustrate nel resto di questo argomento. Per altre informazioni, vedere Sample OpenType Font Pack.

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 completo tra caratteri e glifi che supportano legature, forme posizionali, alternative e altre sostituzioni dei caratteri.

  • Supporto per il posizionamento bidimensionale e l'attaccamento dei glifi.

  • Informazioni esplicite sullo script e sul linguaggio contenute nel tipo di carattere, in modo che un'applicazione di elaborazione del testo possa regolarne il comportamento di conseguenza.

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

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

Varianti

Le varianti vengono usate per rendere stili tipografici diversi, ad esempio apice e pedice.

Apice e pedice

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

Nel testo seguente vengono visualizzati gli apici per il tipo di carattere Palatino Linotype.

Testo con esponente OpenType

Nell'esempio di markup seguente viene illustrato come definire gli apici 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>

Nel testo seguente vengono visualizzati i pedici del font Palatino Linotype.

Testo con sottoscritti OpenType

Nell'esempio di markup seguente viene illustrato come definire i pedici 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>

Usi decorativi di apice e pedice

È anche possibile usare apice e pedice per creare effetti decorativi di testo con maiuscole e minuscole. Nel testo seguente viene visualizzato il testo in apice e pedice per il tipo di carattere Palatino Linotype. Si noti che le maiuscole non sono interessate.

Testo con apice OpenType e pedice

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>

Capitali

Le maiuscole sono un insieme di forme tipografiche che visualizzano il testo in glifi in stile maiuscole. In genere, quando un testo è tutto in maiuscolo, la spaziatura tra le lettere può apparire troppo stretta, e il peso e la proporzione delle lettere troppo marcati. OpenType supporta diversi formati di stile per maiuscole, tra cui maiuscole piccole, minuscole maiuscole, titling e spaziatura maiuscola. Questi formati di stile consentono di controllare l'aspetto delle maiuscole.

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

Testo con maiuscole OpenType

Nell'esempio di markup seguente viene illustrato come definire le maiuscole per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography. Quando viene utilizzato il formato "SmallCaps", qualsiasi lettera maiuscola iniziale viene ignorata.

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

Maiuscole di Titolo

Le maiuscole di titling sono più leggere nel peso e nella proporzione e concepite per dare un aspetto più elegante rispetto alle maiuscole normali. Le maiuscole sono in genere utilizzate in caratteri più grandi come titoli. Nel testo seguente vengono visualizzati i caratteri maiuscole e minuscole normali per il tipo di carattere Pescadero. Si notino le larghezze dello stelo più stretto del testo sulla seconda riga.

Testo con maiuscole OpenType titling

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

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

Spaziatura delle maiuscole

La spaziatura maiuscola è una funzionalità che consente di fornire più spaziatura quando si usano tutte le maiuscole nel testo. Le lettere maiuscole sono in genere progettate per fondersi con lettere minuscole. La spaziatura che appare attraente tra e una lettera maiuscola e una lettera minuscola può sembrare troppo stretta quando vengono usate tutte le lettere maiuscole. Nel testo seguente viene visualizzata la spaziatura normale e maiuscola per il tipo di carattere Pescadero.

Testo utilizzando la spaziatura maiuscola OpenType

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 formati in un unico glifo per creare testo più leggibile o attraente. I tipi di carattere OpenType supportano quattro tipi di legature:

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

  • legature contestuali. Progettato per migliorare la leggibilità fornendo un migliore comportamento di unione tra i caratteri che costituiscono la legatura.

  • legature discrezionali. Progettato per essere decorativo, e non appositamente progettato per la leggibilità.

  • legature cronologiche. Progettato per essere cronologico e non progettato specificamente per la leggibilità.

Nel testo seguente vengono visualizzati glifi di legatura standard per il tipo di carattere Pericles.

Testo usando le legature standard OpenType

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>

Nel testo seguente vengono visualizzati glifi di legatura discrezionale per il tipo di carattere Pericles.

Testo con legature discrezionali OpenType

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. Ad esempio, se usi il tipo di carattere Palatino Linotype, le legature standard "fi", "ff" e "fl" appaiono come glifi di carattere combinati. Si noti che la coppia di caratteri per ogni legatura standard si toccano tra loro.

Testo con legature standard OpenType con Palatino Linotype

Tuttavia, è possibile disabilitare le caratteristiche di legatura standard in modo che una legatura standard come "ff" venga visualizzata come due glifi separati, anziché come glifo di carattere combinato.

Testo con legature standard OpenType disabilitate

Nell'esempio di markup seguente viene illustrato come disabilitare i glifi di legatura standard per il tipo di carattere Linotype di Palatino, usando 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>

Swashes

Gli svolazzi sono glifi decorativi che utilizzano ornamenti elaborati spesso associati alla calligrafia. Nel testo seguente vengono visualizzati glifi standard e ornati per il font Pescadero.

Testo con glifi standard OpenType e glifi di lavaggio

Gli swashes vengono spesso usati come elementi decorativi in brevi frasi, ad esempio annunci di eventi. Il testo seguente usa gli swash per evidenziare le lettere maiuscole del nome dell'evento.

Testo con OpenType swashes

Nell'esempio di markup seguente viene illustrato come definire gli swash per un tipo di carattere utilizzando 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>

Abbellimenti contestuali

Alcune combinazioni di glifi decorativi possono causare un aspetto sgradevole, ad esempio discendenti sovrapposti su lettere adiacenti. L'uso di uno swash contestuale consente di utilizzare un glifo alternativo che migliora l'aspetto. Il testo seguente mostra la stessa parola prima e dopo l'applicazione di uno swash contestuale.

Testo con riccioli contestuali OpenType contestuali OpenType

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>

Varianti

Le alternative sono glifi che possono essere sostituiti da 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. Nel testo seguente vengono visualizzati glifi standard per il tipo di carattere Pericles.

Testo con glifi standard OpenType

Il tipo di carattere Pericles OpenType contiene glifi aggiuntivi che forniscono alternative stilistiche al set standard di glifi. Nel testo seguente vengono visualizzati glifi alternativi stilistici.

Testo utilizzando glifi alternativi OpenType

Nell'esempio di markup seguente viene illustrato come definire glifi alternativi stilistici per il tipo di carattere Pericles utilizzando 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>

Nel testo seguente vengono visualizzati diversi altri glifi alternativi stilistici per il tipo di carattere Pericles.

Testo utilizzando glifi alternativi stilistici OpenType per il tipo di carattere Pericles

Nell'esempio di markup seguente viene illustrato come definire questi altri glifi alternativi stilistici.

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

Varianti contestuali casuali

Le alternative contestuali casuali forniscono più glifi sostitutivi per un singolo carattere. Se implementata con tipi di carattere di tipo script, questa funzionalità può simulare la grafia usando un set di glifi scelti in modo casuale con lievi differenze nell'aspetto. Il testo seguente usa alternative contestuali casuali per il tipo di carattere Lindsey. Si noti che la lettera "a" varia leggermente nell'aspetto

Testo con alternative contestuali casuali OpenType

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>

Forme storiche

Le forme storiche sono convenzioni tipografiche comuni in passato. Il testo seguente mostra la frase "Boston, Massachusetts", utilizzando una forma storica di glifi per il tipo di carattere Palatino Linotype.

Testo utilizzando i formati storici OpenType

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 un numero elevato di funzionalità che possono essere usate con valori numerici nel testo.

Frazioni

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

Nel testo seguente vengono visualizzati gli stili frazionari per il tipo di carattere Palatino Linotype.

Testo con frazioni OpenType con barre e frazioni in pila

Nell'esempio di markup seguente viene illustrato come definire gli stili frazionari per il tipo di carattere Palatino Linotype utilizzando 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>

Numeri in stile antico

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

Testo con numerali vecchio stile OpenType

Nel testo seguente vengono visualizzati numeri standard per il tipo di carattere Palatino Linotype, seguito da numeri di stile antico.

Text con set di numerali di stile precedente OpenType

Nell'esempio di markup seguente viene illustrato come definire numeri 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>

Figure 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 considerano ogni numero come una larghezza diversa: "1" è più stretto di "5". Le figure tabulari vengono considerate numeri di uguale larghezza in modo che siano allineate verticalmente, aumentando la leggibilità delle informazioni sul tipo finanziario.

Nel testo seguente si visualizzano due proporzioni nella prima colonna usando il tipo di carattere Miramonte. Si noti la differenza di larghezza tra i numerali "5" e "1". La seconda colonna mostra gli stessi due valori numerici con le larghezze regolate usando la caratteristica della figura tabulare.

Testo utilizzando figure proporzionali OpenType & tabulari

Nell'esempio di markup seguente viene mostrato come definire figure proporzionali e tabulari per il tipo di carattere Miramonte usando 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". Lo zero barrato viene spesso utilizzato come identificatore nelle informazioni finanziarie e aziendali.

Nel testo seguente viene visualizzato un esempio di identificativo d'ordine usando il tipo di carattere Miramonte. La prima riga usa numeri standard. La seconda riga usa numeri zero barrati per offrire un migliore contrasto con la lettera "O" maiuscola.

Testo con numeri zero con barre OpenType

Nell'esempio di markup riportato di seguito si mostra come definire le cifre zero barrate per il tipo di carattere Miramonte usando 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 Tipografia

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, seguito dalle lettere con stile "SmallCaps" e "AllSmallCaps". In questo caso, viene usata la stessa dimensione del carattere per tutte e tre le parole.

Testo con maiuscole OpenType

Nell'esempio di markup seguente viene illustrato come definire le maiuscole per il tipo di carattere Pescadero utilizzando le proprietà dell'oggetto Typography. Quando viene utilizzato il formato "SmallCaps", qualsiasi lettera maiuscola iniziale viene ignorata.

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

Nell'esempio di codice seguente viene eseguita 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

Vedere anche