Funzione GetGlyphOutlineA (wingdi.h)

La funzione GetGlyphOutline recupera la struttura o la bitmap per un carattere nel tipo di carattere TrueType selezionato nel contesto di dispositivo specificato.

Sintassi

DWORD GetGlyphOutlineA(
  [in]  HDC            hdc,
  [in]  UINT           uChar,
  [in]  UINT           fuFormat,
  [out] LPGLYPHMETRICS lpgm,
  [in]  DWORD          cjBuffer,
  [out] LPVOID         pvBuffer,
  [in]  const MAT2     *lpmat2
);

Parametri

[in] hdc

Handle per il contesto del dispositivo.

[in] uChar

Carattere per il quale devono essere restituiti i dati.

[in] fuFormat

Formato dei dati recuperati dalla funzione. Questo parametro può avere uno dei valori seguenti.

Valore Significato
GGO_BEZIER
La funzione recupera i dati della curva come spline di Bézier cubica (non in formato spline quadratico).
GGO_BITMAP
La funzione recupera la bitmap del glifo. Per informazioni sull'allocazione di memoria, vedere la sezione Osservazioni seguente.
GGO_GLYPH_INDEX
Indica che il parametro uChar è un indice glifo TrueType anziché un codice carattere. Per altre osservazioni sull'indicizzazione dei glifi, vedere la funzione ExtTextOut .
GGO_GRAY2_BITMAP
La funzione recupera una bitmap del glifo che contiene cinque livelli di grigio.
GGO_GRAY4_BITMAP
La funzione recupera una bitmap del glifo che contiene 17 livelli di grigio.
GGO_GRAY8_BITMAP
La funzione recupera una bitmap del glifo che contiene 65 livelli di grigio.
GGO_METRICS
La funzione recupera solo la struttura GLYPHMETRICS specificata da lpgm. LpvBuffer viene ignorato. Questo valore influisce sul significato del valore restituito della funzione in caso di errore; vedere la sezione Valori restituiti.
GGO_NATIVE
La funzione recupera i punti dati della curva nel formato nativo del rasterizzatore e usa le unità di progettazione del tipo di carattere.
GGO_UNHINTED
La funzione restituisce solo contorni non evidenziati. Questo flag funziona solo in combinazione con GGO_BEZIER e GGO_NATIVE.
 

Si noti che, per i valori di GGO_GRAYn_BITMAP, la funzione recupera una bitmap del glifo contenente n^2+1 (n quadrati più uno) livelli di grigio.

[out] lpgm

Puntatore alla struttura GLYPHMETRICS che descrive la posizione del glifo nella cella di caratteri.

[in] cjBuffer

Dimensioni, in byte, del buffer (*lpvBuffer) in cui la funzione deve copiare informazioni sul carattere di struttura. Se questo valore è zero, la funzione restituisce le dimensioni necessarie del buffer.

[out] pvBuffer

Puntatore al buffer che riceve informazioni sul carattere di struttura. Se questo valore è NULL, la funzione restituisce le dimensioni necessarie del buffer.

[in] lpmat2

Puntatore a una struttura MAT2 che specifica una matrice di trasformazione per il carattere.

Valore restituito

Se viene specificato GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP o GGO_NATIVE e la funzione ha esito positivo, il valore restituito è maggiore di zero; in caso contrario, il valore restituito è GDI_ERROR. Se viene specificato uno di questi flag e la dimensione del buffer o l'indirizzo è zero, il valore restituito specifica le dimensioni del buffer necessarie, in byte.

Se viene specificato GGO_METRICS e la funzione ha esito negativo, il valore restituito viene GDI_ERROR.

Commenti

Il contorno del glifo restituito dalla funzione GetGlyphOutline è per un glifo a griglia. Un glifo a griglia è un glifo modificato in modo che la sua immagine bitmap sia conforme al più possibile alla progettazione originale del glifo. Se un'applicazione necessita di una struttura del glifo non modificata, può richiedere il contorno del glifo per un carattere in un tipo di carattere la cui dimensione è uguale all'unità em del tipo di carattere. Il valore dell'unità em di un tipo di carattere viene archiviato nel membro otmEMSquare della struttura OUTLINETEXTMETRIC .

La bitmap del glifo restituita da GetGlyphOutline quando viene specificato GGO_BITMAP è una bitmap monocromatica allineata a DWORD, orientata alle righe. Quando si specifica GGO_GRAY2_BITMAP, la bitmap restituita è una matrice di byte allineata a DWORD e orientata alle righe i cui valori sono compresi tra 0 e 4. Quando viene specificato GGO_GRAY4_BITMAP, la bitmap restituita è una matrice DWORD allineata alle righe di byte i cui valori sono compresi tra 0 e 16. Quando si specifica GGO_GRAY8_BITMAP, la bitmap restituita è una matrice di byte orientata alle righe allineata a DWORD i cui valori sono compresi tra 0 e 64.

Il buffer nativo restituito da GetGlyphOutline quando viene specificato GGO_NATIVE è una struttura del glifo. Un contorno del glifo viene restituito come una serie di uno o più contorni definiti da una struttura TTPOLYGONHEADER seguita da una o più curve. Ogni curva nel contorno è definita da una struttura TTPOLYCURVE seguita da un numero di punti dati POINTFX . I punti POINTFX sono posizioni assolute, non spostamenti relativi. Il punto iniziale di un contorno viene assegnato dal membro pfxStart della struttura TTPOLYGONHEADER . Il punto iniziale di ogni curva è l'ultimo punto della curva precedente o il punto iniziale del contorno. Il conteggio dei punti dati in una curva viene archiviato nel membro cpfx della struttura TTPOLYCURVE . Le dimensioni di ogni contorno nel buffer, in byte, vengono archiviate nel membro cb della struttura TTPOLYGONHEADER . Le definizioni di curva aggiuntive vengono compresse nel buffer seguendo le curve precedenti e i contorni aggiuntivi vengono compressi nel buffer seguendo i contorni precedenti. Il buffer contiene il numero di contorni che rientrano nel buffer restituito da GetGlyphOutline.

La struttura GLYPHMETRICS specifica la larghezza della cella di caratteri e la posizione di un glifo all'interno della cella di caratteri. L'origine della cella di caratteri si trova sul lato sinistro della cella in corrispondenza della linea di base del tipo di carattere. La posizione dell'origine del glifo è relativa all'origine della cella di caratteri. L'altezza di una cella di caratteri, la linea di base e altre metriche globali per il tipo di carattere vengono date dalla struttura OUTLINETEXTMETRIC .

Un'applicazione può modificare i caratteri recuperati in formato bitmap o nativo specificando una matrice di trasformazione 2 by-2 nel parametro lpMatrix . Ad esempio, il glifo può essere modificato da un'enumere, dalla rotazione, dal ridimensionamento o da qualsiasi combinazione dei tre usando la moltiplicazione della matrice.

Altre informazioni sui contorni di un glifo sono disponibili nelle specifiche tecniche TrueType e OpenType.

Nota

L'intestazione wingdi.h definisce GetGlyphOutline come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice che non è indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzioni.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione wingdi.h (include Windows.h)
Libreria Gdi32.lib
DLL Gdi32.dll

Vedi anche

Exttextout

FORM_INFO_1

Funzioni per tipi di carattere e testo

Cenni preliminari su tipi di carattere e testo

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

PUNTO

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER