Schriftarten sind ein integraler Bestandteil digitaler Dokumente und Webseiten, die verwendet werden, um das Erscheinungsbild des Textes zu definieren. Die Schriftartdateien werden verwendet, um Informationen über die Schriftarten wie Stile, Gewicht, Größe usw. zu speichern. Es könnte der Fall eintreten, dass Sie Schriftarten manipulieren müssten, um ihre Informationen zu extrahieren. Für solche Szenarien erfahren Sie in diesem Artikel, wie Sie Informationen aus TrueType, CFF und Type1-Schriftarten mit C++ laden und lesen.

Bibliothek zur Bearbeitung von C++-Schriftarten

Aspose.Font for C++ ist eine leistungsstarke API zur Schriftbearbeitung, mit der Sie mit TrueType, CFF, OpenType und Type1 arbeiten können. , EOT und viele andere Schriftarten aus Ihren C++ Anwendungen. Sie können Codierungsinformationen aus den Schriftarten laden, speichern und extrahieren sowie mit Glyphen arbeiten. Die API kann aus dem Abschnitt downloads heruntergeladen oder über NuGet installiert werden.

Laden Sie CFF, TrueType und Type1-Schriftarten mit C++

Mit Aspose.Font for C++ können Sie die CFF, TrueType und Type1-Schriftarten aus den Dateien laden, die sich auf Ihrem Speichermedium befinden. Im Folgenden sind die Schritte zum Laden einer Schriftart aufgeführt.

  • Erstellen Sie ein Objekt der Klasse FontDefinition, um die Schriftart zu laden, indem Sie ihren Typ angeben, z. B. TrueType, Type1 usw.
  • Verwenden Sie die Klassen CffFont, TtfFont oder Type1Font, um CFF, TrueType und Type1-Schriftarten jeweils aus dem FontDefinition objekt zu öffnen.

Laden Sie CFF-Schriftarten mit C++

Das folgende Codebeispiel zeigt, wie CFF-Schriftarten mit C++ geladen werden.

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"OpenSans-Regular.cff";
//Schriftartdateiname mit vollständigem Pfad
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::CFF, System::MakeObject<FontFileDefinition>(u"cff", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<CffFont> ttfFont = System::DynamicCast_noexcept<Aspose::Font::Cff::CffFont>(Aspose::Font::Font::Open(fd));

Laden Sie TrueType-Schriftarten mit C++

Das folgende Codebeispiel zeigt, wie TrueType-Schriftarten mit C++ geladen werden.

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"Montserrat-Regular.ttf";
//Schriftartdateiname mit vollständigem Pfad
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<TtfFont> ttfFont = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));

Laden Sie Type1-Schriftarten mit C++

Das folgende Codebeispiel zeigt, wie Type1-Schriftarten mit C++ geladen werden.

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"courier.pfb";
//Schriftartdateiname mit vollständigem Pfad
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::Type1, System::MakeObject<FontFileDefinition>(u"pfb", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<Type1Font> font = System::DynamicCast_noexcept<Aspose::Font::Type1::Type1Font>(Aspose::Font::Font::Open(fd));

Extrahieren Sie Schriftartmetriken aus TrueType oder Type1 mit C++

Mit Aspose.Font for C++ können Sie auch die Schriftartmetriken extrahieren, die Informationen wie Ascender, Descender, TypoAscender, TypoDescender und UnitsPerEm enthalten. Im Folgenden finden Sie die Schritte zum Abrufen von Schriftartmetriken aus einer TrueType oder Type1-Schriftart.

  • Erstellen Sie ein Objekt der Klasse FontDefinition, um TrueType oder Type1-Schriftarten zu laden.
  • Öffnen Sie die Schriftart mit der Klasse TtfFont oder Type1Font entsprechend dem Typ der Schriftart.
  • Extrahieren Sie die Metrikinformationen der Schriftart.

Rufen Sie Schriftartmetriken von TrueType-Schriftarten mit C++ ab

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"Montserrat-Regular.ttf";
//Schriftartdateiname mit vollständigem Pfad
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<TtfFont> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
System::String name = font->get_FontName();
System::Console::WriteLine(System::String(u"Font name: ") + name);
System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
System::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.
System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
if (font->get_TtfTables()->get_CMapTable() != nullptr)
{
    cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
}
if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
{
    System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
    //Code für 'A'-Symbol
    char16_t unicode = (char16_t)65;
    
    //Glyphenindex für 'A'
    uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
    if (glIndex != static_cast<uint32_t>(0))
    {
        //Glyphe für 'A'
        System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
        if (glyph != nullptr)
        {
            //Drucken Sie Glyphenmetriken
            System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
            System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
            System::Console::WriteLine(bbox);
            System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
        }
    }
}

Extrahieren Sie Font-Metriken aus Type1 Font mit C++

For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-C
System::String fileName = dataDir + u"courier.pfb";
//Schriftartdateiname mit vollständigem Pfad
    
System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::Type1, System::MakeObject<FontFileDefinition>(u"pfb", System::MakeObject<FileSystemStreamSource>(fileName)));
System::SharedPtr<Type1Font> font = System::DynamicCast_noexcept<Aspose::Font::Type1::Type1Font>(Aspose::Font::Font::Open(fd));
    
System::String name = font->get_FontName();
System::Console::WriteLine(System::String(u"Font name: ") + name);
System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
System::Console::WriteLine(metrics);

Fazit

In diesem Artikel haben Sie gelernt, wie Sie CFF, TrueType und Type1-Schriftarten laden und ihre Informationen mit C++ extrahieren. Sie können mehr über die C++ Font Manipulation API erfahren, indem Sie die Dokumentation verwenden.