Trouver le type de police

Résolu
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 15 janv. 2010 à 17:48
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 - 18 janv. 2010 à 09:50
Bonjour,

Je cherche à savoir quel est le type de la police de caractère d'un StdFont (le pourquoi serais un peut long à expliquer)
Si j'ai bien compris (ce qui n'est pas certain), il existe 3 types de polices (TrueType, et 2 autres si quelqu'un connais leurs noms sa m'intéresse aussi )
On peut les voir sur le common dialog de sélection de police par exemple :

Dans l'ovale rouge (à gauche des nom de police si mon image fini par être supprimer) on voie bien 3 type de police (TT TrueType, O ???, et rien)
Je voudrais savoir de quel type de ma police par code.

Merci d'avance
(Je poste en API car je pense qu'il vas me falloir une API pour trouver cette info mais la quelle ????)
Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
15 janv. 2010 à 18:45
Bonjour,
va voir ceci (et extrapole)
http://www.developerfusion.com/code/254/determine-if-a-font-is-truetype/

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
3
Polack77 Messages postés 1098 Date d'inscription mercredi 22 mars 2006 Statut Membre Dernière intervention 22 octobre 2019 1
18 janv. 2010 à 09:50
Merci c'est ce que je cherchais
(Cette fonction ne détermine pas si la police est TT ou O mais si le police est TT/O ou rien, mais en final c'étais mon objectif )
Pour rappel la fonction trouvé sur ton lient si jamais le lient devenais invalide (avec une petit modif)

'Module Code
' Only allow declared variables
Option Explicit
' Declare constants
Public Const TMPF_TRUETYPE = &H4
Public Const LF_FACESIZE = 32
' Declare types
Public 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(1 To LF_FACESIZE) As Byte
End Type
Public Type TEXTMETRIC
    tmHeight As Long
    tmAscent As Long
    tmDescent As Long
    tmInternalLeading As Long
    tmExternalLeading As Long
    tmAveCharWidth As Long
    tmMaxCharWidth As Long
    tmWeight As Long
    tmOverhang As Long
    tmDigitizedAspectX As Long
    tmDigitizedAspectY As Long
    tmFirstChar As Byte
    tmLastChar As Byte
    tmDefaultChar As Byte
    tmBreakChar As Byte
    tmItalic As Byte
    tmUnderlined As Byte
    tmStruckOut As Byte
    tmPitchAndFamily As Byte
    tmCharSet As Byte
End Type
' Declare Windows API functions
Public Declare Function CreateFontIndirect Lib "gdi32" Alias "CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Declare Function GetTextMetrics Lib "gdi32" Alias "GetTextMetricsA" (ByVal hdc As Long, lpMetrics As TEXTMETRIC) As Long
'La fonction DeleteObject supprime un objet (logical pen, brush, font, bitmap, region, or palette), ce qui libère toutes les ressources système associé à l'objet. Après que l'objet soit supprimé, le handle spécifié n'est plus valide.
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long

Public Function IsFontTrueType(sFontName As String, ByVal HdcSruface As Long) As Boolean
    Dim lf As LOGFONT
    Dim tm As TEXTMETRIC
    Dim oldfont As Long, newfont As Long
    Dim tmpArray() As Byte
    Dim dummy As Long
    Dim i As Integer
    'need to convert font name to byte array...
    tmpArray = StrConv(sFontName & vbNullString, vbFromUnicode)
    For i = 0 To UBound(tmpArray)
        lf.lfFaceName(i + 1) = tmpArray(i)
    Next
    'create the font object
    newfont = CreateFontIndirect(lf)
    'save the current font object and use the new font object
    oldfont = SelectObject(HdcSruface, newfont)
    'get the new font object's info
    dummy = GetTextMetrics(HdcSruface, tm)
    'determine whether new font object is TrueType
    IsFontTrueType = CBool(tm.tmPitchAndFamily And TMPF_TRUETYPE)
    'restore the original font object - !!!THIS IS IMPORTANT!!!
    dummy = SelectObject(HdcSruface, oldfont)
    'Supprime la police crée
    DeleteObject newfont
End Function


Amicalement
1000 recherches sur Google = 1Km de voiture en CO² (réfuté par Google )
1000 recherches sur Forestle = 100 m² de forêt tropicale sauvé .
Surfez écolo
3
Rejoignez-nous