none
lista de fuentes no instaladas RRS feed

  • Pregunta

  • Hola.

            ListView1.Items.Clear()
            ListView1.Columns(0).Text = "0"
            Dim ofm As FontFamily
            Dim ofc As System.Drawing.Text.FontCollection = New System.Drawing.Text.InstalledFontCollection
            Dim tft As Font = Font
    
            For Each ofm In ofc.Families
    
                If ofm.IsStyleAvailable(FontStyle.Regular) Then
                    tft = New Font(ofm, 14, FontStyle.Regular)
                ElseIf ofm.IsStyleAvailable(FontStyle.Bold) Then
                    tft = New Font(ofm, 14, FontStyle.Bold)
                ElseIf ofm.IsStyleAvailable(FontStyle.Italic) Then
                    tft = New Font(ofm, 14, FontStyle.Italic)
                End If
    
                Dim lit As New ListViewItem
                Dim lvI As ListViewItem
                Dim lst As New ListViewSubItem
    
                lit.Font = tft
                lit.Text = tft.FontFamily.Name
    
                ListView1.Columns(0).Text = CStr(CDbl(ListView1.Columns(0).Text) + 1)
    
                lvI = ListView1.Items.Add(ListView1.Columns(0).Text)
                lvI.SubItems.Add(tft.FontFamily.Name)
    
                lst.Font = tft
                lst.Text = tft.FontFamily.Name
                lst.Font = tft
    
                lvI.SubItems.Add(lst)
    
                lvI.UseItemStyleForSubItems = False
            Next

    Con el código anterior puedo obtener, (en un ListView), el nombre de las fuentes instaladas en Windows Vista y el estilo de éstas.

    Pero necesito su ayuda para modificar ése código y obtener en el ListView el nombre de las fuentes que hay en una carpeta y el estilo de éstas también.

    Muchas gracias.

    jueves, 9 de octubre de 2014 11:16

Respuestas

  • Recorres el directorio y vas agregando los archivos a la colección. Luego haz lo que tengas que hacer.

    Imports System.Drawing.Text
    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim pfc As New PrivateFontCollection
    
            For Each archivo In Directory.GetFiles("d:\fonts3", "*.ttf")
                pfc.AddFontFile(archivo)
            Next
    
            ListView1.View = View.Details
            ListView1.Dock = DockStyle.Fill
            ListView1.Columns.Add("FaceName")
    
            For Each f As FontFamily In pfc.Families
                Dim item As ListViewItem = ListView1.Items.Add(f.Name)
            Next
    
        End Sub
    End Class
    

    Un formulario, un listview y un directorio con las fonts que vas a listar.


    /dd

    sábado, 11 de octubre de 2014 3:00

Todas las respuestas

  • Usa el método AddFontFile de la clase PrivateFontCollection. La popiedad Families te entrega el array con las fuentes agregadas.

    El método AddFontFile recibe el nombre de un archivo TTF (no opentype, obviamente no raster type).


    /dd

    jueves, 9 de octubre de 2014 12:10
  • Gracias Domingo.

    No entiendo muy bién. Qué pasa con OpenType?

    Puedes ofrecer un ejemplo?

    viernes, 10 de octubre de 2014 3:22
  • Recorres el directorio y vas agregando los archivos a la colección. Luego haz lo que tengas que hacer.

    Imports System.Drawing.Text
    Imports System.IO
    
    Public Class Form1
    
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim pfc As New PrivateFontCollection
    
            For Each archivo In Directory.GetFiles("d:\fonts3", "*.ttf")
                pfc.AddFontFile(archivo)
            Next
    
            ListView1.View = View.Details
            ListView1.Dock = DockStyle.Fill
            ListView1.Columns.Add("FaceName")
    
            For Each f As FontFamily In pfc.Families
                Dim item As ListViewItem = ListView1.Items.Add(f.Name)
            Next
    
        End Sub
    End Class
    

    Un formulario, un listview y un directorio con las fonts que vas a listar.


    /dd

    sábado, 11 de octubre de 2014 3:00