Funzionalità tipografiche di WPF

Questo argomento presenta le principali funzionalità tipografiche di WPF. Queste funzionalità includono qualità e prestazioni migliorate del rendering del testo, supporto tipografico OpenType, testo internazionale avanzato, supporto avanzato dei tipi di carattere e nuove API di programmazione delle applicazioni di testo.

Qualità e prestazioni del testo migliorate

Il rendering del testo in WPF viene eseguito usando Microsoft ClearType, che migliora la chiarezza e la leggibilità del testo. ClearType è una tecnologia software sviluppata da Microsoft che migliora la leggibilità del testo sugli LCD esistenti (Liquid Crystal Display), ad esempio schermi portatili, schermi Pocket PC e monitor a pannello piatto. ClearType usa il rendering dei sub pixel che consente di visualizzare il testo con una maggiore fedeltà alla forma reale allineando i caratteri su una parte frazionaria di un pixel. La risoluzione aggiuntiva aumenta la nitidezza dei piccoli dettagli nella visualizzazione del testo, rendendone più facile la lettura per periodi prolungati. Un altro miglioramento di ClearType in WPF è l'anti-aliasing di direzione y, che uniforma le curve superiori e inferiori delle curve superficiali nei caratteri di testo. Per altre informazioni sulle funzionalità di ClearType, vedere ClearType Overview.For more details on ClearType features, see ClearType Overview.

Text with ClearType y-direction anti-aliasing
Testo con anti-aliasing della direzione y ClearType

L'intera pipeline di rendering del testo può essere accelerata dall'hardware in WPF, purché il computer soddisfi il livello minimo di hardware richiesto. Se non è possibile eseguire il rendering tramite hardware, viene eseguito il rendering software. L'accelerazione hardware influisce su tutte le fasi della pipeline di rendering del testo, dall'archiviazione di singoli glifi, alla composizione di glifi nelle esecuzioni del glifo, all'applicazione degli effetti, all'applicazione dell'algoritmo di fusione ClearType all'output visualizzato finale. Per altre informazioni sull'accelerazione hardware, vedere Livelli di rendering della grafica.

Diagram of the text rendering pipeline

Inoltre, il testo animato, indipendentemente dal carattere o dal glifo, sfrutta appieno la funzionalità hardware grafica abilitata da WPF. con il risultato di ottenere un'animazione del testo uniforme.

Funzionalità tipografiche avanzate

Il formato del tipo di carattere OpenType è un'estensione del formato del tipo di carattere TrueType®. Il formato del tipo di carattere OpenType è stato sviluppato congiuntamente da Microsoft e Adobe e offre un'ampia gamma di funzionalità tipografiche avanzate. L'oggetto Typography espone molte delle funzionalità avanzate dei tipi di carattere OpenType, ad esempio alternative stilistiche e lavaggi. Windows SDK offre un set di tipi di carattere OpenType di esempio progettati con funzionalità avanzate, ad esempio i tipi di carattere Pericles e Pescadero. Per altre informazioni, vedere Esempio di pacchetto di tipi di carattere OpenType.

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

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

Per altre informazioni sulle funzionalità di OpenType, vedere OpenType Font Features.For more details on OpenType features, see OpenType Font Features.

Supporto del testo internazionale migliorato

WPF offre un supporto di testo internazionale avanzato fornendo le funzionalità seguenti:

  • Interlinea automatica in tutti i sistemi di scrittura, tramite misurazione adattiva.

  • Ampio supporto per il testo internazionale. Per altre informazioni, vedere Globalizzazione per WPF.

  • Interruzione di riga, sillabazione e giustificazione in base alla lingua.

Supporto dei tipi di carattere migliorato

WPF offre supporto avanzato per i tipi di carattere fornendo le funzionalità seguenti:

  • Unicode per ogni testo. Il comportamento e la selezione del tipo di carattere non richiedono più set di caratteri o tabelle codici.

  • Comportamento del tipo di carattere indipendente dalle impostazioni globali, ad esempio le impostazioni locali del sistema.

  • Separare FontWeighti tipi , FontStretche FontStyle per definire un oggetto FontFamily. Ciò offre maggiore flessibilità rispetto alla programmazione Win32, in cui vengono usate combinazioni booleane di corsivo e grassetto per definire una famiglia di caratteri.

  • Direzione di scrittura (orizzontale o verticale) gestita indipendentemente dal nome del carattere.

  • Collegamento dei tipi di carattere e fallback dei tipi di carattere in un file XML portabile, tramite la tecnologia dei tipi di carattere composita. I tipi di carattere compositi consentono la costruzione di una gamma completa di tipi di carattere multilingua. Offrono inoltre un meccanismo che evita la visualizzazione di glifi mancanti. Per altre informazioni, vedere le osservazioni nella FontFamily classe .

  • Tipi di carattere internazionali compilati da tipi di carattere compositi, mediante un gruppo di tipi di carattere di una singola lingua. In questo modo, si risparmiano risorse durante lo sviluppo dei tipi di carattere per più lingue.

  • Tipi di carattere compositi incorporati in un documento, per offrire maggiore portabilità dei documenti. Per altre informazioni, vedere le osservazioni nella FontFamily classe .

Nuove API (Application Programming Interface) di testo

WPF offre diverse API di testo che gli sviluppatori possono usare quando includono testo nelle applicazioni. Queste API sono raggruppate in tre categorie:

  • Layout e interfaccia utente. Controlli di testo comuni per l'interfaccia utente grafica (GUI).

  • Disegno di testo leggero. Consente di disegnare testo direttamente sugli oggetti.

  • Formattazione del testo avanzata. Consente di implementare un motore di testo personalizzato.

