Caricamento di font SVG | .NET
Caricamento di font SVG con Aspose.Font per .NET
Perché i font SVG?
- Scalabile descrizione vettoriale – ogni glifo è definito da un elemento XML
<glyph>(percorsi, trasformazioni, mappatura Unicode). - Formato web‑first – i font SVG possono essere incorporati direttamente in HTML/CSS (
@font-face) e sono supportati dalla maggior parte dei browser moderni. - Modificabile – poiché i dati sono XML puro è possibile modificare programmaticamente i contorni dei glifi o i metadati prima del rendering o della conversione in un altro formato (TTF/WOFF/OTF).
Aspose.Font fornisce un’API unica e unificata per caricare qualsiasi tipo di font supportato (TTF, OTF, WOFF, WOFF2, SVG, …) e lavorarci come oggetto tipizzato Aspose.Font.Font.
Cosa serve
| Voce | Descrizione | Come ottenerla |
|---|---|---|
| Aspose.Font per .NET | Libreria core che legge/scrive tutti i formati di font supportati (incluso SVG). | dotnet add package Aspose.Fonto tramite l’interfaccia NuGet: https://www.nuget.org/packages/Aspose.Font/ |
| Framework di destinazione | .NET Framework 4.x / .NET Core 3.x / .NET 5/6/7 – qualsiasi piattaforma supportata da Aspose.Font. | Non è necessario alcun runtime aggiuntivo. |
| Importazioni di namespace | csharp<br>using Aspose.Font;<br>using Aspose.Font.Sources;<br>using System.IO;<br> | — |
Aggiungi il pacchetto NuGet
1dotnet add package Aspose.FontConcetti chiave dell’API
| Classe / Enum | Scopo |
|---|---|
FontDefinition | Descrive cosa vuoi caricare (tipo di font + origine). |
FontFileDefinition | Associa una fonte stream (FileSystemStreamSource, ByteContentStreamSource, ecc.) con l’estensione del file ("svg"). |
FileSystemStreamSource / ByteContentStreamSource | Fornisce uno stream leggibile dei byte sottostanti – sia da un file su disco sia da un buffer in memoria. |
Font.Open(FontDefinition) | Metodo factory che analizza l’origine e restituisce un’implementazione concreta Aspose.Font.Font (SvgFont). |
L’unica cosa che cambia tra i formati è il valore dell’enumerazione FontType (Svg) e la stringa dell’estensione file ("svg").
Caricamento di un font SVG – tre scenari comuni
Caricamento dal file system
1using System;
2using System.IO;
3using Aspose.Font;
4using Aspose.Font.Sources;
5
6class LoadSvgFromFile
7{
8 static void Main()
9 {
10 // 1️⃣ Percorso al file *.svg*
11 string svgPath = @"C:\Fonts\MyWebFont.svg";
12
13 // Verifica che il file esista
14 if (!File.Exists(svgPath))
15 throw new FileNotFoundException($"SVG file not found: {svgPath}");
16
17 // 2️⃣ Fonte stream che legge direttamente dal file
18 FileSystemStreamSource streamSrc = new FileSystemStreamSource(svgPath);
19
20 // 3️⃣ FontFileDefinition – indichiamo ad Aspose che l'estensione è "svg"
21 FontFileDefinition fileDef = new FontFileDefinition("svg", streamSrc);
22
23 // 4️⃣ FontDefinition – specifica il tipo di font esatto
24 FontDefinition fontDef = new FontDefinition(FontType.Svg, fileDef);
25
26 // 5️⃣ Carica il font
27 Font svgFont = Font.Open(fontDef);
28
29 Console.WriteLine($"Loaded font: {svgFont.GetType().Name}"); // → SvgFont
30 }
31}Risultato:
svgFontè un’istanza diAspose.Font.Svg.SvgFont. Da qui puoi interrogare i glifi, le metriche o convertirlo in un altro formato.
Caricamento da un array di byte
1using System;
2using System.IO;
3using Aspose.Font;
4using Aspose.Font.Sources;
5
6class LoadSvgFromBytes
7{
8 static void Main()
9 {
10 // Supponiamo che il font SVG sia incluso come risorsa incorporata
11 byte[] svgBytes = File.ReadAllBytes(@"C:\Fonts\MyWebFont.svg");
12
13 // Avvolge i byte grezzi in una fonte stream
14 ByteContentStreamSource byteSrc = new ByteContentStreamSource(svgBytes);
15
16 // Costruisci la definizione – l'estensione deve ancora essere “svg”
17 FontDefinition fd = new FontDefinition(
18 FontType.Svg,
19 "svg",
20 byteSrc);
21
22 // Carica
23 Font svgFont = Font.Open(fd);
24
25 Console.WriteLine($"Glyph count: {((Aspose.Font.Svg.SvgFont)svgFont).Glyphs.Count}");
26 }
27}Quando usarlo:
- Il font è memorizzato all’interno del tuo assembly come risorsa.
- Hai scaricato il font via HTTP e lo hai già in memoria.
Caricamento direttamente da uno stream aperto
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 fonte stream può essere costruita da qualsiasi oggetto Stream
13 FileSystemStreamSource src = new FileSystemStreamSource(fs);
14
15 // Passa fonte stream + estensione direttamente a 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}Perché è importante:
Se possiedi già uno Stream (ad esempio da un upload ASP.NET) non è necessario scriverlo su disco prima – basta avvolgerlo e aprirlo.
Tutti questi scenari sono dimostrati nel repository ufficiale degli esempi:
Conclusione
Con sole tre righe di codice puoi prelevare un font SVG dal disco, dalla memoria o da qualsiasi stream personalizzato e ottenere immediatamente accesso completo programmatico ai percorsi dei glifi, alle metriche e alle capacità di conversione—grazie al modello unificato di Aspose.Font. Combinalo con il motore di rendering di Aspose.SVG se devi rasterizzare testo direttamente su un’immagine o PDF, e avrai una pipeline completa per tipografia web‑centrica moderna in .NET.