Lire les informations de police
Explorez les métriques de police avec Aspose.Font API Solution pour C++. Découvrez des informations détaillées sur chaque trait, courbe et nuance. Notre solution vous permet de travailler facilement avec les glyphes, vous permettant d’extraire des informations sur les caractéristiques uniques de toute police.
Plongez dans un monde de possibilités de police avec Aspose.Font API Solution pour C++ qui vous offre une boîte à outils puissante, incluant les conversions de police, la manipulation de glyphes, la détection de symboles latins, et plus encore. Notre API vous permet également de travailler avec les glyphes et d'obtenir des informations sur les glyphes inclus dans une police. Élevez vos conceptions, dynamisez vos projets, et libérez le plein potentiel des glyphes avec Aspose.Font pour C++. N'attendez plus et obtenez un essai gratuit!
Un glyphe est une conception unique pour un caractère ou un symbole dans une police. Pour mieux comprendre cette unité de police, lisez l’article Introduction to Glyph . Les métriques de police sont des mesures et spécifications utilisées pour décrire l’apparence visuelle d’une police. Ces métriques peuvent inclure des informations telles que la hauteur des caractères, la largeur des caractères, l’espacement entre les caractères, et la position de la ligne de base, entre autres. Elles permettent aux concepteurs et aux développeurs de logiciels de prédire avec précision la disposition du texte dans les documents numériques et les interfaces utilisateur.
Cette page explique comment récupérer différentes métriques de police telles que le nombre de glyphes, la hauteur de la lettre, la largeur du glyphe ‘A’, etc. Cependant, la fonctionnalité complète de travail avec les glyphes est décrite en détail dans l’article Utilisation des objets Glyphe. L’exemple de code comprend une section sur la récupération des métadonnées de police, y compris le nom de la police. Ce type de fonctionnalité peut être intégré dans des applications web, comme l’application Font Metadata disponible dans l’écosystème Aspose. Si vous souhaitez consulter des exemples complets et des fichiers de données, veuillez vous rendre sur le Github Project d’Aspose.
Pour obtenir les métriques de police, nous avons besoin de :
L'API Aspose.Font pour C++ qui est riche en fonctionnalités, puissante et facile à utiliser pour la manipulation et la conversion de documents.
Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.Font et installez-le. Vous pouvez également utiliser la commande suivante depuis la console du Gestionnaire de packages.
Package Manager Console Command
PM> Install-Package Aspose.Font
Étapes pour obtenir les métriques de police avec C++ :
- Extraire des informations sur une police en créant une instance de la classe TtfFont .
- Imprimer le nom de la police en utilisant la propriété FontName.
- Imprimer le nombre de glyphes dans la police en utilisant la propriété NumGlyphs. Les métriques de la police, telles que l’ascendant, le descendant, l’ascendant typographique, le descendant typographique et les UnitsPerEm sont également imprimées.
- Le code récupère ensuite la table d’encodage unicode
cmapde la police, qui est utilisée pour mapper les codes de caractères aux indices de glyphes. Il vérifie si la police possède à la fois la tablecmapet la tableglyf, qui est utilisée pour accéder aux glyphes. Si les deux tables sont présentes, il récupère l’indexglyfpour le caractèreApuis obtient le glyphe du symboleA. - Imprimer la boîte englobante du glyphe
Aet sa largeur.
Code C++ pour obtenir des informations sur les glyphes de la police
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)));
}
}
}