INFO : Récupération de styles de police à l'aide de EnumFontFamilies()

Traductions disponibles Traductions disponibles
Numéro d'article: 84131 - Voir les produits auxquels s'applique cet article
Cet article a été archivé. Il est proposé « en l'état » et ne sera plus mis à jour.
Agrandir tout | Réduire tout

Résumé

Windows version 3.1 introduit le concept d'un style de police. Dans les versions précédentes de Windows, une police peut ont les propriétés en italique, souligné et barré gras, qui ont été pris en charge par les membres respectifs dans les structures LOGFONT et TEXTMETRIC . Windows 3.1 prend également en charge ces propriétés, ainsi un nom de style pour les polices TrueType. Il explique comment obtenir le nom de style de police pendant l'énumération de police, à l'aide de la fonction EnumFontFamilies . Pour plus d'informations obtenir des informations de style sans l'énumération des polices, requête sur les mots suivants dans la Base de connaissances :
prod(winsdk) et getoutlinetextmetrics

Plus d'informations

Dans Windows 3.1, « style » désigne l'épaisseur et la oblique d'une police. Windows prend en charge un vaste éventail d'épaisseurs de dans le membre lfWeight de la structure de LOGFONT . (Les deux exemples d'épaisseurs de sont FW_BOLD, qui est définie comme 700, et FW_THIN, qui est définie comme 100). Très peu d'applications, toutefois, utiliser pondérations autres que FW_BOLD et FW_DONTCARE (défini à 0).

Windows 3.1 s'appuie sur la prise en charge actuellement dans Windows de ces variantes de poids et oblique. Les noms de style sont non utilisés dans la structure LOGFONT , sauf lorsque les polices sont énumérés avec EnumFontFamilies.

La boîte de dialogue ChooseFont dans les zones boîte de dialogue courantes COMMDLG.DLL (Dynamic-Link Library) illustre comment les noms de style sont. La boîte de dialogue ChooseFont contient deux zones de liste : Police et style. La zone de liste police affiche les noms d'image pour toutes les polices installées et la zone de liste style de police répertorie les styles de police pour l'image sélectionnée. Par exemple, si toute police TrueType non (tels que MS Sans Serif) est sélectionnée, les styles suivants apparaissent dans la zone de liste style de police :
   Regular
   Bold
   Italic
   Bold Italic
				
les polices TrueType disposez ces ou plus développer styles. Par exemple, l'image « Lucida sans » inclut les noms de style suivants :
   Regular
   Italic
   Demibold Roman
   Demibold Italic
				
dans le cas de Lucida sans avec le style de Demibold Roman ou Demibold italique, la valeur lfWeight est 600 (FW_DEMIBOLD).

Dans Windows 3.1, la fonction EnumFontFamilies peut être utilisée pour obtenir le nom de style d'une police pendant l'énumération de police. La fonction EnumFontFamilies fonctionne de manière très similaire à la fonction Windows 3.0 EnumFonts .

La fonction EnumFontFamilies est prototypée comme suit :
   int EnumFontFamilies(HDC hdc, LPCSTR lpszFamily,
                        FONTENUMPROC lpfnEnumProc, LPARAM lpData)
				
le paramètre lpszFamily pointe vers une chaîne terminée par le caractère null qui spécifie le nom de famille (ou nom de police) des polices de votre choix. Si ce paramètre est nul, EnumFontFamilies sélectionne et énumère une police de chaque famille de polices disponibles. Par exemple, pour énumérer toutes les polices de la famille de « Arial », lpszFamily pointe vers une chaîne de tampon contenant « Arial ».

Le tableau suivant illustre la signification des termes, « nom de police », « nom de la police, style de police » et «: »
   Typeface Name  Font Name                    Font Style
   -------------  ---------                    ----------
   Arial          Arial                        Regular
                  Arial Bold                   Bold
                  Arial Italic                 Italic
                  Arial Bold Italic            Bold Italic

   Courier New    Courier New                  Regular
                  Courier New Bold             Bold
                  Courier New Italic           Italic
                  Courier New Bold Italic      Bold Italic

   Lucida Sans    Lucida Sans                  Regular
                  Lucida Sans Italic           Italic
                  Lucida Sans Demibold Roman   Demibold Roman
                  Lucida Sans Demibold Italic  Demibold Italic

   MS Sans Serif  MS Sans Serif                Regular
                  MS Sans Serif                Bold
                  MS Sans Serif                Italic
                  MS Sans Serif                Bold Italic
				
