Chargement des polices SVG | .NET
Chargement des polices SVG avec Aspose.Font pour .NET
Pourquoi les polices SVG ?
- Description vectorielle évolutive – chaque glyphe est défini par un élément XML
<glyph>(chemins, transformations, mappage Unicode). - Format privilégié pour le Web – les polices SVG peuvent être intégrées directement dans HTML/CSS (
@font-face) et sont prises en charge par la plupart des navigateurs modernes. - Modifiable – comme les données sont du XML brut, vous pouvez ajuster programmatiquement les contours des glyphes ou les métadonnées avant le rendu ou la conversion vers un autre format (TTF/WOFF/OTF).
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ément | Description | Comment l’obtenir |
|---|---|---|
| Aspose.Font for .NET | Bibliothèque principale qui lit/écrit tous les formats de police pris en charge (y compris SVG). | dotnet add package Aspose.Fontou 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 noms | csharp<br>using Aspose.Font;<br>using Aspose.Font.Sources;<br>using System.IO;<br> | — |
Ajouter le package NuGet
1dotnet add package Aspose.FontConcepts clés de l’API
| Classe / Enum | Objectif |
|---|---|
FontDefinition | Définit ce que vous voulez charger (type de police + source). |
FontFileDefinition | Associe une source de flux (FileSystemStreamSource, ByteContentStreamSource, etc.) à l’extension de fichier ("svg"). |
FileSystemStreamSource / ByteContentStreamSource | Fournissent 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 :
svgFontest une instance deAspose.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 :
- La police est stockée dans votre assembly en tant que ressource.
- Vous avez téléchargé la police via HTTP et elle se trouve déjà en mémoire.
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.