Завантаження SVG шрифтів | .NET

Завантаження SVG шрифтів за допомогою Aspose.Font для .NET

Чому SVG шрифти?

Aspose.Font надає єдиний, уніфікований API для завантаження будь‑якого підтримуваного типу шрифту (TTF, OTF, WOFF, WOFF2, SVG, …) і роботи з ним як з сильно типізованим об’єктом Aspose.Font.Font.

Що потрібно

ЕлементОписЯк отримати
Aspose.Font for .NETОсновна бібліотека, що читає/записує всі підтримувані формати шрифтів (включаючи SVG).dotnet add package Aspose.Font
або через інтерфейс NuGet UI: https://www.nuget.org/packages/Aspose.Font/
Цільовий фреймворк.NET Framework 4.x / .NET Core 3.x / .NET 5/6/7 – будь‑яка платформа, підтримувана Aspose.Font.Додаткових середовищ виконання не потрібно.
Простори іменcsharp<br>using Aspose.Font;<br>using Aspose.Font.Sources;<br>using System.IO;<br>

Додайте пакет NuGet

1dotnet add package Aspose.Font

Основні концепції API

Клас / EnumПризначення
FontDefinitionОписує що потрібно завантажити (тип шрифту + джерело).
FontFileDefinitionПоєднує джерело потоку (FileSystemStreamSource, ByteContentStreamSource тощо) з розширенням файлу ("svg").
FileSystemStreamSource / ByteContentStreamSourceЗабезпечують читабельний потік підлеглих байтів – з файлу на диску або з буфера в пам’яті.
Font.Open(FontDefinition)Фабричний метод, який аналізує джерело та повертає конкретну реалізацію Aspose.Font.Font (SvgFont).

Єдине, що змінюється між форматами, – це значення enum FontType (Svg) та рядок розширення файлу ("svg").

Завантаження SVG шрифту – три поширені сценарії

Завантаження з файлової системи

 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.Sources;
 5
 6class LoadSvgFromFile
 7{
 8    static void Main()
 9    {
10        // 1️⃣ Path to the *.svg* file
11        string svgPath = @"C:\Fonts\MyWebFont.svg";
12
13        // Verify the file exists
14        if (!File.Exists(svgPath))
15            throw new FileNotFoundException($"SVG file not found: {svgPath}");
16
17        // 2️⃣ Stream source that reads directly from the file
18        FileSystemStreamSource streamSrc = new FileSystemStreamSource(svgPath);
19
20        // 3️⃣ FontFileDefinition – we tell Aspose the extension is "svg"
21        FontFileDefinition fileDef = new FontFileDefinition("svg", streamSrc);
22
23        // 4️⃣ FontDefinition – specify the exact font type
24        FontDefinition fontDef = new FontDefinition(FontType.Svg, fileDef);
25
26        // 5️⃣ Load the font
27        Font svgFont = Font.Open(fontDef);
28
29        Console.WriteLine($"Loaded font: {svgFont.GetType().Name}");   // → SvgFont
30    }
31}

Result: svgFont is an instance of Aspose.Font.Svg.SvgFont. From here you can query glyphs, metrics, or convert it to another format.

Завантаження з масиву байтів

 1using System;
 2using System.IO;
 3using Aspose.Font;
 4using Aspose.Font.Sources;
 5
 6class LoadSvgFromBytes
 7{
 8    static void Main()
 9    {
10        // Assume the SVG font was bundled as an embedded resource
11        byte[] svgBytes = File.ReadAllBytes(@"C:\Fonts\MyWebFont.svg");
12
13        // Wrap the raw bytes into a stream source
14        ByteContentStreamSource byteSrc = new ByteContentStreamSource(svgBytes);
15
16        // Build the definition – extension still must be “svg”
17        FontDefinition fd = new FontDefinition(
18            FontType.Svg,
19            "svg",
20            byteSrc);
21
22        // Load
23        Font svgFont = Font.Open(fd);
24
25        Console.WriteLine($"Glyph count: {((Aspose.Font.Svg.SvgFont)svgFont).Glyphs.Count}");
26    }
27}

Коли використовувати:

Завантаження безпосередньо з відкритого потоку

 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            // The stream source can be constructed from any Stream object
13            FileSystemStreamSource src = new FileSystemStreamSource(fs);
14
15            // Pass stream source + extension straight into 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}

Чому це важливо:
Якщо у вас уже є Stream (наприклад, з завантаження в ASP.NET), не потрібно спочатку записувати його на диск – достатньо обгорнути його і відкрити.

Усі ці сценарії продемонстровані в офіційному репозиторії прикладів:

Висновок

Всього кількома рядками коду ви можете отримати SVG‑шрифт з диска, пам’яті або будь‑якого користувацького потоку і миттєво отримати повний програмний доступ до контурів гліфів, метрик та можливостей конвертації — завдяки уніфікованій моделі Aspose.Font. Додайте рушій рендерингу Aspose.SVG, якщо треба растеризувати текст безпосередньо на зображення або PDF, і ви отримаєте повний конвеєр для сучасної веб‑центричної типографіки в .NET.

Have any questions about Aspose.Font?



Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.