Leggi le informazioni sui caratteri

Esplora le metriche dei caratteri con la soluzione API Aspose.Font per C++. Scopri informazioni dettagliate su ogni tratto, curva e sfumatura. La nostra soluzione ti consente di lavorare senza sforzo con i glifi, consentendoti di estrarre informazioni sulle caratteristiche uniche di qualsiasi carattere.

 

Immergiti in un mondo di possibilità di caratteri con la soluzione API Aspose.Font per C++ che ti offre un kit di potenti funzionalità, tra cui conversioni di caratteri, manipolazione di glifi, rilevamento di simboli latini e altro ancora. La nostra API ti consente inoltre di lavorare con i glifi e ottenere informazioni sui glifi inclusi in un carattere. Migliora i tuoi progetti, potenzia i tuoi progetti e sblocca tutto il potenziale dei glifi con Aspose.Font per C++. Non aspettare e ottieni una prova gratuita!

Un glifo è un design unico per un carattere o un simbolo in un carattere tipografico. Per comprendere meglio questa unità di carattere, leggi l’articolo Introduzione a Glyph . Le metriche dei caratteri sono misurazioni e specifiche utilizzate per descrivere l’aspetto visivo di un carattere tipografico. Queste metriche possono includere informazioni come l’altezza dei caratteri, la larghezza dei caratteri, la spaziatura tra i caratteri e la posizione della linea di base, tra le altre. Consentono a progettisti e sviluppatori di software di prevedere con precisione il layout del testo nei documenti digitali e nelle interfacce utente.

Questa pagina spiega come recuperare diverse metriche dei caratteri come il numero di glifi, l’altezza delle lettere, la larghezza del glifo ‘A’, ecc. Tuttavia, la funzionalità completa dell’utilizzo dei glifi è descritta in dettaglio nell’articolo Uso degli oggetti glifi. L’esempio di codice include una sezione sul recupero dei metadati dei caratteri, incluso il nome del carattere. Questo tipo di funzionalità può essere integrato in applicazioni web, come l’app Font Metadata disponibile nell’ecosistema Aspose. Se vuoi imparare esempi completi e file di dati, vai su Aspose Github Project .

Per ricevere le metriche dei font abbiamo bisogno di:

  • Aspose.Font per l'API C++ che è un'API per la manipolazione e la conversione dei documenti ricca di funzionalità, potente e facile da usare.

  • Apri il gestore pacchetti NuGet e cerca Aspose.Font e installa. È inoltre possibile utilizzare il seguente comando dalla console di Package Manager.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Passaggi per ottenere le metriche dei caratteri utilizzando C++:

  1. Estrai informazioni su un font creando un’istanza della classe TtfFont .
  2. Stampa il nome del font utilizzando la proprietà FontName.
  3. Stampa il numero di glifi nel carattere utilizzando la proprietà NumGlyphs. Vengono stampate anche le metriche dei caratteri, ad esempio ascendente, discendente, ascendente di battitura, discendente di battitura e UnitsPerEm.
  4. Il codice quindi recupera la tabella di codifica unicode cmap dal font, che viene utilizzata per mappare i codici dei caratteri agli indici dei glifi. Controlla se il font ha sia la tabella cmap che la tabella glyf, che viene utilizzata per accedere ai glifi. Se sono presenti entrambe le tabelle, recupera l’indice “glyf” per il carattere “A” e quindi ottiene il glifo per il simbolo “A”.
  5. Stampa il riquadro di delimitazione del glifo “A” e la sua larghezza.

Codice C++ per ottenere informazioni sui glifi del font

    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)));
            }
        }
    }



FAQ

1. Qual è la metrica del carattere?

È la proprietà che determina il modo in cui il carattere verrà visualizzato sullo schermo. Alcune delle metriche come ascesa, discesa, larghezza e crenatura sono simili a Metriche dei glifi .

2. Come ottengo le metriche dei caratteri?

Specifica il carattere con cui vuoi lavorare. Utilizzando le proprietà dell’interfaccia della classe Aspose.Font.IFontMetrics, estrai le informazioni sulla metrica dei caratteri di cui hai bisogno.

3. Cosa sono i metadati dei caratteri?

I metadati dei caratteri sono fondamentalmente informazioni al riguardo. Include molti dati come il nome del carattere, il nome della famiglia del carattere, il nome Postscript, le informazioni sulla licenza, sull’autore e sul designer e molto altro.

4. Come si modificano i metadati dei caratteri?

Per visualizzare o modificare le informazioni sui caratteri online, utilizza la nostra applicazione Metadati dei caratteri .