Leggi le informazioni del font
Esplora le metriche dei font con Aspose.Font API Solution per C++. Scopri approfondimenti dettagliati su ogni tratto, curva e sfumatura. La nostra soluzione ti consente di lavorare agevolmente con i glifi, permettendoti di estrarre informazioni sulle caratteristiche uniche di qualsiasi font.
Immergiti in un mondo di possibilità tipografiche con Aspose.Font API Solution per C++ che ti offre un set di potenti funzionalità, tra cui conversioni di font, manipolazione di glifi, rilevamento di simboli latini e molto altro. La nostra API ti consente anche di lavorare con i glifi e ottenere informazioni sui glifi inclusi in un font. Eleva i tuoi progetti, potenzia le tue creazioni e sfrutta al massimo il potenziale dei glifi con Aspose.Font per C++. Non aspettare, prova la versione gratuita!
Un glifo è un design unico per un carattere o simbolo in un tipo di carattere. Per comprendere meglio questa unità del font, leggi l’articolo Introduction to Glyph . I metrici dei font sono misure e specifiche usate per descrivere l’aspetto visivo di un tipo di carattere. 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. Permettono a designer e sviluppatori di prevedere accuratamente il layout del testo in documenti digitali e interfacce utente.
Questa pagina spiega come recuperare diverse metriche dei font come il numero di glifi, l’altezza delle lettere, la larghezza del glifo ‘A’, ecc. Tuttavia, la funzionalità completa di lavoro con i glifi è descritta in dettaglio nell’articolo Using Glyph objects. L’esempio di codice include una sezione sul recupero dei metadati del font, incluso il nome del font. Questo tipo di funzionalità può essere integrato in applicazioni web, come l’app Font Metadata disponibile nell’ecosistema Aspose. Se desideri esempi completi e file dati, visita il progetto Github Project .
Per ottenere le metriche dei font abbiamo bisogno di:
API Aspose.Font per C++ che è una API ricca di funzionalità, potente e facile da usare per la manipolazione e conversione di documenti.
Apri il gestore pacchetti NuGet, cerca Aspose.Font e installalo. Puoi anche utilizzare il seguente comando dalla console del Package Manager.
Package Manager Console Command
PM> Install-Package Aspose.Font
Passaggi per ottenere le metriche dei font usando C++:
- Estrai informazioni su un font creando un’istanza della classe TtfFont .
- Stampa il nome del font utilizzando la proprietà FontName.
- Stampa il numero di glifi nel font utilizzando la proprietà NumGlyphs. Vengono stampate anche le metriche del font, come ascender, descender, typo ascender, typo descender e UnitsPerEm.
- Il codice quindi recupera la tabella di codifica Unicode
cmapdal font, che viene usata per mappare i codici dei caratteri agli indici dei glifi. Verifica se il font possiede sia la tabellacmapsia la tabellaglyf, quest’ultima usata per accedere ai glifi. Se entrambe le tabelle sono presenti, recupera l’indiceglyfper il carattereAe poi ottiene il glifo per il simboloA. - Stampa il bounding box del glifo
Ae 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)));
}
}
}