Partager via


STRUCTURE LOGFONTW (wingdi.h)

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

Syntaxe

typedef struct tagLOGFONTW {
  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;
  WCHAR lfFaceName[LF_FACESIZE];
} LOGFONTW, *PLOGFONTW, *NPLOGFONTW, *LPLOGFONTW;

Membres

lfHeight

Hauteur, en unités logiques, de la cellule de caractère ou du caractère de la police. La valeur de hauteur du 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 police 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 correspond à la hauteur des cellules des polices disponibles.
0 Le mappeur de police 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 correspond à sa valeur absolue par rapport à la hauteur des polices disponibles.
 

Pour toutes les comparaisons de hauteur, le mappeur de police recherche la police la plus grande 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 dans la police. Si lfWidth est égal à zéro, le rapport d’aspect de l’appareil est mis en correspondance avec le ratio 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 comprise entre 0 et 1 000. Par exemple, 400 est normal et 700 est en gras. Si cette valeur est égale à zéro, un poids par défaut est utilisé.

Les valeurs suivantes sont définies pour des raisons pratiques.

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 de grève 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 de langue coréenne de Windows :
  • JOHAB_CHARSET
Édition linguistique du Moyen-Orient de Windows :
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Édition de langue thaïlandaise 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), il est défini comme ANSI_CHARSET.

Les 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 des chaînes rendues avec cette police.

Ce paramètre est important dans le processus de mappage de police. Pour garantir la cohérence des résultats 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, vérifiez que la valeur lfCharSet correspond au jeu de caractères de la police spécifiée dans lfFaceName.

lfOutPrecision

Précision de sortie. La précision de sortie définit la précision de la sortie qui doit correspondre à la hauteur, à la largeur, à l’orientation du caractère, à l’échappement, au pitch et au type de police demandés. Il peut s’agir de 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 police de choisir parmi TrueType et d’autres polices basées sur des contours.
OUT_PS_ONLY_PRECIS Indique au mappeur de police de choisir parmi uniquement les polices PostScript. S’il n’existe aucune police PostScript installée dans le système, le mappeur de polices retourne 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 des contours et des polices vectorielles sont énumérées.
OUT_TT_ONLY_PRECIS Indique au mappeur de police de choisir parmi uniquement les polices TrueType. S’il n’y a pas de polices TrueType installées 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 avec un nom spécifié. Par exemple, si un système d’exploitation contient une police nommée Symbol sous forme raster et TrueType, en spécifiant OUT_TT_PRECIS force le mappeur de police à choisir la version trueType. La spécification OUT_TT_ONLY_PRECIS force le mappeur de police à choisir une police TrueType, même si elle doit remplacer une police TrueType d’un autre nom.

lfClipPrecision

Précision de découpage. La précision de découpage définit comment découper des caractères 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 polices pour la police. Notez que cet indicateur n’est pas garanti pour avoir un effet sur n’importe quelle plateforme après Windows Server 2003.
CLIP_EMBEDDED Vous devez spécifier cet indicateur pour utiliser une police en lecture seule incorporée.
CLIP_LH_ANGLES Lorsque cette valeur est utilisée, la rotation de toutes les polices varie selon que l’orientation du système de coordonnées est gaucher ou droitier. Si elles ne sont pas utilisées, les polices de l’appareil pivotent toujours dans le sens inverse, mais la rotation d’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 polices 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 les polices raster, vector ou TrueType sont énumérées. Pour la 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 façon dont l’interface d’appareil graphique (GDI) doit tenter de faire correspondre les attributs de police logique à ceux d’une police physique réelle. Il peut s’agir de l’une des valeurs suivantes.

Valeur Signification
ANTIALIASED_QUALITY La police est toujours antialiased 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’antialiasing ClearType. Pour plus d’informations, consultez les remarques.
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ée. Pour les polices raster GDI, la mise à l’échelle est activée, ce qui signifie que plus de tailles de police sont disponibles, mais 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 de la taille est choisie. Bien que la taille de police choisie ne soit pas mappée exactement lorsque PROOF_QUALITY est utilisée, 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 aucune ANTIALIASED_QUALITY ni NONANTIALIASED_QUALITY n’est sélectionnée, la police est anticrénelée uniquement si l’utilisateur choisit des polices d’écran lisses dans le Panneau de configuration.

lfPitchAndFamily

La hauteur et la famille de la police. Les deux bits de faible ordre spécifient l’emplacement 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 OR au niveau du bit (|) 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. Ils sont destinés à spécifier des polices lorsque la police exacte souhaitée n’est pas disponible. Les valeurs des familles de polices sont les suivantes.

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

lfFaceName[LF_FACESIZE]

Chaîne terminée par null qui spécifie le nom de police de la police. La longueur de cette chaîne ne doit pas dépasser 32 valeurs TCHAR, y compris la fin NULL. 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’antialiasing ClearType :

  • Le texte est affiché sur une imprimante.
  • Affichage défini pour 256 couleurs ou moins.
  • Le texte est rendu sur un client de serveur terminal.
  • 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’antialiasing ClearType : polices type 1, polices Postscript OpenType 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 généralement dans les polices d’Asie de l’Est.

Note

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

Exigences

Exigence Valeur
client minimum pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
serveur minimum pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
d’en-tête wingdi.h (include Windows.h)

Voir aussi

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

structures de police et de texte

Vue d’ensemble des polices et du texte