No post anterior, você viu como carregar e trabalhar com as fontes CFF, TrueType, OpenType e Type1 de dentro seus aplicativos C++. Este artigo leva você um passo adiante, demonstrando como detectar os símbolos latinos em uma fonte programaticamente usando C++. Após a detecção, você pode decidir se uma fonte suporta os símbolos latinos ou não.
- API C++ para detectar símbolos latinos em fontes
- Detectar símbolos latinos em fontes TrueType usando C++
- Detectar símbolos latinos em fontes Type1 usando C++
API C++ para detectar símbolos latinos em fontes
Aspose.Font for C++ é uma API de manipulação e gerenciamento de fontes que permite detectar o suporte de símbolos latinos nas fontes com bastante facilidade. Você pode baixar a API ou instalá-la via NuGet.
PM> Install-Package Aspose.Font.Cpp
Detectar símbolos latinos em fontes TrueType em C++
Detectar o suporte de símbolos latinos usando Aspose.Font para C++ é tão simples quanto uma torta. A seguir estão as etapas para verificar se uma determinada fonte TrueType oferece suporte a símbolos latinos ou não.
- Crie um objeto da classe FontDefinition para carregar a fonte especificando seu tipo como TrueType.
- Crie um objeto da classe TtfFont para acessar as informações da fonte.
- Percorra os códigos possíveis e decodifique-os em IDs de glifo.
- Combine os IDs de glifo para verificar se os símbolos latinos são suportados na fonte TrueType de origem ou não.
O exemplo de código a seguir mostra como detectar símbolos latinos em fontes TrueType usando 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";
//Nome do arquivo de fonte com caminho completo
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()));
}
Detectar símbolos latinos em fontes Type1 em C++
O processo de detecção de símbolos latinos em fontes Type1 é o mesmo que você fez para fontes TrueType. A única diferença é o uso da classe Type1Font. As etapas a seguir demonstram o processo completo de detecção de símbolos latinos em fontes Type1.
- Use a classe FontDefinition para carregar a fonte especificando seu tipo como Type1.
- Use a classe Type1Font para acessar as informações da fonte.
- Percorra os códigos possíveis e decodifique-os em IDs de glifo.
- Combine os IDs de glifo para verificar o suporte de símbolos latinos na fonte Type1 fornecida.
O exemplo de código a seguir mostra como detectar símbolos latinos na fonte Type1 usando 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";
//Nome do arquivo de fonte com caminho completo
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()));
}
Conclusão
Neste artigo, você aprendeu como detectar símbolos latinos em fontes TrueType e Type1 usando C++. Os exemplos de código neste artigo permitem determinar se os símbolos latinos são suportados por uma determinada fonte ou não. Você pode aprender mais sobre a API de manipulação de fontes C++ usando documentação.