Layout e interfaccia utente

Al livello più elevato di funzionalità, le API di testo forniscono controlli comuni dell'interfaccia utente, ad Labelesempio , TextBlocke TextBox. Questi controlli forniscono gli elementi di base dell'interfaccia utente all'interno di un'applicazione e offrono un modo semplice per presentare e interagire con il testo. Controlli come RichTextBox e abilitare una PasswordBox gestione del testo più avanzata o specializzata. E classi come TextRange, TextSelectione TextPointer consentono una manipolazione del testo utile. Questi controlli dell'interfaccia utente forniscono proprietà come FontFamily, FontSizee FontStyle, che consentono di controllare il tipo di carattere usato per eseguire il rendering del testo.

Uso di effetti bitmap, trasformazioni ed effetti di testo

WPF consente di creare usi visivamente interessanti del testo usando funzionalità quali effetti bitmap, trasformazioni ed effetti di testo. L'esempio seguente illustra un tipico effetto di ombreggiatura applicato al testo.

Text shadow with Softness = 0.25

L'esempio seguente illustra un effetto di ombreggiatura con rumore applicato al testo.

Text shadow with noise

L'esempio seguente illustra un effetto di alone esterno applicato al testo.

Text shadow using an OuterGlowBitmapEffect

L'esempio seguente illustra un effetto di sfocatura applicato al testo.

Text shadow using a BlurBitmapEffect

Nell'esempio seguente la seconda riga del testo è ridimensionata del 150% lungo l'asse x, mentre la terza riga del testo è ridimensionata del 150% lungo l'asse y.

Text scaled using a ScaleTransform

Nell'esempio seguente il testo è inclinato lungo l'asse x.

Text skewed using a SkewTransform

Un TextEffect oggetto è un oggetto helper che consente di trattare il testo come uno o più gruppi di caratteri in una stringa di testo. L'esempio seguente mostra la rotazione di un singolo carattere. Ogni carattere viene ruotato in modo indipendente a intervalli di 1 secondo.

Screenshot of text effect rotating text

Uso di documenti dinamici

Oltre ai controlli comuni dell'interfaccia utente, WPF offre un controllo layout per la presentazione di testo, ovvero l'elemento FlowDocument . L'elemento FlowDocument , insieme all'elemento DocumentViewer , fornisce un controllo per grandi quantità di testo con requisiti di layout diversi. I controlli layout consentono l'accesso alla tipografia avanzata tramite l'oggetto Typography e le proprietà correlate al tipo di carattere di altri controlli dell'interfaccia utente.

L'esempio seguente mostra il contenuto di testo ospitato in un FlowDocumentReader, che fornisce supporto per la ricerca, la navigazione, la paginazione e il ridimensionamento del contenuto.

Screenshot that shows OpenType fonts.

Per altre informazioni, vedere Documenti in WPF.

Disegno di testo leggero

È possibile disegnare testo direttamente negli oggetti WPF usando il DrawText metodo dell'oggetto DrawingContext . Per utilizzare questo metodo, creare un FormattedText oggetto . Questo oggetto consente di creare testo su più righe, in cui ogni carattere può essere formattato singolarmente. La funzionalità dell'oggetto FormattedText contiene gran parte delle funzionalità dei flag DrawText nell'API Windows. Inoltre, l'oggetto FormattedText contiene funzionalità come il supporto dei puntini di sospensione, in cui viene visualizzato un puntino di sospensione quando il testo supera i limiti. L'esempio seguente illustra un testo a cui sono stati applicati diversi formati, inclusa una sfumatura lineare sulla seconda e la terza parola.

Text displayed using FormattedText object

È possibile convertire testo formattato in Geometry oggetti, consentendo di creare altri tipi di testo visivamente interessante. Ad esempio, è possibile creare un Geometry oggetto in base alla struttura di una stringa di testo.

Text outline using a linear gradient brush

Gli esempi seguenti illustrano diverse modalità di creazione di effetti visivi interessanti tramite la modifica del tratto, del riempimento e dell'evidenziazione del testo convertito.

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

Per altre informazioni sull'oggetto FormattedText , vedere Disegno di testo formattato.

Formattazione del testo avanzata

Al livello più avanzato delle API di testo, WPF offre la possibilità di creare layout di testo personalizzato usando l'oggetto TextFormatter e altri tipi nello spazio dei System.Windows.Media.TextFormatting nomi. Le TextFormatter classi associate e consentono di implementare layout di testo personalizzato che supporta la propria definizione di formati di caratteri, stili di paragrafo, regole di interruzione di riga e altre funzionalità di layout per il testo internazionale. Esistono pochissimi casi in cui si vuole eseguire l'override dell'implementazione predefinita del supporto del layout di testo WPF. Tuttavia, se si sta creando un controllo o un'applicazione di modifica del testo, potrebbe essere necessaria un'implementazione diversa rispetto all'implementazione wpf predefinita.

A differenza di un'API di testo tradizionale, interagisce TextFormatter con un client di layout di testo tramite un set di metodi di callback. Richiede al client di fornire questi metodi in un'implementazione della TextSource classe . Il diagramma seguente illustra l'interazione del layout di testo tra l'applicazione client e TextFormatter.

Diagram of text layout client and TextFormatter

Per informazioni dettagliate sulla creazione di layout di testo personalizzati, vedere Formattazione del testo avanzata.

Vedi anche