Lire les informations sur la police

Explorez les métriques de polices avec la solution API Aspose.Font pour C++. Découvrez des informations détaillées sur chaque trait, courbe et nuance. Notre solution vous permet de travailler sans effort avec des glyphes, vous permettant ainsi d’extraire des informations sur les caractéristiques uniques de n’importe quelle police.

 

Plongez dans un monde de possibilités de polices avec la solution API Aspose.Font pour C++ qui vous offre un kit de fonctionnalités puissantes, notamment les conversions de polices, la manipulation de glyphes, la détection de symboles latins, et bien plus encore. Notre API vous permet également de travailler avec des glyphes et d'obtenir des informations sur les glyphes inclus dans une police. Élevez vos conceptions, dynamisez vos projets et libérez tout le potentiel des glyphes avec Aspose.Font pour C++. N'attendez plus et bénéficiez d'un essai gratuit !

Un glyphe est une conception unique pour un caractère ou un symbole dans une police de caractères. Pour mieux comprendre cette unité de police, lisez l’article Introduction à Glyph . Les métriques de police sont des mesures et des spécifications utilisées pour décrire l’aspect visuel d’une police de caractères. Ces mesures 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. Ils 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 des lettres, 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 Utiliser les objets glyphes. 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, telles que l’application Font Metadata disponible dans l’écosystème Aspose. Si vous souhaitez apprendre des exemples complets et des fichiers de données, rendez-vous sur Aspose Github Project .

Pour recevoir les métriques de police, nous avons besoin de :

  • Aspose.Font pour l'API C++ qui est une API de manipulation et de conversion de documents riche en fonctionnalités, puissante et facile à utiliser.

  • Ouvrez le gestionnaire de packages NuGet, recherchez Aspose.Font et installez-le. Vous pouvez également utiliser la commande suivante à partir de la console du gestionnaire de packages.

Package Manager Console Command


    PM> Install-Package Aspose.Font

Étapes pour obtenir des métriques de police à l'aide de C++ :

  1. Extraire des informations sur une police créant une instance de la classe TtfFont .
  2. Imprimez le nom de la police à l’aide de la propriété FontName.
  3. Imprimez le nombre de glyphes dans la police à l’aide de la propriété NumGlyphs. Les métriques de police, telles que l’ascendant, le descendant, l’ascendant typo, le descendant typo et UnitsPerEm sont également imprimées.
  4. Le code récupère ensuite la table d’encodage unicode cmap de 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 table cmap et la table glyf, qui est utilisée pour accéder aux glyphes. Si les deux tables sont présentes, il récupère l’index glyf pour le caractère A puis obtient le glyphe pour le symbole A.
  5. Imprimer la boîte englobante du glyphe “A” et 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)));
            }
        }
    }



FAQ

1. Quelle est la métrique de la police ?

C’est la propriété qui détermine la façon dont la police sera rendue à l’écran. Certaines des métriques telles que l’ascension, la descente, la largeur et le crénage sont similaires aux métriques de glyphe .

2. Comment puis-je obtenir des métriques de police ?

Spécifiez la police avec laquelle vous souhaitez travailler. À l’aide des propriétés de l’interface de classe Aspose.Font.IFontMetrics, extrayez les informations sur les métriques de police dont vous avez besoin.

3. Qu’est-ce que les métadonnées de police ?

Les métadonnées de police sont essentiellement des informations à ce sujet. Il comprend de nombreuses données telles que le nom de la police, le nom de la famille de la police, le nom Postscript, la licence, les informations sur l’auteur et le concepteur, et bien plus encore.

4. Comment modifier les métadonnées des polices ?

Pour voir ou modifier les informations sur les polices en ligne, utilisez notre application Font Metadata .