V digitální typografii definují písma konkrétní styly, které mají být použity pro vzhled postav. Nejčastěji se fonty používají v dokumentech a na webových stránkách ke stylizaci textu. Každé písmo je popsáno v souboru, který obsahuje informace o velikosti znaků, váze, stylech a také kódování. Vzhledem k tomu, že písma jsou důležitou součástí různých formátů souborů, Aspose nabízí vyhrazené API pro manipulaci a vykreslování oblíbených typů písem včetně TrueType, CFF, OpenType, a Typ1. V tomto článku se dozvíte, jak načíst, uložit a extrahovat informace z písem pomocí C# s Aspose.Font for .NET.
- .NET API pro manipulaci a správu písem
- Načítání a ukládání písem CFF, TrueType a Type1 pomocí C#
- Extrahujte informace o metrikách písem pomocí C#
- Detekce latinských symbolů ve fontech pomocí C#
.NET Font Manipulation API – zdarma ke stažení
Aspose.Font for .NET je místní rozhraní API, které umožňuje implementovat funkce správy písem pomocí jazyka C# ve vašich aplikacích .NET. Spolu s načítáním, ukládáním a extrakcí informací z písma vám API také umožňuje v případě potřeby vykreslit glyf nebo text. API si můžete buď stáhnout, nebo je nainstalovat do svých aplikací .NET pomocí NuGet.
PM> Install-Package Aspose.Font
Načtení nebo uložení písem ze souboru pomocí C#
Písmo můžete načíst ze souboru uloženého ve vašem digitálním úložišti a získat tak informace o písmu. Aspose.Font for .NET zpřístupňuje samostatné třídy, které se zabývají konkrétními typy písem, tj. CFF, TrueType atd. Následují kroky k načtení a uložení písma.
- Načtěte písmo ze souboru (pomocí cesty k souboru nebo bajtového pole) pomocí třídy FontDefinition.
- Získejte přístup k informacím o písmu pomocí třídy CffFont, TtfFont nebo Type1Font.
- Uložte soubor (v případě potřeby).
Načíst a uložit písmo CFF
Následující ukázka kódu ukazuje, jak načíst a uložit písma CFF pomocí C#.
// Úplné příklady a datové soubory najdete na https://github.com/aspose-font/Aspose.Font-for-.NET
//bajtové pole, ze kterého se má načíst písmo
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;
//Práce s daty z právě načteného objektu CffFont
//Uložte CffFont na disk
//Název výstupního souboru písem s úplnou cestou
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";
cffFont.Save(outputFile);
Načíst a uložit písmo TrueType
Následující ukázka kódu ukazuje, jak načíst a uložit písma TrueType pomocí C#.
// Úplné příklady a datové soubory najdete na https://github.com/aspose-font/Aspose.Font-for-.NET
//bajtové pole, ze kterého se má načíst písmo
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;
//Práce s daty z právě načteného objektu TtfFont
//Uložte TtfFont na disk
//Název výstupního souboru písem s úplnou cestou
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";
ttfFont.Save(outputFile);
Načíst a uložit písmo Type1
Následující ukázka kódu ukazuje, jak načíst a uložit písma Type1 pomocí C#.
// Úplné příklady a datové soubory najdete na 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;
Extrahujte metriky písem pomocí C#
Aspose.Font for .NET také umožňuje získat informace o metrikách písem, jako jsou Ascender, Descender, TypoAscender, TypoDescender a UnitsPerEm. Níže jsou uvedeny kroky, jak tak učinit.
- Použijte třídu FontDefinition k načtení písem TrueType nebo Type1 ze souboru.
- Otevřete písmo pomocí příslušné třídy typu písma, tj. Type1Font, TtfFont atd.
- Přístup k informacím o metrikách písma.
Následující ukázky kódu ukazují, jak extrahovat metriky písem z písem TrueType a Type1 pomocí C#.
Extrahujte metriky z písma TrueType
// Úplné příklady a datové soubory najdete na 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);
//Získejte tabulku kódování Cmap unicode z písma jako objekt TtfCMapFormatBaseTable pro přístup k informacím o glyfu písma pro symbol 'A'.
//Také zkontrolujte, zda má písmo objekt TtfGlyfTable (tabulka 'glyf') pro přístup ke glyfu.
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);
//Kód pro symbol 'A'
char unicode = (char)65;
//Index glyfů pro „A“
uint glIndex = cmapTable.GetGlyphIndex(unicode);
if (glIndex != 0)
{
//Glyf pro „A“
Glyph glyph = font.GetGlyphById(glIndex);
if (glyph != null)
{
//Vytisknout metriky glyfů
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)));
}
}
}
Extrahujte metriky z písma Type1
// Úplné příklady a datové soubory najdete na 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);
Detekce latinských symbolů ve fontech pomocí C#
Můžete také detekovat latinský text ve fontech dekódováním kódů glyfů pomocí Aspose.Font for .NET. Následují kroky k provedení této operace.
- Načtěte písmo ze souboru pomocí třídy FontDefinition.
- Dekódujte GlyphId pomocí metody DecodeToGid() příslušné třídy písem.
Následující ukázky kódu ukazují, jak dekódovat latinské symboly v písmech TrueType a Type1 pomocí C#.
Detekce latinských symbolů v písmu TrueType
// Úplné příklady a datové soubory najdete na 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));
}
Rozpoznejte latinské symboly v písmu Type1
// Úplné příklady a datové soubory najdete na 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));
}
Závěr
V tomto článku jste viděli, jak načíst a uložit fonty CFF, TrueType a Type1 programově pomocí C#. Dále jste se naučili, jak extrahovat informace o metrikách písem z písem TrueType a Type1 ve vašich aplikacích .NET. Další zajímavé funkce nabízené Aspose.Font for .NET můžete prozkoumat v dokumentaci. Pro více aktualizací pokračujte na Aspose.Font blog.