IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Extraction des glyphs d'une font ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 19
    Par défaut Extraction des glyphs d'une font ?
    Salut,

    Quelqu'un pourrait il me dire comment extraire les glyphs d'une police de caractère en .Net.

    Mon objectif est juste d'afficher une liste de la représentation graphique de tous les caractères constituant la police.

    Je cherche en vain...

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 19
    Par défaut
    Bon le sujet n'a pas l'air d'intéresser grand monde...

    Voici la solution que j'ai mise en oeuvre :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
        Declare Function GetFontUnicodeRanges Lib "gdi32.dll" (ByVal hdc As IntPtr, ByVal lpGlyphset As IntPtr) As UInt32
     
        Declare Function SelectObject Lib "gdi32.dll" (ByVal hdc As IntPtr, ByVal hObject As IntPtr) As IntPtr
     
        Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As IntPtr) As Int32
     
        Public Structure FontRange
            Public Low, High, Count As UShort
        End Structure
     
        Public Structure Glyphset
            Public cbThis, flAccel, cGlyphsSupported, cRanges As UInteger, ranges() As FontRange
        End Structure
     
        Public Function GetUnicodeRangesForFont(ByVal font As Font) As Glyphset
     
            'Win32 GetFontUnicodeRanges
            Dim hdc, hFont, old, lpGlyphSet As IntPtr
     
            Dim g As Graphics = Graphics.FromHwnd(IntPtr.Zero)
     
            hdc = g.GetHdc()
            hFont = font.ToHfont()
            old = SelectObject(hdc, hFont)
            Dim size As UInteger = GetFontUnicodeRanges(hdc, IntPtr.Zero)
            lpGlyphSet = Marshal.AllocHGlobal(CInt(size))
            Dim read As UInteger = GetFontUnicodeRanges(hdc, lpGlyphSet)
            Dim bytes(CInt(read) - 1) As Byte
            Marshal.Copy(lpGlyphSet, bytes, 0, bytes.Length)
     
            'cleanup
            SelectObject(hdc, old)
            Marshal.FreeHGlobal(lpGlyphSet)
            g.ReleaseHdc(hdc)
            g.Dispose()
            DeleteObject(hFont)
     
            'get glyph data
            Dim gs As New Glyphset
            gs.cbThis = BitConverter.ToUInt32(bytes, 0)
            gs.flAccel = BitConverter.ToUInt32(bytes, 4)
            gs.cGlyphsSupported = BitConverter.ToUInt32(bytes, 8)
            gs.cRanges = BitConverter.ToUInt32(bytes, 12)
            Array.Resize(gs.ranges, CInt(gs.cRanges))
            For i As Integer = 0 To gs.ranges.Length - 1
                gs.ranges(i).Low = BitConverter.ToUInt16(bytes, 16 + (i * 4))
                gs.ranges(i).Count = BitConverter.ToUInt16(bytes, 18 + (i * 4))
                gs.ranges(i).High = gs.ranges(i).Low + gs.ranges(i).Count - 1US
     
            Next
            '
            Return gs
     
        End Function

Discussions similaires

  1. vc++(6)+extraction des données dans une image(.tif)
    Par spootnic22 dans le forum Visual C++
    Réponses: 1
    Dernier message: 22/11/2006, 16h14
  2. extraction des données dans une table Access
    Par moabomotal dans le forum Access
    Réponses: 2
    Dernier message: 26/05/2006, 11h17
  3. [Vidéo] Extraction des frames d'une vidéo
    Par jacques_henry dans le forum Multimédia
    Réponses: 1
    Dernier message: 23/01/2006, 20h32
  4. Extraction des frames d'une vidéo
    Par jacques_henry dans le forum C++
    Réponses: 6
    Dernier message: 05/01/2006, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo