W cyfrowej typografii czcionki definiują określone style, które mają być użyte do wyglądu znaków. Najczęściej czcionki są wykorzystywane w dokumentach i na stronach internetowych do stylizacji tekstu. Każda czcionka jest opisana w pliku zawierającym informacje o rozmiarze, gramaturze, stylu, a także kodowaniu znaków. Ponieważ czcionki są ważną częścią różnych formatów plików, Aspose oferuje dedykowane API do obsługi i renderowania popularnych typów czcionek, w tym TrueType, CFF, OpenType, i Typ1. W tym artykule dowiesz się, jak ładować, zapisywać i wyodrębniać informacje z czcionek przy użyciu C# z Aspose.Font for .NET.
- Interfejs API do manipulowania i zarządzania czcionkami platformy .NET
- Ładuj i zapisuj czcionki CFF, TrueType i Type1 przy użyciu języka C#
- Wyodrębnij informacje o metrykach czcionek za pomocą języka C#
- Wykryj symbole łacińskie w czcionkach za pomocą C#
Interfejs API manipulowania czcionkami platformy .NET — bezpłatne pobieranie
Aspose.Font for .NET to lokalny interfejs API, który umożliwia implementację funkcji zarządzania czcionkami przy użyciu języka C# w aplikacjach .NET. Wraz z ładowaniem, zapisywaniem i wyodrębnianiem informacji z czcionki, interfejs API umożliwia również renderowanie glifu lub tekstu, jeśli jest to wymagane. Możesz pobrać interfejs API lub zainstalować go w swoich aplikacjach .NET za pomocą NuGet.
PM> Install-Package Aspose.Font
Załaduj lub zapisz czcionki z pliku za pomocą C#
Możesz załadować czcionkę z pliku zapisanego w pamięci cyfrowej, aby pobrać informacje o czcionce. Aspose.Font for .NET udostępnia osobne klasy do czynienia z określonymi typami czcionek, tj. CFF, TrueType itp. Poniżej przedstawiono kroki, aby załadować i zapisać czcionkę.
- Załaduj czcionkę z pliku (używając ścieżki pliku lub tablicy bajtów) za pomocą klasy FontDefinition.
- Uzyskaj dostęp do informacji o czcionce za pomocą klasy CffFont, TtfFont lub Type1Font.
- Zapisz plik (jeśli jest to wymagane).
Załaduj i zapisz czcionkę CFF
Poniższy przykładowy kod pokazuje, jak ładować i zapisywać czcionki CFF przy użyciu języka C#.
// Aby uzyskać pełne przykłady i pliki danych, przejdź do https://github.com/aspose-font/Aspose.Font-for-.NET
//tablica bajtów, z której ma zostać załadowana czcionka
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;
//Pracuj z danymi z właśnie załadowanego obiektu CffFont
//Zapisz CffFont na dysku
//Wyjściowa nazwa pliku czcionki z pełną ścieżką
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";
cffFont.Save(outputFile);
Załaduj i zapisz czcionkę TrueType
Poniższy przykładowy kod pokazuje, jak ładować i zapisywać czcionki TrueType przy użyciu języka C#.
// Aby uzyskać pełne przykłady i pliki danych, przejdź do https://github.com/aspose-font/Aspose.Font-for-.NET
//tablica bajtów, z której ma zostać załadowana czcionka
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;
//Pracuj z danymi z właśnie załadowanego obiektu TtfFont
//Zapisz TtfFont na dysku
//Wyjściowa nazwa pliku czcionki z pełną ścieżką
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";
ttfFont.Save(outputFile);
Załaduj i zapisz czcionkę Type1
Poniższy przykładowy kod pokazuje, jak ładować i zapisywać czcionki Type1 przy użyciu języka C#.
// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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;
Wyodrębnij metryki czcionek za pomocą C#
Aspose.Font for .NET umożliwia również pobieranie informacji o metrykach czcionek, takich jak Ascender, Descender, TypoAscender, TypoDescender i UnitsPerEm. Aby to zrobić, wykonaj następujące czynności.
- Użyj klasy FontDefinition, aby załadować czcionkę TrueType lub Type1 z pliku.
- Otwórz czcionkę przy użyciu odpowiedniej klasy typu czcionki, tj. Type1Font, TtfFont itp.
- Uzyskaj dostęp do informacji o metrykach czcionki.
Poniższe przykłady kodu pokazują, jak wyodrębnić metryki czcionek z czcionek TrueType i Type1 przy użyciu języka C#.
Wyodrębnij metryki z czcionki TrueType
// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);
//Uzyskaj tabelę kodowania Unicode cmap z czcionki jako obiekt TtfCMapFormatBaseTable, aby uzyskać dostęp do informacji o glifie czcionki dla symbolu „A”.
//Sprawdź również, czy czcionka ma obiekt TtfGlyfTable (tabela „glyf”), aby uzyskać dostęp do glifu.
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);
//Kod dla symbolu „A”.
char unicode = (char)65;
//Indeks glifów dla „A”
uint glIndex = cmapTable.GetGlyphIndex(unicode);
if (glIndex != 0)
{
//Glif dla „A”
Glyph glyph = font.GetGlyphById(glIndex);
if (glyph != null)
{
//Wydrukuj metryki glifów
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)));
}
}
}
Wyodrębnij metryki z czcionki Type1
// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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);
Wykryj symbole łacińskie w czcionkach za pomocą C#
Możesz również wykryć tekst łaciński w czcionkach, dekodując kody glifów przy użyciu Aspose.Font dla platformy .NET. Poniżej przedstawiono kroki, aby wykonać tę operację.
- Załaduj czcionkę z pliku przy użyciu klasy FontDefinition.
- Odkoduj GlyphId przy użyciu metody DecodeToGid() odpowiedniej klasy czcionek.
Poniższe przykłady kodu pokazują, jak dekodować symbole łacińskie w czcionkach TrueType i Type1 przy użyciu języka C#.
Wykryj symbole łacińskie w czcionce TrueType
// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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));
}
Wykryj symbole łacińskie w czcionce Type1
// Aby uzyskać pełne przykłady i pliki danych, przejdź do 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));
}
Wniosek
W tym artykule pokazano, jak programowo ładować i zapisywać czcionki CFF, TrueType i Type1 przy użyciu języka C#. Ponadto nauczyłeś się, jak wyodrębniać informacje o metrykach czcionek z czcionek TrueType i Type1 w aplikacjach .NET. Więcej ciekawych funkcji oferowanych przez Aspose.Font for .NET można znaleźć w dokumentacji. Aby uzyskać więcej aktualizacji, odwiedzaj Aspose.Font blog.