Condividi tramite


Glifi e esecuzioni di glifi

Glifi e esecuzioni 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 potenzialmente definendo un glifo diverso per tale carattere.

Due o più glifi possono essere combinati anche in un singolo glifo, questo processo è denominato composizione del glifo. Questa operazione può essere eseguita anche nella direzione opposta, un singolo glifo diviso 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.

screen shot of

Un altro esempio di glifi alternativi sono glifi di lavaggio. La schermata seguente mostra glifi standard e swash per il tipo di carattere Pescadero.

screen shot of the letters

Glifi alternativi più elaborati sono disponibili tramite OpenType e altre funzionalità tipografiche, tra cui glifi alternativi più elaborati. Le funzionalità tipografiche OpenType possono essere applicate a un intervallo di testo usando IDWriteTextLayout::SetTypography e passando la costante di enumerazione DWRITE_FONT_FEATURE_TAG associata alla funzionalità desiderata.

Esecuzioni di glifi

Un glifo eseguito rappresenta un set contiguo di glifi che hanno lo stesso viso e dimensione del carattere, 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 applicate e vengono disegnate in un secondo momento. Gli oggetti inline, ad esempio le immagini, vengono anche disegnati separatamente, perché non fanno parte di un tipo di carattere.

Interfaccia IDWriteFontFace

DirectWrite usa lo stesso sistema per la classificazione dei tipi di carattere di Windows Pesentation Foundation (WPF), in modo che siano presenti più tipi di carattere fisici per ogni famiglia di caratteri. Un viso di tipo carattere, ad esempio l'interfaccia IDWriteFontFace in DirectWrite, rappresenta un tipo di carattere fisico, con un peso specifico, lo slante e l'estensione. Contiene il tipo di viso del tipo di carattere, i riferimenti di file appropriati, i dati di identificazione viso e vari dati di tipo carattere, ad esempio metriche, nomi e contorni del glifo.

L'IDWriteFontFace può essere creato direttamente da un nome di carattere o ottenuto da una raccolta di caratteri.

Metrica del glifo

I singoli glifi hanno metriche associate a loro. È possibile ottenere le metriche per tutti i glifi in un glifo eseguito usando il metodo IDWriteFontFace::GetDesignGlyphMetrics . Restituisce una struttura DWRITE_GLYPH_METRICS che ha la larghezza avanzata, il bordo sinistro e destro, il bordo superiore e inferiore, l'altezza e l'origine della baseline verticale.

Il diagramma seguente mostra varie metriche di due caratteri glifi diversi.

diagram of the metrics of two different glyphs

Disegno di un glifo run

Quando si implementa un renderer di testo personalizzato, il rendering degli glifi viene gestito dall'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 oggetto IDWriteFontFace , denominato fontFace, che rappresenta il viso del carattere per l'intera esecuzione del glifo.

L'oggetto IDWriteFontFace fornisce anche il metodo GetGlyphRunOutline , 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 .