les trois premières polices dans le tableau ci-dessus sont faces TrueType, la police restante est MS Sans Serif. Le nom de police est également parfois appelé le nom de famille.

Lorsque vous traitez avec des polices TrueType non, nom de police et le nom de police sont identiques. Toutefois, il est important reconnaître la distinction lorsque vous traitez d'une police TrueType.

Par exemple, CreateFont demande un pointeur vers une chaîne contenant le nom de police de la police à créer. Il n'est pas valide pour utiliser Arial gras comme cette chaîne car Arial est une police TrueType et Arial gras est un nom de la police et pas un nom de police.

Si EnumFontFamilies est appelée avec le paramètre lpszFamily pointant vers un nom de police TrueType valide, la fonction de rappel, qui est spécifiée dans fntenmprc, va être appelée une fois pour chaque nom de police pour ce nom de police. Par exemple, si EnumFontFamilies est appelée avec lpszFamily pointant vers Lucida sans, la fonction de rappel est appelée quatre fois ; une fois pour chaque nom de police.

Si le paramètre lpszFamily pointe sur le nom de police d'une police non-TrueType, tels que MS Sans Serif, le rappel sera appelé une fois pour chaque taille d'image pris en charge par la police. Le nombre de formats d'image pris en charge par la police peut varier de la police à la police et à partir un périphérique à un périphérique. Remarque que le rappel est appelé pour les différents formats, pas pour les différents styles. Ce comportement est identique à celle trouvé à l'aide de la fonction EnumFonts .

N'oubliez pas que, étant donné que les polices TrueType sont en permanence évolutives, il n'est aucune raison de la fonction de rappel pouvant être appelé pour chaque taille. Si la fonction de rappel a été appelée pour chaque taille prise en charge une police TrueType, la fonction de rappel est être appelée un nombre illimité de fois !

La fonction de rappel EnumFontFamilies est prototypée comme suit :
   int CALLBACK EnumFontFamProc(LPNEWLOGFONT lpnlf,
                             LPNEWTEXTMETRIC lpntm,
                             int FontType, LPARAM lpData)
				
le paramètre lpnlf pointe vers une structure LOGFONT qui contient des informations concernant les attributs logiques de la police. Si la police est énumérée est un [(nFontType | TRUETYPE_FONTTYPE) police TrueType est vrai], cette structure LOGFONT aura deux membres supplémentaires ajoutées à la fin de la structure, comme suit :
   char   lfFullName[LF_FACESIZE*2];
   char   lfStyleName[LF_FACESIZE];
				
il est important de se rappeler que ces deux champs supplémentaires sont utilisés * uniquement * pendant l'énumération avec EnumFontFamilies et nulle part ailleurs dans Windows. La documentation de la fonction EnumFontFamilies de pages 266 268 de la « kit de développement logiciel Microsoft Windows : Reference programmer ' s, volume 2: fonctions « manuel fait référence à la structure NEWLOGFONT qui contient les membres supplémentaires répertoriés ci-dessus. Toutefois, la structure NEWLOGFONT n'est pas définie dans le fichier d'en-tête WINDOWS.H. Pour résoudre cette situation, utiliser la structure ENUMLOGFONT qui est définie dans le fichier WINDOWS.H mais n'est pas répertoriée dans la documentation du Kit de développement SDK Windows.

Pour récupérer le nom du style et le nom complet d'une police sans utiliser d'énumération, utilisez la fonction GetOutlineTextMetrics .

Propriétés

Numéro d'article: 84131 - Dernière mise à jour: jeudi 27 février 2014 - Version: 3.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Win32 Application Programming Interface sur le système suivant
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Édition Développeur
    • Microsoft Windows 95
Mots-clés : 
kbnosurvey kbarchive kbmt kbinfo KB84131 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 84131
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com