C# Ladda teckensnitt från fil | Spara CFF-, TrueType- och Type1-teckensnitt

I digital typografi definierar typsnitt särskilda stilar som ska användas för karaktärernas utseende. Oftast används typsnitten i dokument och webbsidor för att stilisera texten. Varje teckensnitt beskrivs i en fil som innehåller information om teckens storlek, vikt, stilar och kodning. Eftersom typsnitt är en viktig del av de olika filformaten erbjuder Aspose ett dedikerat API för att hantera manipulering och rendering av populära teckensnittstyper, inklusive TrueType, CFF, OpenType och Typ1. I den här artikeln kommer du att lära dig hur du laddar teckensnitt från en fil, sparar teckensnitt och extraherar teckensnittsmått från teckensnitt i C#.

C# Font API för att ladda och spara teckensnitt från filer

Aspose.Font for .NET är ett lokalt API som låter dig implementera teckensnittshanteringsfunktionerna med C# i dina .NET-applikationer. Tillsammans med att ladda, spara och extrahera information från teckensnittet låter API:et dig också rendera glyfen eller texten om det behövs.

Vänligen antingen ladda ner API eller installera det i dina .NET-applikationer med NuGet.

PM> Install-Package Aspose.Font

Ladda eller spara teckensnitt från fil med C#

Du kan ladda ett typsnitt från filen som är lagrad på din digitala lagring för att hämta typsnittets information. Aspose.Font för .NET exponerar separata klasser för att hantera de särskilda typerna av typsnitt, t.ex. CFF, TrueType, etc. Följande är stegen för att ladda och spara ett teckensnitt:

  • Ladda teckensnittet från filen (med hjälp av filens sökväg eller byte-array) med klassen FontDefinition.
  • Få åtkomst till teckensnittets information med klassen CffFont, TtfFont eller Type1Font.
  • Spara filen (om det behövs).

Ladda och spara CFF-teckensnittet

Följande kodexempel visar hur man laddar och sparar CFF-teckensnitt med C#.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-font/Aspose.Font-for-.NET
//byte array att ladda teckensnitt från
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;

//Arbeta med data från just inlästa CffFont-objekt

//Spara CffFont på disken
//Utdatateckensnittsfilnamn med fullständig sökväg
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

Ladda och spara TrueType-teckensnitt

Följande kodexempel visar hur man laddar och sparar TrueType-teckensnitt med C#.

// För fullständiga exempel och datafiler, gå till https://github.com/aspose-font/Aspose.Font-for-.NET
//byte array att ladda teckensnitt från
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;

//Arbeta med data från just inlästa TtfFont-objekt

//Spara TtfFont på disken
//Utdatateckensnittsfilnamn med fullständig sökväg
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Ladda och spara typ1 typsnitt

Följande kodexempel visar hur man laddar och sparar Type1-teckensnitt med C#.

// För fullständiga exempel och datafiler, gå till 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;

Extrahera teckensnittsmått med C#

Aspose.Font för .NET låter dig också hämta teckensnittsinformation som Ascender, Descender, TypoAscender, TypoDescender och UnitsPerEm. Följande är stegen för att göra det:

  • Använd klassen FontDefinition för att ladda TrueType- eller Type1-teckensnitt från filen.
  • Öppna teckensnittet med respektive typsnittsklass, dvs Type1Font, TtfFont, etc.
  • Få åtkomst till teckensnittets statistikinformation.

Följande kodexempel visar hur du extraherar teckensnittsmått från TrueType- och Type1-teckensnitt med C#.

Extrahera teckensnittsmått från TrueType Font

// För fullständiga exempel och datafiler, gå till 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);

//Hämta cmap unicode-kodningstabell från teckensnitt som objekt TtfCMapFormatBaseTable för att få tillgång till information om teckensnittsglyph för symbol 'A'.
//Kontrollera också att typsnittet har objektet TtfGlyfTable (tabell 'glyf') för att komma åt glyph.
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);

    //Kod för 'A'-symbol
    char unicode = (char)65;

    //Glyfindex för 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //Glyf för 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Skriv ut glyfstatistik
            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)));
        }
    }
}

Få Font Metrics från Type1 Font

// För fullständiga exempel och datafiler, gå till 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);

Upptäck latinska symboler i teckensnitt med C#

Du kan också upptäcka latinsk text i teckensnitten genom att avkoda glyfkoderna med Aspose.Font för .NET. Följande är stegen för att utföra denna operation:

  • Ladda teckensnittet från filen med klassen FontDefinition.
  • Avkoda GlyphId med DecodeToGid()-metoden för respektive teckensnittsklass.

Följande kodexempel visar hur man avkodar latinska symboler i TrueType- och Type1-teckensnitt med C#.

Upptäck latinska symboler i TrueType-teckensnitt

// För fullständiga exempel och datafiler, gå till 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));
}

Upptäck latinska symboler i typsnitt typ1

// För fullständiga exempel och datafiler, gå till 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));
}

C# Font API - Lärresurser

Du kan lära dig mer om att ladda, spara, konvertera och manipulera teckensnitt och utforska olika andra funktioner i Aspose.Font for .NET med hjälp av resurserna nedan:

Slutsats

I den här artikeln har du sett hur du laddar och sparar CFF-, TrueType- och Type1-teckensnitt programmatiskt med C#. Dessutom har du lärt dig hur du extraherar teckensnittsinformation från TrueType- och Type1-teckensnitt i dina .NET-applikationer. Genom att utnyttja Aspose.Font för .NET kan du enkelt utveckla dina egna applikationer för att manipulera typsnitt. I händelse av oklarheter är du välkommen att kontakta oss på vårt [gratis supportforum][18].

Se även