API de gestion des polices .NET

En [typographie] numérique 1, les polices définissent des styles particuliers à utiliser pour l’apparence des caractères. Le plus souvent, les polices sont utilisées dans les documents et les pages Web pour styliser le texte. Chaque police est décrite dans un fichier contenant des informations sur la taille, le poids, les styles et l’encodage des caractères. Étant donné que les polices constituent une partie importante des différents formats de fichiers, Aspose propose une API dédiée pour gérer la manipulation et le rendu des types de polices populaires, notamment TrueType, CFF, OpenType, et Type1. Dans cet article, vous apprendrez à charger, enregistrer et extraire des informations à partir de polices à l’aide de C# avec Aspose.Font for .NET.

API de manipulation de polices .NET - Téléchargement gratuit

Aspose.Font for .NET est une API sur site qui vous permet d’implémenter les fonctionnalités de gestion des polices à l’aide de C# dans vos applications .NET. Outre le chargement, l’enregistrement et l’extraction d’informations de la police, l’API vous permet également de rendre le glyphe ou le texte si nécessaire. Vous pouvez soit télécharger l’API, soit l’installer dans vos applications .NET à l’aide de NuGet.

PM> Install-Package Aspose.Font

Charger ou enregistrer des polices à partir d’un fichier à l’aide de C#

Vous pouvez charger une police à partir du fichier stocké sur votre stockage numérique pour récupérer les informations de la police. Aspose.Font for .NET expose des classes distinctes pour traiter les types particuliers de polices, c’est-à-dire CFF, TrueType, etc. Voici les étapes pour charger et enregistrer une police.

  • Chargez la police à partir du fichier (en utilisant le chemin du fichier ou le tableau d’octets) à l’aide de la classe FontDefinition.
  • Accédez aux informations de la police à l’aide de la classe CffFont, TtfFont ou Type1Font.
  • Enregistrez le fichier (si nécessaire).

Charger et enregistrer la police CFF

L’exemple de code suivant montre comment charger et enregistrer des polices CFF à l’aide de C#.

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
//tableau d'octets pour charger la police à partir de
string dataDir = RunExamples.GetDataDir_Data();

byte[] fontMemoryData = File.ReadAllBytes(dataDir + "OpenSans-Regular.cff");
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData)));
CffFont cffFont = Aspose.Font.Font.Open(fd) as CffFont;

//Travailler avec les données de l'objet CffFont qui vient d'être chargé

//Enregistrer CffFont sur le disque
//Nom du fichier de police de sortie avec chemin complet
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";

cffFont.Save(outputFile);

Charger et enregistrer la police TrueType

L’exemple de code suivant montre comment charger et enregistrer des polices TrueType à l’aide de C#.

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
//tableau d'octets pour charger la police à partir de
string dataDir = RunExamples.GetDataDir_Data();
            
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "Montserrat-Regular.ttf");
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new ByteContentStreamSource(fontMemoryData)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

//Travailler avec les données de l'objet TtfFont qui vient d'être chargé

//Enregistrer TtfFont sur le disque
//Nom du fichier de police de sortie avec chemin complet
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";

ttfFont.Save(outputFile);

Charger et enregistrer la police Type1

L’exemple de code suivant montre comment charger et enregistrer des polices Type1 à l’aide de C#.

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

Extraire les métriques de police à l’aide de C#

Aspose.Font for .NET vous permet également de récupérer les informations sur les métriques de police telles que Ascender, Descender, TypoAscender, TypoDescender et UnitsPerEm. Voici les étapes à suivre.

  • Utilisez la classe FontDefinition pour charger la police TrueType ou Type1 à partir du fichier.
  • Ouvrez la police en utilisant la classe de type de police respective, c’est-à-dire Type1Font, TtfFont, etc.
  • Accédez aux informations sur les métriques de la police.

Les exemples de code suivants montrent comment extraire les métriques de police des polices TrueType et Type1 à l’aide de C#.

Extraire les métriques de la police TrueType

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = Aspose.Font.Font.Open(fd) as TtfFont;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

//Obtenez la table d'encodage Unicode cmap de la police en tant qu'objet TtfCMapFormatBaseTable pour accéder aux informations sur le glyphe de police pour le symbole 'A'.
//Vérifiez également que la police a l'objet TtfGlyfTable (table 'glyf') pour accéder au glyphe.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
    cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
    Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);

    //Code pour le symbole 'A'
    char unicode = (char)65;

    //Index glyphe pour 'A'
    uint glIndex = cmapTable.GetGlyphIndex(unicode);

    if (glIndex != 0)
    {
        //Glyphe pour 'A'
        Glyph glyph = font.GetGlyphById(glIndex);
        if (glyph != null)
        {
            //Imprimer les métriques de glyphe
            Console.WriteLine("Glyph metrics for 'A' symbol:");
            string bbox = string.Format(
                "Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
                glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
                glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
            Console.WriteLine(bbox);
            Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
        }
    }
}

Extraire les métriques de la police Type1

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
    "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
    font.Metrics.Ascender, font.Metrics.Descender,
    font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);

Console.WriteLine(metrics);

Détecter les symboles latins dans les polices à l’aide de C#

Vous pouvez également détecter le texte latin dans les polices en décodant les codes de glyphe à l’aide de Aspose.Font for .NET. Voici les étapes pour effectuer cette opération.

  • Chargez la police à partir du fichier à l’aide de la classe FontDefinition.
  • Décodez le GlyphId à l’aide de la méthode DecodeToGid() de la classe de police respective.

Les exemples de code suivants montrent comment décoder les symboles latins dans les polices TrueType et Type1 à l’aide de C#.

Détecter les symboles latins dans la police TrueType

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = ttfFont.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", ttfFont.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", ttfFont.FontName));
}

Détecter les symboles latins dans la police Type1

// Pour des exemples complets et des fichiers de données, rendez-vous sur https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path

FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;

bool latinText = true;


for (uint code = 65; code < 123; code++)
{
    GlyphId gid = font.Encoding.DecodeToGid(code);
    if (gid == null || gid == GlyphUInt32Id.NotDefId)
    {
        latinText = false;
    }
}

if (latinText)
{
    Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName));
}
else
{
    Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName));
}

Conclusion

Dans cet article, vous avez vu comment charger et enregistrer des polices CFF, TrueType et Type1 par programmation à l’aide de C#. De plus, vous avez appris à extraire les informations de métrique de police des polices TrueType et Type1 dans vos applications .NET. Vous pouvez explorer des fonctionnalités plus intéressantes offertes par Aspose.Font for .NET dans la documentation. Pour plus de mises à jour, continuez à visiter Aspose.Font blog.