Завантаження SVG шрифтів | .NET
Завантаження SVG шрифтів за допомогою Aspose.Font для .NET
Чому SVG шрифти?
- Масштабований векторний опис – кожен гліф визначається елементом XML
<glyph>(шляхи, трансформації, прив’язка до Unicode). - Формат, орієнтований на веб – SVG‑шрифти можна безпосередньо вбудовувати в HTML/CSS (
@font-face) і вони підтримуються більшістю сучасних браузерів. - Редагований – оскільки дані представлені у вигляді простого XML, їх можна програмно коригувати (контури гліфів, метадані) перед рендерингом або конвертуванням у інший формат (TTF/WOFF/OTF).
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:
svgFontis an instance ofAspose.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}Коли використовувати:
- Шрифт збережений у вашій збірці як ресурс.
- Ви завантажили шрифт через HTTP і вже маєте його в пам’яті.
Завантаження безпосередньо з відкритого потоку
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.