Ler informações da fonte

Explore métricas de fonte com a solução Aspose.Font API para C++. Aprenda informações detalhadas sobre cada traço, curva e nuance. Nossa solução permite trabalhar facilmente com glifos, permitindo extrair informações sobre as características exclusivas de qualquer fonte.

 

Mergulhe em um mundo de possibilidades de fontes com a solução Aspose.Font API para C++, que oferece um kit de recursos poderosos, incluindo conversões de fontes, manipulação de glifos, detecção de símbolos latinos e muito mais. Nossa API também permite que você trabalhe com glifos e obtenha informações sobre os glifos incluídos em uma fonte. Eleve seus designs, aprimore seus projetos e libere todo o potencial dos glifos com Aspose.Font para C++. Não espere e faça um teste gratuito!

Um glifo é um design exclusivo para um caractere ou símbolo em um tipo de letra. Para entender melhor essa unidade de fonte, leia o artigo Introduction to Glyph .Métricas de fonte são medidas e especificações usadas para descrevem a aparência visual de um tipo de letra. Essas métricas podem incluir informações como altura dos caracteres, largura dos caracteres, espaçamento entre os caracteres, posição da linha de base, entre outros. Eles permitem que designers e desenvolvedores de software prevejam com precisão o layout do texto em documentos digitais e interfaces de usuário.

Esta página explica como recuperar diferentes métricas de fonte, como número de glifos, altura da letra, largura do glifo ‘A’ etc. No entanto, a funcionalidade completa de trabalhar com glifos é descrita em detalhes no artigo Usando objetos Glyph. O exemplo de código inclui uma seção sobre como recuperar metadados de fonte, incluindo o nome da fonte. Esse tipo de funcionalidade pode ser integrado a aplicativos da Web, como o aplicativo Font Metadata disponível no ecossistema Aspose. Se você quiser aprender exemplos completos e arquivos de dados, acesse Aspose Github Project .

Para receber métricas de fonte, precisamos:

  • Aspose.Font para C++ API, que é uma API de manipulação e conversão de documentos rica em recursos, poderosa e fácil de usar.

  • Abra o gerenciador de pacotes NuGet e procure por Aspose.Font e instale. Você também pode usar o seguinte comando no console do gerenciador de pacotes.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Etapas para obter métricas de fonte usando C++:

  1. Extraia informações sobre uma fonte criando uma instância da classe TtfFont .
  2. Imprima o nome da fonte usando a propriedade FontName.
  3. Imprima o número de glifos na fonte usando a propriedade NumGlyphs. As métricas da fonte, como ascendente, descendente, ascendente de digitação, descendente de digitação e UnitsPerEm também são impressas.
  4. O código então recupera a tabela de codificação unicode cmap da fonte, que é usada para mapear códigos de caracteres para índices de glifos. Ele verifica se a fonte possui a tabela cmap e a tabela glyf, que é usada para acessar os glifos. Se ambas as tabelas estiverem presentes, ele recupera o índice glyf para o caractere A e, em seguida, obtém o glifo para o símbolo A.
  5. Imprima a caixa delimitadora do glifo A e sua largura.

Código C++ para obter informações sobre glifos da fonte

    using Aspose::Font;
    using Aspose::Font::Glyphs;
    using Aspose::Font::Ttf;
    //Font file name with the full path
    
    System::SharedPtr<FontDefinition> fd = System::MakeObject<FontDefinition>(Aspose::Font::FontType::TTF, System::MakeObject<FontFileDefinition>(u"ttf", System::MakeObject<FileSystemStreamSource>(fileName)));
    System::SharedPtr<TtfFont> font = System::DynamicCast_noexcept<Aspose::Font::Ttf::TtfFont>(Aspose::Font::Font::Open(fd));
    
    System::String name = font->get_FontName();
    System::Console::WriteLine(System::String(u"Font name: ") + name);
    System::Console::WriteLine(System::String(u"Glyph count: ") + font->get_NumGlyphs());
    System::String metrics = System::String::Format(u"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}", font->get_Metrics()->get_Ascender(), font->get_Metrics()->get_Descender(), font->get_Metrics()->get_TypoAscender(), font->get_Metrics()->get_TypoDescender(), font->get_Metrics()->get_UnitsPerEM());
    
    System::Console::WriteLine(metrics);
    
    //Get cmap unicode encoding table from the font as object TtfCMapFormatBaseTable to access the information about the font glyph for symbol 'A'.
    //Also check that font has object TtfGlyfTable (table 'glyf') to access glyph.
    System::SharedPtr<Aspose::Font::TtfCMapFormats::TtfCMapFormatBaseTable> cmapTable;
    if (font->get_TtfTables()->get_CMapTable() != nullptr)
    {
        cmapTable = font->get_TtfTables()->get_CMapTable()->FindUnicodeTable();
    }
    if (cmapTable != nullptr && font->get_TtfTables()->get_GlyfTable() != nullptr)
    {
        System::Console::WriteLine(System::String(u"Font cmap unicode table: PlatformID = ") + cmapTable->get_PlatformId() + u", PlatformSpecificID = " + cmapTable->get_PlatformSpecificId());
    
        //Code for 'A' symbol
        char16_t unicode = (char16_t)65;
    
        //Glyph index for 'A'
        uint32_t glIndex = cmapTable->GetGlyphIndex(unicode);
    
        if (glIndex != static_cast<uint32_t>(0))
        {
            //Glyph for 'A'
            System::SharedPtr<Glyph> glyph = font->GetGlyphById(glIndex);
            if (glyph != nullptr)
            {
                //Print glyph metrics
                System::Console::WriteLine(u"Glyph metrics for 'A' symbol:");
                System::String bbox = System::String::Format(System::String(u"Glyph BBox: Xmin = {0}, Xmax = {1}") + u", Ymin = {2}, Ymax = {3}", glyph->get_GlyphBBox()->get_XMin(), glyph->get_GlyphBBox()->get_XMax(), glyph->get_GlyphBBox()->get_YMin(), glyph->get_GlyphBBox()->get_YMax());
                System::Console::WriteLine(bbox);
                System::Console::WriteLine(System::String(u"Width:") + font->get_Metrics()->GetGlyphWidth(System::MakeObject<GlyphUInt32Id>(glIndex)));
            }
        }
    }



Perguntas frequentes

1. Qual é a métrica da fonte?

É a propriedade que determina a forma como a fonte será renderizada na tela. Algumas das métricas, como subida, descida, largura e kerning, são semelhantes às métricas Glyph .

2. Como obtenho métricas de fonte?

Especifique a fonte com a qual deseja trabalhar. Usando as propriedades da interface de classe Aspose.Font.IFontMetrics, extraia as informações sobre as métricas de fonte necessárias.

3. O que são metadados de fontes?

Os metadados da fonte são basicamente informações sobre ela. Inclui muitos dados, como nome da fonte, nome da família da fonte, nome do postscript, licenciamento, informações do autor e do designer e muito mais.

4. Como altero os metadados da fonte?

Para ver ou alterar as informações da fonte on-line, use nosso aplicativo Font Metadata .