I det föregående inlägget har du sett hur du laddar och arbetar med teckensnitten CFF, TrueType, OpenType och Type1 inifrån dina C++-applikationer. Den här artikeln tar dig ett steg längre genom att demonstrera hur du upptäcker de latinska symbolerna i ett teckensnitt programmatiskt med C++. Efter upptäckt kan du bestämma om ett teckensnitt stöder de latinska symbolerna eller inte.

C++ API för att upptäcka latinska symboler i teckensnitt

Aspose.Font for C++ är ett API för manipulering och hantering av teckensnitt som låter dig upptäcka stödet för latinska symboler i teckensnitten ganska enkelt. Du kan antingen ladda ner API:et eller installera det via NuGet.

PM> Install-Package Aspose.Font.Cpp

Upptäck latinska symboler i TrueType-teckensnitt i C++

Att upptäcka stödet för latinska symboler med Aspose.Font för C++ är enkelt som en plätt. Följande är stegen för att kontrollera om ett visst TrueType-teckensnitt stöder latinska symboler eller inte.

  • Skapa ett objekt av klassen FontDefinition för att ladda teckensnittet genom att ange dess typ som TrueType.
  • Skapa ett objekt av klassen TtfFont för att komma åt teckensnittets information.
  • Gå igenom de möjliga koderna och avkoda dem till glyf-ID:n.
  • Matcha glyph-ID:n för att kontrollera om latinska symboler stöds i källans TrueType-teckensnitt eller inte.

Följande kodexempel visar hur man upptäcker latinska symboler i TrueType-teckensnitt med C++.

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";
//Typsnittsfilnamn med fullständig sökväg
    
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()));
}

Upptäck latinska symboler i Type1-teckensnitt i C++

Processen att upptäcka latinska symboler i Type1-teckensnitt är samma som du har gjort för TrueType-teckensnitt. Den enda skillnaden är användningen av klassen Type1Font. Följande steg demonstrerar den fullständiga processen för detektering av latinska symboler i Type1-teckensnitt.

  • Använd klassen FontDefinition för att ladda teckensnittet genom att ange dess typ som Type1.
  • Använd klassen Type1Font för att komma åt informationen om teckensnittet.
  • Gå igenom de möjliga koderna och avkoda dem till glyf-ID:n.
  • Matcha glyf-ID:n för att kontrollera stödet för latinska symboler i det medföljande typsnittet Type1.

Följande kodexempel visar hur man upptäcker latinska symboler i typsnitt Type1 med 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";
//Typsnittsfilnamn med fullständig sökväg
    
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()));
}

Slutsats

I den här artikeln har du lärt dig hur du upptäcker latinska symboler i TrueType- och Type1-teckensnitt med C++. Kodexemplen i den här artikeln låter dig avgöra om de latinska symbolerna stöds av ett visst teckensnitt eller inte. Du kan lära dig mer om programmeringsgränssnittet för C++ teckensnittsmanipulering med dokumentation.

Se även