Caricamento di font SVG | .NET

Caricamento di font SVG con Aspose.Font per .NET

Perché i font SVG?

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

VoceDescrizioneCome ottenerla
Aspose.Font per .NETLibreria core che legge/scrive tutti i formati di font supportati (incluso SVG).dotnet add package Aspose.Font
o 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 namespacecsharp<br>using Aspose.Font;<br>using Aspose.Font.Sources;<br>using System.IO;<br>

Aggiungi il pacchetto NuGet

1dotnet add package Aspose.Font

Concetti chiave dell’API

Classe / EnumScopo
FontDefinitionDescrive cosa vuoi caricare (tipo di font + origine).
FontFileDefinitionAssocia una fonte stream (FileSystemStreamSource, ByteContentStreamSource, ecc.) con l’estensione del file ("svg").
FileSystemStreamSource / ByteContentStreamSourceFornisce 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 di Aspose.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:

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.

Have any questions about Aspose.Font?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.