Partager via


Structure LOGFONTA (shtypes.h)

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[32];
} LOGFONTA;

Membres

lfHeight

Type : LONG

Spécifie la hauteur, en unités logiques, de la cellule de caractères ou du 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 police interprète la valeur spécifiée dans lfHeight de la manière suivante.

Valeur Description
> 0 Le mappeur de police transforme cette valeur en unités d’appareil et la met en correspondance avec la hauteur de cellule 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 fait correspondre sa valeur absolue à la hauteur de caractères des polices disponibles.
 

Pour toutes les comparaisons de hauteur, le mappeur de polices 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 donnée.

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

MulDiv est défini comme suit :

#define MulDiv(a,b,c)    (((a)*(b))/(c))

lfWidth

Type : LONG

Spécifie la largeur moyenne, en unités logiques, des caractères de la police. Si lfWidth n’est pas égal à zéro, les proportions de l’appareil sont mises en correspondance avec les proportions 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

Type : LONG

Spécifie l'angle, en dixièmes de degrés, entre le vecteur d'échappement et l'axe des abscisses du périphérique. Le vecteur d’échappement est parallèle à la ligne de base d’une ligne de texte.

Le membre lfEscapement spécifie à la fois l’échappement et l’orientation. Vous devez définir lfEscapement et lfOrientation sur la même valeur.

lfOrientation

Type : LONG

Spécifie l'angle, en dixièmes de degrés, entre la ligne de base de chaque caractère et l'axe des abscisses du périphérique.

lfWeight

Type : LONG

Spécifie l'épaisseur de la police peut être comprise 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 dans Wingdi.h 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

Type : BYTE

TRUE pour spécifier une police italique.

lfUnderline

Type : BYTE

TRUE pour spécifier une police soulignée.

lfStrikeOut

Type : BYTE

TRUE pour spécifier une police barré.

lfCharSet

Type : BYTE

Spécifie le 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
 
Windows coréen
JOHAB_CHARSET
 
Middle-Eastern Windows
HEBREW_CHARSET
ARABIC_CHARSET
 
Windows thaï
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), la valeur est 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 membre est important dans le processus de mappage des polices. Pour garantir la cohérence des résultats, spécifiez un jeu de caractères spécifique. 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 spécifiée dans lfFaceName.

lfOutPrecision

Type : BYTE

Spécifie la précision de sortie. La précision de sortie définit la mesure dans laquelle la sortie doit correspondre à la hauteur, à la largeur, à l’orientation des caractères, à l’échappement, à la hauteur et au type de police de la police demandée. Il peut s’agir de l’une des valeurs suivantes définies dans Wingdi.h :

Valeur Description
OUT_DEFAULT_PRECIS Spécifie le comportement du mappeur de polices par défaut.
OUT_RASTER_PRECIS Indique au mappeur de polices 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.

lfClipPrecision

Type : BYTE

Spécifie la 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 définies dans Wingdi.h :

Valeur Description
CLIP_DEFAULT_PRECIS Spécifie le comportement de découpage par défaut.
CLIP_CHARACTER_PRECIS Non utilisé.
CLIP_STROKE_PRECIS Non utilisé par le mappeur de polices, mais est retourné lorsque des polices raster, vector ou TrueType sont énumérées.

lfQuality

Type : BYTE

Spécifie la qualité de sortie. La qualité de sortie définit la façon dont le GDI doit essayer 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 définies dans Wingdi.h :

Valeur Description
ANTIALIASED_QUALITY Active l’anticrénelage pour la police. Le pilote d’affichage doit prendre en charge le texte anticrénel pour que ce paramètre fonctionne.
NONANTIALIASED_QUALITY Force l’utilisation de la qualité du brouillon lorsque la sous-clé de Registre HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing est présente.
CLEARTYPE_COMPAT_QUALITY Active le texte ClearType pour la police à l’aide de largeurs compatibles. Une largeur compatible produit du texte qui a le même espacement que le texte non ClearType.
CLEARTYPE_QUALITY Active le texte ClearType pour la police. Le pilote d’affichage doit prendre en charge le texte ClearType pour que ce paramètre fonctionne.
DEFAULT_QUALITY L’apparence de la police n’a pas d’importance.
DRAFT_QUALITY 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.

lfPitchAndFamily

Type : BYTE

Spécifie la hauteur et le groupe de la police. Les deux bits d’ordre inférieur spécifient la hauteur de la police et peuvent être l’une des valeurs suivantes définies dans Wingdi.h :

  • DEFAULT_PITCH
  • FIXED_PITCH
  • MONO_FONT
  • VARIABLE_PITCH
Les bits 4 à 7 du membre spécifient le groupe de polices et peuvent être l’une des valeurs suivantes définies dans Wingdi.h :
  • 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 tangage à 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 exacte souhaitée n’est pas disponible. Les valeurs des familles de polices sont les suivantes :

Valeur Description
FF_DECORATIVE Polices de nouveauté, par exemple, ancien anglais.
FF_DONTCARE Ne vous en souciez pas ou ne savez pas.
FF_MODERN Polices avec une largeur de trait constante (monospace), avec ou sans empattements. Les polices monospace sont généralement modernes, par exemple Pica, Elite et Courier New.
FF_ROMAN Polices avec une largeur de trait variable (proportionnelle) et avec des empattements, par exemple, Serif.
FF_SCRIPT Polices conçues pour ressembler à l’écriture manuscrite, par exemple Script et Cursive.
FF_SWISS Polices avec une largeur de trait variable (proportionnelle) et sans empattements, par exemple, Sans Serif.

lfFaceName[32]

Type : TCHAR[LF_FACESIZE]

Spécifie une chaîne terminée par un caractère Null qui spécifie le nom de police de la police. La longueur de cette chaîne ne doit pas dépasser 32 caractères, y compris le caractère null de fin. La fonction EnumFontFamilies 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 Microsoft 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 ajusté les 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.
Cette structure est apparue pour la première fois dans Shtypes.idl et Shtypes.h dans Windows Vista, pour faciliter l’utilisation avec les membres de l’interface IVisualProperties . Toutefois, la structure identique est définie dans Wingdi.h et Windows.h dans les versions antérieures de Windows.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
En-tête shtypes.h (inclure Shtypes.h, Dimm.h)

Voir aussi

IVisualProperties ::GetFont

IVisualProperties ::SetFont