es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe una manera de enumerar los CARACTERES individuales en un archivo de fuente True Type (TTF)?

Estoy intentando descubrir cómo enumerar TODOS los caracteres de una Fuente True Type.

Tengo una fuente TTF – “Pangolin” que está compuesta por los COMPONENTES de los Kanjis japoneses, NO los Kanjis en sí mismos. Estos son los elementos que forman los kanjis…

Creo que se creó basándose en un ASCII básico “abcdefABCDEF123”, etc., porque puedo crear un archivo de texto usando los caracteres alfanuméricos mencionados, cambiar la fuente a Pangolin y ver los componentes individuales mostrados como kanji bushuu en el mismo orden que se muestra en el control de fuentes de la configuración de Windows, pero necesito ver TODOS los caracteres.

Estoy seguro de que esto es posible…

¿?¿?¿?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para enumerar todos los caracteres en una fuente TrueType utilizando VB.NET, puedes usar la clase System.Drawing.Text.InstalledFontCollection para recuperar una lista de todas las fuentes instaladas en el sistema, y la clase System.Drawing.Text.PrivateFontCollection para cargar el archivo de fuente y obtener el objeto GlyphTypeface que representa la fuente. Luego, puedes usar la propiedad GlyphTypeface.CharacterToGlyphMap para obtener un diccionario que mapea cada carácter Unicode con su índice de glifo correspondiente en la fuente, e iterar sobre las claves del diccionario para obtener todos los caracteres en la fuente. Aquí tienes un ejemplo de código:

    “`vb.net
    Dim fontCollection As New System.Drawing.Text.InstalledFontCollection()
    Dim pangolinFontFamily As FontFamily = fontCollection.Families.FirstOrDefault(Function(f) f.Name = “Pangolin”)

    If pangolinFontFamily IsNot Nothing Then
    Dim pangolinFontFile As String = pangolinFontFamily.Files.FirstOrDefault()
    Dim pangolinPrivateFontCollection As New System.Drawing.Text.PrivateFontCollection()

    If pangolinFontFile IsNot Nothing Then
        pangolinPrivateFontCollection.AddFontFile(pangolinFontFile)
        Dim pangolinGlyphTypeface As New GlyphTypeface(New Uri(pangolinFontFile))
        Dim pangolinCharacterToGlyphMap As IDictionary(Of Integer, Integer) = pangolinGlyphTypeface.CharacterToGlyphMap
    
        For Each unicodeCharacter As Integer In pangolinCharacterToGlyphMap.Keys
            Console.WriteLine(ChrW(unicodeCharacter))
        Next
    End If
    

    End If
    “`

    Ten en cuenta que este código asume que la fuente Pangolin está instalada en el sistema y puede ser cargada por su nombre. Si el archivo de fuente se encuentra en un directorio diferente, es posible que tengas que modificar el código en consecuencia. Además, recuerda que no todos los caracteres en una fuente TrueType pueden ser compatibles con todas las aplicaciones o sistemas operativos, según la codificación de la fuente y las capacidades del sistema.

Comments are closed.