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
- JOHAB_CHARSET
- ARABIC_CHARSET
- HEBREW_CHARSET
- THAI_CHARSET
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
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
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) |