bonjour, j'aimerais savoir s'il était possible de connaître la famille d'une font (sérif, sans sérif... ) et si oui comment faire ?
Merci d'avance.








bonjour, j'aimerais savoir s'il était possible de connaître la famille d'une font (sérif, sans sérif... ) et si oui comment faire ?
Merci d'avance.
Comment ça ? Connaitre le nom de la police utilisée dans tel ou tel controle ?








Non, je cherche à connaître la famille d'une police en connaissant son nom (la police "Arial" fait partie de la famille "sans sérif" par exemple...).
Y a-t-il une propriété des objets fonts qui donne cette famille ?
Bonjour,
Non ... pas de "propriété d'objet" pour celà ...
Mais deux fonctions de l'Api de Windows :
EnumFontFamilies
EnumFontFamiliesEx
Toutes deux dans la librairie gdi32








J'ai fait quelques recherches sur la msdn...
mais pas moyen de comprendre comment tirer la famille d'une police en connaissant son nom...
La fonction EnumFontFamiliesEx énumère bien toutes familles sur le disque ?
Montre donc ton code.
On verra après
Edit : moi, je suis prêt (avec un exemple pour ta police Arial)...
Mais je viens de voir tes autres discussions !!!
Certaines sont restées sans suite, bien que résolues !!!
Alors : donnant donnant...
Tu fais cet effort : je penserai à mettre ici le code que tu attends..
Tu ne le fais pas : et je ne ferai rien non plus ...








Donc, cela me donne toutes les polices de la famille "Arial" mais comment obtenir toutes les polices de la famille "sans serif" ?
Parce que, si je comprends bien, cela me donne toutes les polices "enfants" (celle dont la famille est la police que j'ai précisé)...
Et si, dans ton code, je remplace :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part mapolice = "Arial"
Est-ce que ça marche ? (je ne suis pas chez moi, donc je ne peux pas essayer pour le moment...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part mapolice = "sans serif"
Pour préciser ma question : Est-il possible d'obtenir la nom de la famille ("serif", "sans serif"...) à laquelle appartient une police donnée ?
Je ne vois pas comment demander ça autrement peut-être suis-je totalement con...
Réponse à ta 1ère question :
Oui (et c'est la raison pour laquelle je t'ai donné un exemple avec possibilité de définir ta Police !!!) mais à condition (bien évidemment) de donner le nom exact de la police concernée (Y compris la casse).
Réponse à ta 2ème question :
Si, à partir d'un nom de police (Exact comme ci-dessus), tu cherches à savoir à quel "Pitch and Family" ladite police appartient, c'est très différent et tu dois savoir que ces "Pitch And Family" sont classés par numéro (et pas par nom) ...
Et dans ce cas (mais il va falloir que tu te dégourdisse un peu, quand même !...) :
Dans une Form :
Et dans un module :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Form_Activate() police = "Arial" ' ou ce que tu veux, pourvu que le nom soit exact, y compris la casse... EnumFonts Me.hDC, vbNullString, AddressOf EnumFontProc, 0 End Sub
Lance et tu devrais comprendre....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Const LF_FACESIZE = 32 Type LOGFONT lfHeight As Long lfWidth As Long lfEscapement As Long lfOrientation As Long lfWeight As Long lfItalic As Byte lfUnderline As Byte lfStrikeOut As Byte lfCharSet As Byte lfOutPrecision As Byte lfClipPrecision As Byte lfQuality As Byte lfPitchAndFamily As Byte lfFaceName(LF_FACESIZE) As Byte End Type Declare Function EnumFonts Lib "gdi32" Alias "EnumFontsA" (ByVal hDC As Long, ByVal lpsz As String, ByVal lpFontEnumProc As Long, ByVal lParam As Long) As Long Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long) Public police As String Function EnumFontProc(ByVal lplf As Long, ByVal lptm As Long, ByVal dwType As Long, ByVal lpData As Long) As Long Dim LF As LOGFONT, FontName As String, fontfam As String, ZeroPos As Long, ZeroPos1 As Long CopyMemory LF, ByVal lplf, LenB(LF) FontName = StrConv(LF.lfFaceName, vbUnicode) fontfam = StrConv(LF.lfPitchAndFamily, vbUnicode) ZeroPos = InStr(1, FontName, Chr$(0)) ZeroPos1 = InStr(1, fontfam, Chr$(0)) If ZeroPos > 0 Then FontName = Left$(FontName, ZeroPos - 1): fontfam = Left$(fontfam, ZeroPos1 - 1) If FontName = police Then MsgBox FontName & " appartient à la famille Pitch and Family " & fontfam End If EnumFontProc = 1 End Function
Et si tu ne vois toujours pas, ma foi... continue sans moi ...![]()
Partager