.NET-Schriftverwaltungs-API

In der digitalen Typografie definieren Schriftarten bestimmte Stile, die für das Erscheinungsbild der Zeichen verwendet werden. Meistens werden die Schriftarten in den Dokumenten und Webseiten verwendet, um den Text zu stilisieren. Jede Schriftart wird in einer Datei beschrieben, die Informationen über Zeichengröße, Gewicht, Stil sowie Kodierung enthält. Da Schriftarten ein wichtiger Bestandteil der verschiedenen Dateiformate sind, bietet Aspose eine dedizierte API für die Manipulation und Darstellung gängiger Schriftarten, einschließlich TrueType, CFF, OpenType, und Typ1. In diesem Artikel erfahren Sie, wie Sie mithilfe von C# mit Aspose.Font for .NET Informationen aus Schriftarten laden, speichern und extrahieren.

.NET-API zur Schriftbearbeitung – kostenloser Download

Aspose.Font for .NET ist eine lokale API, mit der Sie die Schriftartverwaltungsfunktionen mit C# in Ihren .NET Anwendungen implementieren können. Neben dem Laden, Speichern und Extrahieren von Informationen aus der Schriftart ermöglicht Ihnen die API bei Bedarf auch das Rendern der Glyphe oder des Textes. Sie können die API entweder herunterladen oder sie mit NuGet in Ihren .NET Anwendungen installieren.

PM> Install-Package Aspose.Font

Laden oder Speichern von Schriftarten aus einer Datei mit C#

Sie können eine Schriftart aus der Datei laden, die in Ihrem digitalen Speicher gespeichert ist, um die Schriftartinformationen abzurufen. Aspose.Font for .NET stellt separate Klassen zur Verfügung, um mit den bestimmten Arten von Schriftarten umzugehen, dh CFF, TrueType usw. Im Folgenden sind die Schritte zum Laden und Speichern einer Schriftart aufgeführt.

  • Laden Sie die Schriftart aus der Datei (unter Verwendung des Dateipfads oder Byte-Arrays) mithilfe der Klasse FontDefinition.
  • Greifen Sie mit der Klasse CffFont, TtfFont oder Type1Font auf die Schriftartinformationen zu.
  • Speichern Sie die Datei (falls erforderlich).

CFF-Schriftart laden und speichern

Das folgende Codebeispiel zeigt, wie CFF-Schriftarten mit C# geladen und gespeichert werden.

// Vollständige Beispiele und Datendateien finden Sie unter https://github.com/aspose-font/Aspose.Font-for-.NET
//Byte-Array zum Laden der Schriftart
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;

//Arbeiten Sie mit Daten aus dem gerade geladenen CffFont objekt

//Speichern Sie CffFont auf der Festplatte
//Dateiname der Ausgabeschrift mit vollständigem Pfad
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

TrueType-Schriftart laden und speichern

Das folgende Codebeispiel zeigt, wie TrueType-Schriftarten mit C# geladen und gespeichert werden.

// Vollständige Beispiele und Datendateien finden Sie unter https://github.com/aspose-font/Aspose.Font-for-.NET
//Byte-Array zum Laden der Schriftart
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;

//Arbeiten Sie mit Daten aus dem gerade geladenen TtfFont objekt

//Speichern Sie TtfFont auf der Festplatte
//Dateiname der Ausgabeschrift mit vollständigem Pfad
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Type1 Font laden und speichern

Das folgende Codebeispiel zeigt, wie Sie Type1-Schriftarten mit C# laden und speichern.

// Vollständige Beispiele und Datendateien finden Sie unter 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;

Extrahieren Sie Schriftartmetriken mit C#

Aspose.Font for .NET ermöglicht Ihnen auch das Abrufen der Schriftartmetrikinformationen wie Ascender, Descender, TypoAscender, TypoDescender und UnitsPerEm. Im Folgenden sind die Schritte dazu aufgeführt.

  • Verwenden Sie die Klasse FontDefinition, um TrueType oder Type1-Schriftarten aus einer Datei zu laden.
  • Öffnen Sie die Schriftart mit der entsprechenden Schriftartklasse, z. B. Type1Font, TtfFont usw.
  • Greifen Sie auf die Metrikinformationen der Schriftart zu.

Die folgenden Codebeispiele zeigen, wie Sie mit C# Schriftartmetriken aus TrueType und Type1-Schriftarten extrahieren.

Extrahieren Sie Metriken aus TrueType-Schriftarten

// Vollständige Beispiele und Datendateien finden Sie unter 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);

//Holen Sie sich die Cmap-Unicode-Codierungstabelle aus der Schriftart als Objekt TtfCMapFormatBaseTable, um auf Informationen über die Schriftart-Glyphe für das Symbol „A“ zuzugreifen.
//Überprüfen Sie auch, ob die Schriftart das Objekt TtfGlyfTable (Tabelle 'glyf') hat, um auf die Glyphe zuzugreifen.
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);

    //Code für 'A'-Symbol
    char unicode = (char)65;

    //Glyphenindex für 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //Glyphe für 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Drucken Sie Glyphenmetriken
            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)));
        }
    }
}

Extrahieren Sie Metriken aus Type1 Font

// Vollständige Beispiele und Datendateien finden Sie unter 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);

Lateinische Symbole in Schriftarten mit C# erkennen

Sie können auch lateinischen Text in den Schriftarten erkennen, indem Sie die Glyphencodes mit Aspose.Font for .NET decodieren. Im Folgenden sind die Schritte zum Ausführen dieses Vorgangs aufgeführt.

  • Laden Sie die Schriftart aus der Datei mit der Klasse FontDefinition.
  • Decodieren Sie die GlyphId mit der DecodeToGid() methode der jeweiligen Schriftklasse.

Die folgenden Codebeispiele zeigen, wie lateinische Symbole in TrueType und Type1-Schriftarten mit C# decodiert werden.

Erkennen Sie lateinische Symbole in TrueType-Schriftarten

// Vollständige Beispiele und Datendateien finden Sie unter 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));
}

Erkennung lateinischer Symbole in Type1-Schriftart

// Vollständige Beispiele und Datendateien finden Sie unter 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));
}

Fazit

In diesem Artikel haben Sie gesehen, wie Sie CFF, TrueType und Type1-Schriftarten programmgesteuert mit C# laden und speichern. Darüber hinaus haben Sie gelernt, wie Sie Font-Metrik-Informationen aus TrueType und Type1-Fonts in Ihren .NET Anwendungen extrahieren. Weitere interessante Funktionen, die Aspose.Font for .NET bietet, finden Sie in der Dokumentation. Besuchen Sie für weitere Updates Aspose.Font Blog.