Chargement des polices SVG | .NET

Chargement des polices SVG avec Aspose.Font pour .NET

Pourquoi les polices SVG ?

Aspose.Font fournit une API unique et unifiée pour charger tout type de police pris en charge (TTF, OTF, WOFF, WOFF2, SVG, …) et travailler avec elle sous la forme d’un objet fortement typé Aspose.Font.Font.

Ce dont vous avez besoin

ÉlémentDescriptionComment l’obtenir
Aspose.Font for .NETBibliothèque principale qui lit/écrit tous les formats de police pris en charge (y compris SVG).dotnet add package Aspose.Font
ou via l’interface NuGet : https://www.nuget.org/packages/Aspose.Font/
Framework cible.NET Framework 4.x / .NET Core 3.x / .NET 5/6/7 – toute plateforme prise en charge par Aspose.Font.Aucun runtime supplémentaire requis.
Importations d’espaces de nomscsharp<br>using Aspose.Font;<br>using Aspose.Font.Sources;<br>using System.IO;<br>

Ajouter le package NuGet

1dotnet add package Aspose.Font

Concepts clés de l’API

Classe / EnumObjectif
FontDefinitionDéfinit ce que vous voulez charger (type de police + source).
FontFileDefinitionAssocie une source de flux (FileSystemStreamSource, ByteContentStreamSource, etc.) à l’extension de fichier ("svg").
FileSystemStreamSource / ByteContentStreamSourceFournissent un flux lisible des octets sous‑jacent – soit à partir d’un fichier disque, soit d’un tampon en mémoire.
Font.Open(FontDefinition)Méthode usine qui analyse la source et renvoie une implémentation concrète Aspose.Font.Font (SvgFont).

La seule chose qui change entre les formats est la valeur de l’énumération FontType (Svg) et la chaîne d’extension de fichier ("svg").

Chargement d’une police SVG – trois scénarios courants

Chargement depuis le système de fichiers

 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.Sources;
 5
 6class LoadSvgFromFile
 7{
 8    static void Main()
 9    {
10        // 1️⃣ Chemin vers le fichier *.svg*
11        string svgPath = @"C:\Fonts\MyWebFont.svg";
12
13        // Vérifier que le fichier existe
14        if (!File.Exists(svgPath))
15            throw new FileNotFoundException($"SVG file not found: {svgPath}");
16
17        // 2️⃣ Source de flux qui lit directement depuis le fichier
18        FileSystemStreamSource streamSrc = new FileSystemStreamSource(svgPath);
19
20        // 3️⃣ FontFileDefinition – on indique à Aspose que l'extension est "svg"
21        FontFileDefinition fileDef = new FontFileDefinition("svg", streamSrc);
22
23        // 4️⃣ FontDefinition – spécifier le type de police exact
24        FontDefinition fontDef = new FontDefinition(FontType.Svg, fileDef);
25
26        // 5️⃣ Charger la police
27        Font svgFont = Font.Open(fontDef);
28
29        Console.WriteLine($"Loaded font: {svgFont.GetType().Name}");   // → SvgFont
30    }
31}

Résultat : svgFont est une instance de Aspose.Font.Svg.SvgFont. À partir de là vous pouvez interroger les glyphes, les métriques ou la convertir vers un autre format.

Chargement depuis un tableau d’octets

 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.Sources;
 5
 6class LoadSvgFromBytes
 7{
 8    static void Main()
 9    {
10        // Supposons que la police SVG ait été intégrée comme ressource embarquée
11        byte[] svgBytes = File.ReadAllBytes(@"C:\Fonts\MyWebFont.svg");
12
13        // Envelopper les octets bruts dans une source de flux
14        ByteContentStreamSource byteSrc = new ByteContentStreamSource(svgBytes);
15
16        // Construire la définition – l'extension doit toujours être “svg”
17        FontDefinition fd = new FontDefinition(
18            FontType.Svg,
19            "svg",
20            byteSrc);
21
22        // Charger
23        Font svgFont = Font.Open(fd);
24
25        Console.WriteLine($"Glyph count: {((Aspose.Font.Svg.SvgFont)svgFont).Glyphs.Count}");
26    }
27}

Quand l’utiliser :

Chargement directement depuis un flux ouvert

 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.Sources;
 5
 6class LoadSvgFromOpenStream
 7{
 8    static void Main()
 9    {
10        using (FileStream fs = File.OpenRead(@"C:\Fonts\MyWebFont.svg"))
11        {
12            // La source de flux peut être construite à partir de n’importe quel objet Stream
13            FileSystemStreamSource src = new FileSystemStreamSource(fs);
14
15            // Passer la source de flux + l'extension directement dans FontDefinition
16            FontDefinition fd = new FontDefinition(
17                FontType.Svg,
18                "svg",
19                src);
20
21            Font svgFont = Font.Open(fd);
22            Console.WriteLine($"Family name: {((Aspose.Font.Svg.SvgFont)svgFont).FamilyNames[0]}");
23        }
24    }
25}

Pourquoi c’est important :
Si vous possédez déjà un Stream (par ex. à partir d’un upload ASP.NET), vous n’avez pas besoin de l’écrire d’abord sur le disque – il suffit de l’envelopper et de le charger.

Tous ces scénarios sont démontrés dans le dépôt officiel des exemples :

Conclusion

En à peine trois lignes de code, vous pouvez extraire une police SVG depuis le disque, la mémoire ou n’importe quel flux personnalisé et obtenir immédiatement un accès programmatique complet à ses chemins de glyphes, métriques et capacités de conversion—grâce au modèle unifié d’Aspose.Font. Combinez cela avec le moteur de rendu d’Aspose.SVG si vous devez rasteriser du texte directement sur une image ou un PDF, et vous disposez d’une chaîne complète pour la typographie moderne orientée Web en .NET.

Have any questions about Aspose.Font?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.