En la publicación anterior, ha visto cómo cargar y trabajar con fuentes CFF, TrueType, OpenType y Type1 desde dentro sus aplicaciones C++. Este artículo lo lleva un paso más allá al demostrar cómo detectar los símbolos latinos en una fuente mediante programación usando C++. Después de la detección, puede decidir si una fuente admite los símbolos latinos o no.

API de C++ para detectar símbolos latinos en fuentes

Aspose.Font for C++ es una API de manipulación y administración de fuentes que le permite detectar la compatibilidad con símbolos latinos en las fuentes con bastante facilidad. Puede descargar la API o instalarla a través de NuGet.

PM> Install-Package Aspose.Font.Cpp

Detectar símbolos latinos en fuentes TrueType en C++

Detectar el soporte de símbolos latinos usando Aspose.Font for C++ es tan simple como un pastel. Los siguientes son los pasos para verificar si una fuente TrueType en particular admite símbolos latinos o no.

  • Cree un objeto de la clase FontDefinition para cargar la fuente especificando su tipo como TrueType.
  • Cree un objeto de la clase TtfFont para acceder a la información de la fuente.
  • Recorra los posibles códigos y decodifiquelos en ID de glifos.
  • Haga coincidir los ID de glifo para verificar si los símbolos latinos son compatibles con la fuente TrueType de origen o no.

El siguiente ejemplo de código muestra cómo detectar símbolos latinos en fuentes TrueType mediante 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";
//Nombre de archivo de fuente con ruta completa
    
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 en fuentes Type1 en C++

El proceso de detección de símbolos latinos en las fuentes Type1 es el mismo que ha hecho para las fuentes TrueType. La única diferencia es el uso de la clase Type1Font. Los siguientes pasos demuestran el proceso completo de detección de símbolos latinos en fuentes Type1.

  • Utilice la clase FontDefinition para cargar la fuente especificando su tipo como Type1.
  • Utilice la clase Type1Font para acceder a la información de la fuente.
  • Recorra los posibles códigos y decodifiquelos en ID de glifos.
  • Haga coincidir los ID de glifo para comprobar la compatibilidad con los símbolos latinos en la fuente Type1 proporcionada.

El siguiente ejemplo de código muestra cómo detectar símbolos latinos en la fuente 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";
//Nombre de archivo de fuente con ruta completa
    
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()));
}

Conclusión

En este artículo, ha aprendido a detectar símbolos latinos en fuentes TrueType y Type1 usando C++. Los ejemplos de código de este artículo le permiten determinar si los símbolos latinos son compatibles con una fuente en particular o no. Puede obtener más información sobre la API de manipulación de fuentes de C++ utilizando documentación.

Ver también