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
- Upptäck latinska symboler i TrueType-teckensnitt med C++
- Upptäck latinska symboler i Type1-teckensnitt med C++
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.