У цифровій типографіці шрифти визначають певні стилі, які використовуватимуться для вигляду символів. Найчастіше шрифти використовуються в документах і на веб-сторінках для стилізації тексту. Кожен шрифт описано у файлі, який містить інформацію про розмір символів, вагу, стилі, а також кодування. Оскільки шрифти є важливою частиною різних форматів файлів, Aspose пропонує спеціальний API для роботи з маніпуляціями та відтворенням популярних типів шрифтів, включаючи TrueType, CFF, OpenType, і Тип1. У цій статті ви дізнаєтесь, як завантажувати, зберігати та видобувати інформацію зі шрифтів за допомогою C# за допомогою Aspose.Font for .NET.
- .NET Font Manipulation and Management API
- Завантаження та збереження шрифтів CFF, TrueType і Type1 за допомогою C#
- Отримайте інформацію про показники шрифту за допомогою C#
- Виявлення латинських символів у шрифтах за допомогою C#
.NET Font Manipulation API — безкоштовне завантаження
Aspose.Font for .NET — це локальний API, який дозволяє реалізувати функції керування шрифтами за допомогою C# у ваших програмах .NET. Разом із завантаженням, збереженням і вилученням інформації зі шрифту, API також дозволяє відтворити гліф або текст, якщо потрібно. Ви можете завантажити API або встановити його у своїх програмах .NET за допомогою NuGet.
PM> Install-Package Aspose.Font
Завантажити або зберегти шрифти з файлу за допомогою C#
Ви можете завантажити шрифт із файлу, який зберігається у вашій цифровій пам’яті, щоб отримати інформацію про шрифт. Aspose.Font for .NET надає окремі класи для роботи з певними типами шрифтів, наприклад CFF, TrueType тощо. Нижче наведено кроки для завантаження та збереження шрифту.
- Завантажте шрифт із файлу (використовуючи шлях до файлу або масив байтів) за допомогою класу FontDefinition.
- Доступ до інформації про шрифт за допомогою класу CffFont, TtfFont або Type1Font.
- Збережіть файл (якщо потрібно).
Завантажте та збережіть шрифт CFF
У наступному прикладі коду показано, як завантажити та зберегти шрифти CFF за допомогою C#.
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
//масив байтів для завантаження шрифту
string dataDir = RunExamples.GetDataDir_Data();
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "OpenSans-Regular.cff");
FontDefinition fd = new FontDefinition(FontType.CFF, new FontFileDefinition("cff", new ByteContentStreamSource(fontMemoryData)));
CffFont cffFont = Aspose.Font.Font.Open(fd) as CffFont;
//Робота з даними щойно завантаженого об'єкта CffFont
//Збережіть CffFont на диск
//Виведіть назву файлу шрифту з повним шляхом
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";
cffFont.Save(outputFile);
Завантажте та збережіть шрифт TrueType
У наведеному нижче прикладі коду показано, як завантажити та зберегти шрифти TrueType за допомогою C#.
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
//масив байтів для завантаження шрифту
string dataDir = RunExamples.GetDataDir_Data();
byte[] fontMemoryData = File.ReadAllBytes(dataDir + "Montserrat-Regular.ttf");
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new ByteContentStreamSource(fontMemoryData)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;
//Робота з даними щойно завантаженого об'єкта TtfFont
//Збережіть TtfFont на диск
//Виведіть назву файлу шрифту з повним шляхом
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";
ttfFont.Save(outputFile);
Завантажте та збережіть шрифт Type1
У наступному прикладі коду показано, як завантажити та зберегти шрифти Type1 за допомогою C#.
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;
Видобуток показників шрифту за допомогою C#
Aspose.Font for .NET також дозволяє отримувати інформацію про показники шрифту, наприклад Ascender, Descender, TypoAscender, TypoDescender і UnitsPerEm. Нижче наведено кроки для цього.
- Використовуйте клас FontDefinition, щоб завантажити шрифт TrueType або Type1 із файлу.
- Відкрийте шрифт за допомогою відповідного класу типу шрифту, наприклад Type1Font, TtfFont тощо.
- Доступ до інформації про показники шрифту.
У наведених нижче зразках коду показано, як отримати показники шрифту зі шрифтів TrueType і Type1 за допомогою C#.
Отримайте показники зі шрифту TrueType
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont font = Aspose.Font.Font.Open(fd) as TtfFont;
string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
font.Metrics.Ascender, font.Metrics.Descender,
font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);
Console.WriteLine(metrics);
//Отримайте таблицю кодування cmap Unicode зі шрифту як об’єкт TtfCMapFormatBaseTable для доступу до інформації про гліф шрифту для символу «A».
//Також перевірте, чи має шрифт об’єкт TtfGlyfTable (таблиця 'glyf') для доступу до гліфа.
Aspose.Font.TtfCMapFormats.TtfCMapFormatBaseTable cmapTable = null;
if (font.TtfTables.CMapTable != null)
{
cmapTable = font.TtfTables.CMapTable.FindUnicodeTable();
}
if (cmapTable != null && font.TtfTables.GlyfTable != null)
{
Console.WriteLine("Font cmap unicode table: PlatformID = " + cmapTable.PlatformId + ", PlatformSpecificID = " + cmapTable.PlatformSpecificId);
//Код для символу "А".
char unicode = (char)65;
//Індекс гліфа для «A»
uint glIndex = cmapTable.GetGlyphIndex(unicode);
if (glIndex != 0)
{
//Гліф для "А"
Glyph glyph = font.GetGlyphById(glIndex);
if (glyph != null)
{
//Друкувати метрики гліфів
Console.WriteLine("Glyph metrics for 'A' symbol:");
string bbox = string.Format(
"Glyph BBox: Xmin = {0}, Xmax = {1}" + ", Ymin = {2}, Ymax = {3}",
glyph.GlyphBBox.XMin, glyph.GlyphBBox.XMax,
glyph.GlyphBBox.YMin, glyph.GlyphBBox.YMax);
Console.WriteLine(bbox);
Console.WriteLine("Width:" + font.Metrics.GetGlyphWidth(new GlyphUInt32Id(glIndex)));
}
}
}
Витягніть показники зі шрифту Type1
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;
string name = font.FontName;
Console.WriteLine("Font name: " + name);
Console.WriteLine("Glyph count: " + font.NumGlyphs);
string metrics = string.Format(
"Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
font.Metrics.Ascender, font.Metrics.Descender,
font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);
Console.WriteLine(metrics);
Виявлення латинських символів у шрифтах за допомогою C#
Ви також можете виявити латинський текст у шрифтах, розшифрувавши коди гліфів за допомогою Aspose.Font for .NET. Нижче наведено кроки для виконання цієї операції.
- Завантажте шрифт із файлу за допомогою класу FontDefinition.
- Декодуйте GlyphId за допомогою методу DecodeToGid() відповідного класу шрифту.
У наведених нижче зразках коду показано, як декодувати латинські символи у шрифтах TrueType і Type1 за допомогою C#.
Виявлення латинських символів у шрифті TrueType
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "Montserrat-Regular.ttf"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.TTF, new FontFileDefinition("ttf", new FileSystemStreamSource(fileName)));
TtfFont ttfFont = Aspose.Font.Font.Open(fd) as TtfFont;
bool latinText = true;
for (uint code = 65; code < 123; code++)
{
GlyphId gid = ttfFont.Encoding.DecodeToGid(code);
if (gid == null || gid == GlyphUInt32Id.NotDefId)
{
latinText = false;
}
}
if (latinText)
{
Console.WriteLine(string.Format("Font {0} supports latin symbols.", ttfFont.FontName));
}
else
{
Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", ttfFont.FontName));
}
Виявлення латинських символів у шрифті Type1
// Щоб отримати повні приклади та файли даних, перейдіть на сторінку https://github.com/aspose-font/Aspose.Font-for-.NET
string fileName = dataDir + "courier.pfb"; //Font file name with full path
FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;
bool latinText = true;
for (uint code = 65; code < 123; code++)
{
GlyphId gid = font.Encoding.DecodeToGid(code);
if (gid == null || gid == GlyphUInt32Id.NotDefId)
{
latinText = false;
}
}
if (latinText)
{
Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName));
}
else
{
Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName));
}
Висновок
У цій статті ви побачили, як програмно завантажувати та зберігати шрифти CFF, TrueType і Type1 за допомогою C#. Крім того, ви навчилися отримувати інформацію про показники шрифту зі шрифтів TrueType і Type1 у своїх програмах .NET. Ви можете ознайомитися з іншими цікавими функціями Aspose.Font for .NET у документації. Щоб отримати більше оновлень, продовжуйте відвідувати Aspose.Font блог.