Im vorherigen Beitrag haben Sie gesehen, wie Sie CFF, TrueType, OpenType und Type1-Schriftarten von innen laden und damit arbeiten Ihre C++ Anwendungen. Dieser Artikel führt Sie einen Schritt weiter, indem er zeigt, wie Sie die lateinischen Symbole in einer Schriftart programmgesteuert mit C++ erkennen. Nach der Erkennung können Sie entscheiden, ob eine Schriftart die lateinischen Symbole unterstützt oder nicht.

C++-API zum Erkennen lateinischer Symbole in Schriftarten

Aspose.Font for C++ ist eine API zur Bearbeitung und Verwaltung von Schriftarten, mit der Sie die Unterstützung lateinischer Symbole in den Schriftarten ganz einfach erkennen können. Sie können die API entweder herunterladen oder über NuGet installieren.

PM> Install-Package Aspose.Font.Cpp

Erkennen Sie lateinische Symbole in TrueType-Schriftarten in C++

Die Erkennung der Unterstützung lateinischer Symbole mit Aspose.Font for C++ ist kinderleicht. Im Folgenden finden Sie die Schritte, um zu überprüfen, ob eine bestimmte TrueType-Schriftart lateinische Symbole unterstützt oder nicht.

  • Erstellen Sie ein Objekt der Klasse FontDefinition, um die Schriftart zu laden, indem Sie ihren Typ als TrueType angeben.
  • Erstellen Sie ein Objekt der Klasse TtfFont, um auf die Informationen der Schriftart zuzugreifen.
  • Durchlaufen Sie die möglichen Codes und decodieren Sie sie in Glyphen-IDs.
  • Gleichen Sie die Glyphen-IDs ab, um zu prüfen, ob lateinische Symbole in der Quell-TrueType-Schriftart unterstützt werden oder nicht.

Das folgende Codebeispiel zeigt, wie lateinische Symbole in TrueType-Schriftarten mit C++ erkannt 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));
    
bool latinText = true;
    
    
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
    System::SharedPtr<GlyphId> gid = ttfFont->get_Encoding()->DecodeToGid(code);
    if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
    {
        latinText = false;
    }
}
    
if (latinText)
{
    System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", ttfFont->get_FontName()));
}
else
{
    System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", ttfFont->get_FontName()));
}

Erkennen Sie lateinische Symbole in Type1-Schriftarten in C++

Der Vorgang zum Erkennen lateinischer Symbole in Type1-Schriftarten ist derselbe wie bei TrueType-Schriftarten. Der einzige Unterschied besteht in der Verwendung der Klasse Type1Font. Die folgenden Schritte veranschaulichen den vollständigen Prozess der Erkennung lateinischer Symbole in Type1-Schriftarten.

  • Verwenden Sie die Klasse FontDefinition, um die Schriftart zu laden, indem Sie ihren Typ als Type1 angeben.
  • Verwenden Sie die Klasse Type1Font, um auf die Informationen der Schriftart zuzugreifen.
  • Durchlaufen Sie die möglichen Codes und decodieren Sie sie in Glyphen-IDs.
  • Gleichen Sie die Glyph-IDs ab, um die Unterstützung lateinischer Symbole in der bereitgestellten Type1-Schriftart zu überprüfen.

Das folgende Codebeispiel zeigt, wie lateinische Symbole in Type1-Schriftarten mit C++ erkannt 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));
    
bool latinText = true;
    
    
for (uint32_t code = 65; code < static_cast<uint32_t>(123); code++)
{
    System::SharedPtr<GlyphId> gid = font->get_Encoding()->DecodeToGid(code);
    if (gid == nullptr || gid == System::StaticCast<System::Object>(GlyphUInt32Id::get_NotDefId()))
    {
        latinText = false;
    }
}
    
if (latinText)
{
    System::Console::WriteLine(System::String::Format(u"Font {0} supports latin symbols.", font->get_FontName()));
}
else
{
    System::Console::WriteLine(System::String::Format(u"Latin symbols are not supported by font {0}.", font->get_FontName()));
}

Fazit

In diesem Artikel haben Sie gelernt, wie Sie mit C++ lateinische Symbole in TrueType und Type1-Schriftarten erkennen. Anhand der Codebeispiele in diesem Artikel können Sie feststellen, ob die lateinischen Symbole von einer bestimmten Schriftart unterstützt werden oder nicht. Sie können mehr über die C++-Schriftbearbeitungs-API erfahren, indem Sie Dokumentation verwenden.

Siehe auch