Glifi e esecuzioni di glifi
I glifi e le esecuzioni di glifi sono disponibili al livello più basso di funzionalità dell'API DirectWrite, il livello di rendering del glifo.
Glifi
Un glifo è una rappresentazione fisica di un carattere in un determinato tipo di carattere. I caratteri potrebbero avere molti glifi, con ogni tipo di carattere in un sistema che potenzialmente definisce un glifo diverso per quel carattere.
Due o più glifi possono anche essere combinati in un unico glifo, questo processo è detto composizione del glifo. Questa operazione può essere eseguita anche nella direzione opposta, un singolo glifo suddiviso in più glifi, noto come scomposizione del glifo.
Glifi alternativi
I tipi di carattere possono fornire glifi alternativi per i caratteri, ad esempio glifi alternativi stilistici per il tipo di carattere Pericles OpenType, come illustrato nella schermata seguente. I caratteri 'A', 'E' e 'O' vengono visualizzati con glifi alternativi stilistici.
Un altro esempio di glifi alternativi sono glifi di lavaggio. La schermata seguente mostra glifi standard e di lavaggio per il tipo di carattere Pescadero.
Gli swashes e altre funzionalità tipografiche, inclusi glifi alternativi più elaborati, sono disponibili tramite OpenType. Le funzionalità tipografiche OpenType possono essere applicate a un intervallo di testo usando la IDWriteTextLayout::SetTypography e passando la costante di enumerazione DWRITE_FONT_FEATURE_TAG associata alla funzionalità desiderata.
Esecuzioni di glifi
Una sequenza di glifi rappresenta un set contiguo di glifi con lo stesso tipo di carattere e dimensioni, nonché lo stesso effetto di disegno client, se presente. Sottolineatura e barratura non fanno parte dell'esecuzione del glifo per l'intervallo di testo a cui vengono applicati e vengono disegnati in un secondo momento. Anche gli oggetti inline, ad esempio le immagini, vengono disegnati separatamente, in quanto non fanno parte di un tipo di carattere.
Interfaccia IDWriteFontFace
DirectWrite usa lo stesso sistema per la classificazione dei tipi di carattere di Windows Presentation Foundation (WPF), quindi possono essere presenti più tipi di carattere fisici per ogni famiglia di caratteri. Un viso del tipo di carattere, ad esempio l'interfaccia IDWriteFontFace in DirectWrite, rappresenta un tipo di carattere fisico, con un peso, un'inclinazione e un tratto specifici. Contiene il tipo di carattere viso, i riferimenti di file appropriati, i dati di identificazione del viso e vari dati del tipo di carattere, ad esempio metriche, nomi e contorni del glifo.
Il IDWriteFontFace può essere creato direttamente da un nome di tipo di carattere o ottenuto da una raccolta di tipi di carattere.
Metriche del glifo
Ai singoli glifi sono associate metriche. È possibile ottenere le metriche per tutti i glifi in un glifo eseguito usando il metodo IDWriteFontFace::GetDesignGlyphMetrics. Viene restituita una struttura DWRITE_GLYPH_METRICS con larghezza avanzata, il cuscinetto lato sinistro e destro, il cuscinetto superiore e inferiore, l'altezza e l'origine della linea di base verticale.
Il diagramma seguente mostra varie metriche di due diversi caratteri glifi.
Disegno di una sequenza di glifi
Quando si implementa un renderer di testo personalizzato, il rendering dei glifi viene gestito dal IDWriteTextRenderer::D rawGlyphRun, un metodo di callback implementato come parte di una classe derivata da IDWriteTextRenderer. La struttura DWRITE_GLYPH_RUN passata a DrawGlyphRun contiene un oggettoIDWriteFontFace, denominato fontFace, che rappresenta il viso del tipo di carattere per l'intera esecuzione del glifo.
L'oggettoIDWriteFontFacefornisce anche il metodoGetGlyphRunOutline, che calcola i contorni del glifo usando un callback del sink geometry specificato, ad esempio ID2D1SimplifiedGeometrySink durante il rendering con Direct2D.
Per altre informazioni, vedere l'argomento Come implementare un renderer di testo personalizzato.