Schriftdateien aus einem Byte‑Array laden
C++‑API‑Lösung zum Laden von TTF, WOFF, EOT, Type 1 und CFF‑Schriften aus einem MemoryStream.
Aspose.Font‑API‑Lösung bietet Ihnen umfangreiche Möglichkeiten zur Arbeit mit Schriften, einschließlich Konvertierung, Glyphenmanipulation, Erkennung lateinischer Symbole und vieles mehr. Der erste Schritt bei der Schriftmanipulation ist jedoch das Laden der Schriftdateien, um sie später verwenden zu können.
Dieser Artikel beschreibt, wie Schriftdateien aus Streams geladen werden können. Für detailliertere Informationen zum Laden von Schriften lesen Sie bitte den Artikel Wie man Dateien lädt? . Dort finden Sie zahlreiche C++‑Codebeispiele und verstehen die notwendigen Objekte und Parameter für das Laden von Schriften.
Die API unterstützt mehrere Schriftformate, darunter TrueType (einzelne Schrift), TrueType (Schriftensammlung), Web Open Font Format, Web Open Font Format Version 2.0, Embedded OpenType, Adobe Type 1‑Schrift (pfa, pfb, afm, pfm) und Compact Font Format. Die bereitgestellten Codeausschnitte zeigen, wie eine True Type Font (TTF)‑Datei aus einem Stream geladen wird.
Wie wir aus Wikipedia entnehmen können, steht TTF für TrueType Font und ist ein Dateiformat für skalierbare Computerschriften. Es wurde ursprünglich von Apple Computer entwickelt, wird heute jedoch sowohl auf Mac‑ als auch auf Windows‑Betriebssystemen weit verbreitet eingesetzt. TTF‑Dateien enthalten Anweisungen, wie jedes Zeichen einer Schrift bei verschiedenen Schriftgrößen und -stilen gerendert wird, und können problemlos in unterschiedliche Anwendungen skaliert werden, ohne an Qualität zu verlieren. TTF‑Schriften werden häufig in der digitalen Typografie verwendet und finden Anwendung im Webdesign, in Textverarbeitungsprogrammen und im Desktop‑Publishing.
Um Schriften zu laden, benötigen Sie das Aspose.Font für C++‑API, ein leistungsstarkes, einfach zu nutzendes API für Dokumentenmanipulation und -konvertierung auf der C++‑Plattform. Um das API zu erhalten, öffnen Sie den NuGet‑Paket‑Manager, suchen nach Aspose.Font und installieren es. Alternativ können Sie den folgenden Befehl in der Package‑Manager‑Konsole ausführen.
Package Manager Console Command
PM> Install-Package Aspose.Font
TTF aus Byte‑Array/MemoryStream mit C++ laden
Dieses Code‑Snippet ist in C++ geschrieben und demonstriert, wie eine TrueType Font (TTF)‑Datei mithilfe der Aspose.Font‑API geladen wird. Der Code führt die folgenden Schritte aus:
- Konstruktion des Pfads zur Schriftdatei. Hier ist DataDir eine vordefinierte Variable, die den Pfad zu dem Verzeichnis enthält, in dem sich die Schriftdatei Montserrat-Regular.ttf befindet. Die Methode Path.Combine kombiniert die beiden Pfade, um den vollständigen Pfad zur Schriftdatei zu erstellen.
- Laden der Schrift‑Binärdaten in ein Byte‑Array. Die File.ReadAllBytes()‑Methode liest den Inhalt der Schriftdatei und gibt die Daten als Byte‑Array zurück.
- Initialisierung eines FontDefinition -Objekts. FontType.TTF gibt an, dass es sich bei der Schriftdatei um eine TrueType Font (.ttf) handelt, und das neue ByteContentStreamSource (fontBytes) erzeugt ein ByteContentStreamSource‑Objekt basierend auf den in dem fontBytes‑Array gespeicherten Binärdaten.
- Laden der Schrift. Die Font.Open() -Methode nimmt das FontDefinition-Objekt als Parameter und gibt die geladene Schrift zurück, die anschließend weiterverarbeitet werden kann.
C++‑Code zum Laden von Schriften aus dem Stream
using Aspose::Font;
using Aspose::Font::Sources;
using Aspose::Font::Ttf; // Construct the path to the file
System::String fontPath = System::IO::Path::Combine(get_DataDir(), u"Montserrat-Regular.ttf");
// Load font binary data into the byte array
System::ArrayPtr<uint8_t> fontBytes = System::IO::File::ReadAllBytes(fontPath);
// Initialize the FontDefinition object passing TTF as the FontType value, "ttf" as the fileExtension value,
// and ByteContentStreamSource object based on the fontBytes array
System::SharedPtr<FontDefinition> fontDef = System::MakeObject<FontDefinition (Aspose::Font::FontType::TTF, u"ttf", System::MakeObject<ByteContentStreamSource>(fontBytes));
// Load the font
System::SharedPtr<Aspose::Font::Font> font = Aspose::Font::Font::Open(fontDef);