API de administración de fuentes .NET

En [tipografía] digital 1, las fuentes definen estilos particulares que se utilizarán para la apariencia de los personajes. Muy a menudo, las fuentes se utilizan en los documentos y las páginas web para estilizar el texto. Cada fuente se describe en un archivo que contiene información sobre el tamaño, el peso, los estilos y la codificación de los caracteres. Dado que las fuentes son una parte importante de los diversos formatos de archivo, Aspose ofrece una API dedicada para manejar la manipulación y representación de tipos de fuentes populares, incluidos TrueType, CFF, OpenType, y Tipo1. En este artículo, aprenderá a cargar, guardar y extraer información de fuentes usando C# con Aspose.Font for .NET.

API de manipulación de fuentes .NET - Descarga gratuita

Aspose.Font for .NET es una API local que le permite implementar las funciones de administración de fuentes usando C# dentro de sus aplicaciones .NET. Además de cargar, guardar y extraer información de la fuente, la API también le permite representar el glifo o el texto si es necesario. Puede descargar la API o instalarla dentro de sus aplicaciones .NET usando NuGet.

PM> Install-Package Aspose.Font

Cargue o guarde fuentes desde un archivo usando C#

Puede cargar una fuente del archivo almacenado en su almacenamiento digital para recuperar la información de la fuente. Aspose.Font for .NET expone clases separadas para manejar los tipos particulares de fuentes, es decir, CFF, TrueType, etc. Los siguientes son los pasos para cargar y guardar una fuente.

  • Cargue la fuente desde el archivo (usando la ruta del archivo o la matriz de bytes) usando la clase FontDefinition.
  • Acceda a la información de la fuente utilizando la clase CffFont, TtfFont o Type1Font.
  • Guarde el archivo (si es necesario).

Cargar y guardar fuente CFF

El siguiente ejemplo de código muestra cómo cargar y guardar fuentes CFF mediante C#.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
//matriz de bytes para cargar la fuente desde
string dataDir = RunExamples.GetDataDir_Data();

byte[] fontMemoryData = File.ReadAllBytes(dataDir + "OpenSans-Regular.cff");
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData)));
CffFont cffFont = Aspose.Font.Font.Open(fd) as CffFont;

//Trabaje con datos del objeto CffFont recién cargado

//Guardar CffFont en el disco
//Nombre de archivo de fuente de salida con ruta completa
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

Cargar y guardar fuentes TrueType

El siguiente ejemplo de código muestra cómo cargar y guardar fuentes TrueType mediante C#.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
//matriz de bytes para cargar la fuente desde
string dataDir = RunExamples.GetDataDir_Data();
            
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "Montserrat-Regular.ttf");
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new ByteContentStreamSource(fontMemoryData)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

//Trabaje con datos del objeto TtfFont recién cargado

//Guardar TtfFont en el disco
//Nombre de archivo de fuente de salida con ruta completa
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Cargar y guardar fuente Type1

El siguiente ejemplo de código muestra cómo cargar y guardar fuentes Type1 usando C#.

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

Extraer métricas de fuentes usando C#

Aspose.Font for .NET también le permite recuperar la información de métricas de fuentes, como Ascender, Descender, TypoAscender, TypoDescender y UnitsPerEm. Los siguientes son los pasos para hacerlo.

  • Use la clase FontDefinition para cargar fuentes TrueType o Type1 desde el archivo.
  • Abra la fuente utilizando la clase de tipo de fuente respectiva, es decir, Type1Font, TtfFont, etc.
  • Accede a la información de métricas de la fuente.

Los siguientes ejemplos de código muestran cómo extraer métricas de fuentes de fuentes TrueType y Type1 mediante C#.

Extraiga métricas de la fuente TrueType

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = Aspose.Font.Font.Open(fd) as TtfFont;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

//Obtenga la tabla de codificación cmap Unicode de la fuente como objeto TtfCMapFormatBaseTable para acceder a información sobre el glifo de fuente para el símbolo 'A'.
//También verifique que la fuente tenga el objeto TtfGlyfTable (tabla 'glyf') para acceder al glifo.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
    cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
    Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);

    //Código para el símbolo 'A'
    char unicode = (char)65;

    //Índice de glifos para 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //Glifo de 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Imprimir métricas de glifo
            Console.WriteLine("Glyph metrics for 'A' symbol:");
            string bbox = string.Format(
                "Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
                glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
                glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
            Console.WriteLine(bbox);
            Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
        }
    }
}

Extraer métricas de la fuente Type1

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

Detectar símbolos latinos en fuentes usando C#

También puede detectar texto en latín en las fuentes decodificando los códigos de glifo usando Aspose.Font for .NET. Los siguientes son los pasos para realizar esta operación.

  • Cargue la fuente desde el archivo usando la clase FontDefinition.
  • Decodifique el GlyphId usando el método DecodeToGid() de la clase de fuente respectiva.

Los siguientes ejemplos de código muestran cómo decodificar símbolos latinos en fuentes TrueType y Type1 mediante C#.

Detectar símbolos latinos en fuentes TrueType

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", ttfFont.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", ttfFont.FontName));
}

Detectar símbolos latinos en fuente Type1

// Para obtener ejemplos completos y archivos de datos, vaya a https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName));
}

Conclusión

En este artículo, ha visto cómo cargar y guardar fuentes CFF, TrueType y Type1 mediante programación usando C#. Además, aprendió cómo extraer información de métricas de fuentes de fuentes TrueType y Type1 dentro de sus aplicaciones .NET. Puede explorar funciones más interesantes que ofrece Aspose.Font for .NET en la documentación. Para obtener más actualizaciones, siga visitando Aspose.Font blog.