GetGlyphOutlineA, fonction (wingdi.h)

La fonction GetGlyphOutline récupère le plan ou l’image bitmap d’un caractère de la police TrueType sélectionnée dans le contexte d’appareil spécifié.

Syntaxe

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

Paramètres

[in] hdc

Handle dans le contexte de l’appareil.

[in] uChar

Caractère pour lequel les données doivent être retournées.

[in] fuFormat

Format des données que la fonction récupère. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
GGO_BEZIER
La fonction récupère les données de courbe sous la forme d’une spline Bézier cubique (pas au format spline quadratique).
GGO_BITMAP
La fonction récupère l’image bitmap du glyphe. Pour plus d’informations sur l’allocation de mémoire, consultez la section Remarques suivante.
GGO_GLYPH_INDEX
Indique que le paramètre uChar est un index Glyphe TrueType plutôt qu’un code de caractère. Pour plus d’informations sur l’indexation de Glyphe, consultez la fonction ExtTextOut .
GGO_GRAY2_BITMAP
La fonction récupère une bitmap de glyphe qui contient cinq niveaux de gris.
GGO_GRAY4_BITMAP
La fonction récupère une bitmap de glyphe qui contient 17 niveaux de gris.
GGO_GRAY8_BITMAP
La fonction récupère une bitmap de glyphe qui contient 65 niveaux de gris.
GGO_METRICS
La fonction récupère uniquement la structure GLYPHMETRICS spécifiée par lpgm. Le lpvBuffer est ignoré. Cette valeur affecte la signification de la valeur de retour de la fonction en cas d’échec ; consultez la section Valeurs de retour.
GGO_NATIVE
La fonction récupère les points de données de courbe dans le format natif du rastériseur et utilise les unités de conception de la police.
GGO_UNHINTED
La fonction retourne uniquement les contours non mis en forme. Cet indicateur fonctionne uniquement conjointement avec GGO_BEZIER et GGO_NATIVE.
 

Notez que, pour les valeurs GGO_GRAYn_BITMAP, la fonction récupère une bitmap de glyphe qui contient n^2+1 (n carré plus un) niveaux de gris.

[out] lpgm

Pointeur vers la structure GLYPHMETRICS décrivant l’emplacement du glyphe dans la cellule de caractères.

[in] cjBuffer

Taille, en octets, de la mémoire tampon (*lpvBuffer) où la fonction consiste à copier des informations sur le caractère de plan. Si cette valeur est égale à zéro, la fonction retourne la taille requise de la mémoire tampon.

[out] pvBuffer

Pointeur vers la mémoire tampon qui reçoit des informations sur le caractère de plan. Si cette valeur est NULL, la fonction retourne la taille requise de la mémoire tampon.

[in] lpmat2

Pointeur vers une structure MAT2 spécifiant une matrice de transformation pour le caractère.

Valeur retournée

Si GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP ou GGO_NATIVE est spécifié et que la fonction réussit, la valeur de retour est supérieure à zéro ; sinon, la valeur de retour est GDI_ERROR. Si l’un de ces indicateurs est spécifié et que la taille ou l’adresse de la mémoire tampon est égale à zéro, la valeur de retour spécifie la taille de mémoire tampon requise, en octets.

Si GGO_METRICS est spécifié et que la fonction échoue, la valeur de retour est GDI_ERROR.

Remarques

Le plan de glyphe retourné par la fonction GetGlyphOutline est pour un glyphe monté sur grille. (Un glyphe ajusté à la grille est un glyphe qui a été modifié afin que son image bitmap soit conforme au plus près de la conception d’origine du glyphe.) Si une application a besoin d’un plan de glyphe non modifié, elle peut demander au plan de glyphe un caractère dans une police dont la taille est égale à l’unité em de la police. La valeur de l’unité em d’une police est stockée dans le membre otmEMSquare de la structure OUTLINETEXTMETRIC .

L’image bitmap de glyphe retournée par GetGlyphOutline lorsque GGO_BITMAP est spécifiée est une bitmap monochrome alignée sur DWORD, orientée vers les lignes. Lorsque GGO_GRAY2_BITMAP est spécifié, la bitmap retournée est un tableau d’octets orienté ligne aligné sur DWORD dont les valeurs sont comprises entre 0 et 4. Lorsque GGO_GRAY4_BITMAP est spécifié, l’image bitmap retournée est un tableau d’octets orienté ligne aligné sur DWORD dont les valeurs sont comprises entre 0 et 16. Lorsque GGO_GRAY8_BITMAP est spécifié, la bitmap retournée est un tableau d’octets orienté ligne aligné sur DWORD dont les valeurs sont comprises entre 0 et 64.

La mémoire tampon native retournée par GetGlyphOutline lorsque GGO_NATIVE est spécifié est un plan de glyphe. Un contour de glyphe est retourné sous la forme d’une série d’un ou plusieurs contours définis par une structure TTPOLYGONHEADER suivie d’une ou plusieurs courbes. Chaque courbe du contour est définie par une structure TTPOLYCURVE suivie d’un certain nombre de points de données POINTFX . Les points POINTFX sont des positions absolues, et non des mouvements relatifs. Le point de départ d’un contour est donné par le membre pfxStart de la structure TTPOLYGONHEADER . Le point de départ de chaque courbe est le dernier point de la courbe précédente ou le point de départ du contour. Le nombre de points de données dans une courbe est stocké dans le membre cpfx de la structure TTPOLYCURVE . La taille de chaque contour de la mémoire tampon, en octets, est stockée dans le membre cb de la structure TTPOLYGONHEADER . D’autres définitions de courbes sont regroupées dans la mémoire tampon après les courbes précédentes, et des contours supplémentaires sont regroupés dans la mémoire tampon après les contours précédents. La mémoire tampon contient autant de contours qu’il convient dans la mémoire tampon retournée par GetGlyphOutline.

La structure GLYPHMETRICS spécifie la largeur de la cellule de caractère et l’emplacement d’un glyphe dans la cellule de caractères. L’origine de la cellule de caractères se trouve à gauche de la cellule, au niveau de la ligne de base de la police. L’emplacement de l’origine du glyphe est relatif à l’origine de la cellule de caractère. La hauteur d’une cellule de caractère, la ligne de base et d’autres métriques globales à la police sont données par la structure OUTLINETEXTMETRIC .

Une application peut modifier les caractères récupérés au format bitmap ou natif en spécifiant une matrice de transformation 2 par 2 dans le paramètre lpMatrix . Par exemple, le glyphe peut être modifié par cisaillement, rotation, mise à l’échelle ou toute combinaison des trois à l’aide de la multiplication matricielle.

Des informations supplémentaires sur les contours d’un glyphe se trouvent dans les spécifications techniques TrueType et OpenType.

Notes

L’en-tête wingdi.h définit GetGlyphOutline comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête wingdi.h (inclure Windows.h)
Bibliothèque Gdi32.lib
DLL Gdi32.dll

Voir aussi

ExtTextOut

FORM_INFO_1

Fonctions police et texte

Vue d’ensemble des polices et du texte

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

POINT

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER