Structure LOGFONTA (wingdi.h)

La structure LOGFONT définit les attributs d’une police.

Syntaxe

typedef struct tagLOGFONTA {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;

Membres

lfHeight

Hauteur, en unités logiques, de la cellule ou du caractère de caractère de la police. La valeur de hauteur de caractère (également appelée hauteur em) est la valeur de hauteur de cellule de caractère moins la valeur de début interne. Le mappeur de polices interprète la valeur spécifiée dans lfHeight de la manière suivante.

Valeur Signification
> 0 Le mappeur de police transforme cette valeur en unités d’appareil et la fait correspondre à la hauteur de cellule des polices disponibles.
0 Le mappeur de polices utilise une valeur de hauteur par défaut lorsqu’il recherche une correspondance.
< 0 Le mappeur de police transforme cette valeur en unités d’appareil et fait correspondre sa valeur absolue à la hauteur de caractères des polices disponibles.
 

Pour toutes les comparaisons de hauteur, le mappeur de police recherche la plus grande police qui ne dépasse pas la taille demandée.

Ce mappage se produit lorsque la police est utilisée pour la première fois.

Pour le mode de mappage MM_TEXT, vous pouvez utiliser la formule suivante pour spécifier une hauteur pour une police avec une taille de point spécifiée :


lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

Largeur moyenne, en unités logiques, des caractères de la police. Si lfWidth est égal à zéro, le rapport d’aspect de l’appareil est mis en correspondance avec le rapport d’aspect de numérisation des polices disponibles pour trouver la correspondance la plus proche, déterminée par la valeur absolue de la différence.

lfEscapement

Angle, en dixièmes de degrés, entre le vecteur d’échappement et l’axe X de l’appareil. Le vecteur d’échappement est parallèle à la ligne de base d’une ligne de texte.

Lorsque le mode graphique est défini sur GM_ADVANCED, vous pouvez spécifier l’angle d’échappement de la chaîne indépendamment de l’angle d’orientation des caractères de la chaîne.

Lorsque le mode graphique est défini sur GM_COMPATIBLE, lfEscapement spécifie à la fois l’échappement et l’orientation. Vous devez définir lfEscapement et lfOrientation sur la même valeur.

lfOrientation

Angle, en dixièmes de degrés, entre la ligne de base de chaque caractère et l’axe X de l’appareil.

lfWeight

Poids de la police entre 0 et 1000. Par exemple, 400 est normal et 700 en gras. Si cette valeur est égale à zéro, une pondération par défaut est utilisée.

Les valeurs suivantes sont définies par souci de commodité.

Valeur Poids
FW_DONTCARE 0
FW_THIN 100
FW_EXTRALIGHT 200
FW_ULTRALIGHT 200
FW_LIGHT 300
FW_NORMAL 400
FW_REGULAR 400
FW_MEDIUM 500
FW_SEMIBOLD 600
FW_DEMIBOLD 600
FW_BOLD 700
FW_EXTRABOLD 800
FW_ULTRABOLD 800
FW_HEAVY 900
FW_BLACK 900

lfItalic

Police italique si définie sur TRUE.

lfUnderline

Police soulignée si définie sur TRUE.

lfStrikeOut

Police barré si elle est définie sur TRUE.

lfCharSet

Jeu de caractères. Les valeurs suivantes sont prédéfinies :

  • ANSI_CHARSET
  • BALTIC_CHARSET
  • CHINESEBIG5_CHARSET
  • DEFAULT_CHARSET
  • EASTEUROPE_CHARSET
  • GB2312_CHARSET
  • GREEK_CHARSET
  • HANGUL_CHARSET
  • MAC_CHARSET
  • OEM_CHARSET
  • RUSSIAN_CHARSET
  • SHIFTJIS_CHARSET
  • SYMBOL_CHARSET
  • TURKISH_CHARSET
  • VIETNAMESE_CHARSET
Édition en coréen de Windows :
  • JOHAB_CHARSET
Édition en langue du Moyen-Orient de Windows :
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Édition en langue thaï de Windows :
  • THAI_CHARSET
La valeur OEM_CHARSET spécifie un jeu de caractères dépendant du système d’exploitation.

DEFAULT_CHARSET est défini sur une valeur basée sur les paramètres régionaux système actuels. Par exemple, lorsque les paramètres régionaux système sont anglais (États-Unis), ils sont définis comme ANSI_CHARSET.

Des polices avec d’autres jeux de caractères peuvent exister dans le système d’exploitation. Si une application utilise une police avec un jeu de caractères inconnu, elle ne doit pas tenter de traduire ou d’interpréter les chaînes rendues avec cette police.

Ce paramètre est important dans le processus de mappage des polices. Pour garantir des résultats cohérents lors de la création d’une police, ne spécifiez pas OEM_CHARSET ou DEFAULT_CHARSET. Si vous spécifiez un nom de police dans le membre lfFaceName , assurez-vous que la valeur lfCharSet correspond au jeu de caractères de la police de type spécifiée dans lfFaceName.

lfOutPrecision

Précision de sortie. La précision de sortie définit à quel point la sortie doit correspondre à la hauteur, à la largeur, à l’orientation des caractères, à l’échappement, au pitch et au type de police de la police demandée. Il peut avoir l’une des valeurs suivantes.

Valeur Signification
OUT_CHARACTER_PRECIS Non utilisé.
OUT_DEFAULT_PRECIS Spécifie le comportement du mappeur de police par défaut.
OUT_DEVICE_PRECIS Indique au mappeur de police de choisir une police d’appareil lorsque le système contient plusieurs polices portant le même nom.
OUT_OUTLINE_PRECIS Cette valeur indique au mappeur de polices de choisir parmi TrueType et d’autres polices basées sur un plan.
OUT_PS_ONLY_PRECIS Indique au mappeur de polices de choisir uniquement des polices PostScript. Si aucune police PostScript n’est installée dans le système, le mappeur de polices revient au comportement par défaut.
OUT_RASTER_PRECIS Indique au mappeur de police de choisir une police raster lorsque le système contient plusieurs polices portant le même nom.
OUT_STRING_PRECIS Cette valeur n’est pas utilisée par le mappeur de polices, mais elle est retournée lorsque les polices raster sont énumérées.
OUT_STROKE_PRECIS Cette valeur n’est pas utilisée par le mappeur de polices, mais elle est retournée lorsque TrueType, d’autres polices basées sur un plan et des polices vectorielles sont énumérées.
OUT_TT_ONLY_PRECIS Indique au mappeur de polices de choisir uniquement parmi les polices TrueType. Si aucune police TrueType n’est installée dans le système, le mappeur de polices retourne au comportement par défaut.
OUT_TT_PRECIS Indique au mappeur de police de choisir une police TrueType lorsque le système contient plusieurs polices portant le même nom.
 

Les applications peuvent utiliser les valeurs OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS et OUT_PS_ONLY_PRECIS pour contrôler la façon dont le mappeur de police choisit une police lorsque le système d’exploitation contient plusieurs polices portant un nom spécifié. Par exemple, si un système d’exploitation contient une police nommée Symbol au format raster et TrueType, la spécification OUT_TT_PRECIS force le mappeur de police à choisir la version trueType. La spécification de OUT_TT_ONLY_PRECIS force le mappeur de police à choisir une police TrueType, même s’il doit remplacer une police TrueType d’un autre nom.

lfClipPrecision

Précision du découpage. La précision du découpage définit comment découper des caractères qui se trouvent partiellement en dehors de la zone de découpage. Il peut s’agir d’une ou plusieurs des valeurs suivantes.

Pour plus d’informations sur l’orientation des systèmes de coordonnées, consultez la description du paramètre nOrientation .

Valeur Signification
CLIP_CHARACTER_PRECIS Non utilisé.
CLIP_DEFAULT_PRECIS Spécifie le comportement de découpage par défaut.
CLIP_DFA_DISABLE Windows XP SP1 : Désactive l’association de police pour la police. Notez que cet indicateur n’a aucun effet sur une plateforme après Windows Server 2003.
CLIP_EMBEDDED Vous devez spécifier cet indicateur pour utiliser une police incorporée en lecture seule.
CLIP_LH_ANGLES Lorsque cette valeur est utilisée, la rotation de toutes les polices dépend de l’orientation du système de coordonnées de gauche ou droitier. Si elles ne sont pas utilisées, les polices d’appareil pivotent toujours dans le sens inverse des aiguilles d’une montre, mais la rotation des autres polices dépend de l’orientation du système de coordonnées.
CLIP_MASK Non utilisé.
CLIP_DFA_OVERRIDE Désactive l’association de police pour la police. Cela est identique à CLIP_DFA_DISABLE, mais il peut avoir des problèmes dans certaines situations; l’indicateur recommandé à utiliser est CLIP_DFA_DISABLE.
CLIP_STROKE_PRECIS Non utilisé par le mappeur de polices, mais est retourné lorsque des polices raster, vector ou TrueType sont énumérées. À des fins de compatibilité, cette valeur est toujours retournée lors de l’énumération des polices.
CLIP_TT_ALWAYS Non utilisé.

lfQuality

Qualité de sortie. La qualité de sortie définit la manière avec laquelle l’interface de périphérique graphique (GDI) doit tenter de faire correspondre les attributs de police logique à ceux d’une police physique réelle. Il peut avoir l’une des valeurs suivantes.

Valeur Signification
ANTIALIASED_QUALITY La police est toujours anti-aaliased si la police la prend en charge et que la taille de la police n’est pas trop petite ou trop grande.
CLEARTYPE_QUALITY Si la valeur est définie, le texte est rendu (si possible) à l’aide de la méthode d’anti-ataliasing ClearType. Pour plus d'informations, consultez la section Notes.
DEFAULT_QUALITY L’apparence de la police n’a pas d’importance.
DRAFT_QUALITY L’apparence de la police est moins importante que lorsque PROOF_QUALITY est utilisé. Pour les polices raster GDI, la mise à l’échelle est activée, ce qui signifie que davantage de tailles de police sont disponibles, mais que la qualité peut être inférieure. Les polices gras, italiques, soulignées et barrés sont synthétisées si nécessaire.
NONANTIALIASED_QUALITY La police n’est jamais antialiased.
PROOF_QUALITY La qualité des caractères de la police est plus importante que la correspondance exacte des attributs de police logique. Pour les polices raster GDI, la mise à l’échelle est désactivée et la police la plus proche est choisie. Bien que la taille de police choisie ne soit pas mappée exactement lorsque PROOF_QUALITY est utilisé, la qualité de la police est élevée et il n’y a pas de distorsion de l’apparence. Les polices gras, italiques, soulignées et barrés sont synthétisées si nécessaire.
 

Si ni ANTIALIASED_QUALITY ni NONANTIALIASED_QUALITY n’est sélectionné, la police n’est pas activée uniquement si l’utilisateur choisit des polices d’écran lisses dans Panneau de configuration.

lfPitchAndFamily

Pitch et famille de la police. Les deux bits d’ordre inférieur spécifient le pitch de la police et peuvent être l’une des valeurs suivantes.

  • DEFAULT_PITCH
  • FIXED_PITCH
  • VARIABLE_PITCH
Les bits 4 à 7 du membre spécifient la famille de polices et peuvent être l’une des valeurs suivantes.
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
La valeur appropriée peut être obtenue à l’aide de l’opérateur Boolean OR pour joindre une constante de pas à une constante de famille.

Les familles de polices décrivent l’apparence d’une police de manière générale. Elles sont destinées à spécifier des polices lorsque la police de type exacte souhaitée n’est pas disponible. Les valeurs des familles de polices sont les suivantes.

Valeur Signification
FF_DECORATIVE Polices de nouveauté. Le gothique en est un exemple.
FF_DONTCARE Utilisez la police par défaut.
FF_MODERN Polices avec une largeur de trait constante (monospace), avec ou sans empattements. Les polices monospace sont généralement modernes. Pica, Elite et CourierNew en sont des exemples.
FF_ROMAN Polices avec une largeur de trait variable (proportionnelle) et avec des empattements. MS Serif en est un exemple.
FF_SCRIPT Polices conçues pour ressembler à de l’écriture manuscrite. Script et Cursive en sont des exemples.
FF_SWISS Polices avec une largeur de trait variable (proportionnelle) et sans empattements. MS Sans Serif en est un exemple.

lfFaceName[LF_FACESIZE]

Chaîne terminée par le caractère NULL qui indique le nom de la police. La longueur de cette chaîne ne doit pas dépasser 32 valeurs TCHAR , y compris la valeur NULL de fin. La fonction EnumFontFamiliesEx peut être utilisée pour énumérer les noms de police de toutes les polices actuellement disponibles. Si lfFaceName est une chaîne vide, GDI utilise la première police qui correspond aux autres attributs spécifiés.

Remarques

Les situations suivantes ne prennent pas en charge l’anticrénelage ClearType :

  • Le texte est affiché sur une imprimante.
  • Affichage défini pour 256 couleurs ou moins.
  • Le texte est affiché dans un client Terminal Server.
  • La police n’est pas une police TrueType ou une police OpenType avec des contours TrueType. Par exemple, les éléments suivants ne prennent pas en charge l’anticrénelage ClearType : polices de type 1, polices OpenType Postscript sans contours TrueType, polices bitmap, polices vectorielles et polices d’appareil.
  • La police a paramétré des bitmaps incorporées, pour toutes les tailles de police qui contiennent les bitmaps incorporées. Par exemple, cela se produit couramment dans les polices d’Asie de l’Est.

Notes

L’en-tête wingdi.h définit LOGFONT 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. La combinaison 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

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
En-tête wingdi.h (inclure Windows.h)

Voir aussi

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

Structures de police et de texte

Vue d’ensemble des polices et du texte