Nella [tipografia] digitale 1, i caratteri definiscono stili particolari da utilizzare per l’aspetto dei personaggi. Molto spesso, i caratteri vengono utilizzati nei documenti e nelle pagine Web per stilizzare il testo. Ciascun carattere è descritto in un file che contiene informazioni su dimensioni, peso, stili e codifica dei caratteri. Poiché i caratteri sono una parte importante dei vari formati di file, Aspose offre un’API dedicata per gestire la manipolazione e il rendering dei tipi di carattere più diffusi tra cui TrueType, CFF, OpenType, e Tipo1. In questo articolo imparerai come caricare, salvare ed estrarre informazioni dai caratteri usando C# con Aspose.Font for .NET.
- API di gestione e manipolazione dei caratteri .NET
- Carica e salva i caratteri CFF, TrueType e Type1 usando C#
- Estrai le informazioni sulle metriche dei caratteri usando C#
- Rileva i simboli latini nei caratteri usando C#
API di manipolazione dei caratteri .NET - Download gratuito
Aspose.Font for .NET è un’API locale che ti consente di implementare le funzionalità di gestione dei caratteri usando C# all’interno delle tue applicazioni .NET. Oltre al caricamento, al salvataggio e all’estrazione di informazioni dal carattere, l’API consente anche di eseguire il rendering del glifo o del testo, se necessario. Puoi scaricare l’API o installarla all’interno delle tue applicazioni .NET utilizzando NuGet.
PM> Install-Package Aspose.Font
Carica o salva caratteri da file usando C#
È possibile caricare un font dal file archiviato nella memoria digitale per recuperare le informazioni sul font. Aspose.Font per .NET espone classi separate per gestire i tipi particolari di font, ad esempio CFF, TrueType, ecc. Di seguito sono riportati i passaggi per caricare e salvare un font.
- Carica il carattere dal file (usando il percorso del file o l’array di byte) usando la classe FontDefinition.
- Accedi alle informazioni sul carattere utilizzando la classe CffFont, TtfFont o Type1Font.
- Salva il file (se richiesto).
Carica e salva il carattere CFF
L’esempio di codice seguente mostra come caricare e salvare i caratteri CFF usando C#.
// Per esempi completi e file di dati, visitare https://github.com/aspose-font/Aspose.Font-for-.NET
//array di byte da cui caricare Font
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;
//Lavora con i dati dell'oggetto CffFont appena caricato
//Salva CffFont su disco
//Nome del file del carattere di output con percorso completo
string outputFile = RunExamples.GetDataDir_Data() + "OpenSans-Regular_out.cff";
cffFont.Save(outputFile);
Carica e salva il carattere TrueType
L’esempio di codice seguente mostra come caricare e salvare i caratteri TrueType usando C#.
// Per esempi completi e file di dati, visitare https://github.com/aspose-font/Aspose.Font-for-.NET
//array di byte da cui caricare Font
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;
//Lavora con i dati dell'oggetto TtfFont appena caricato
//Salva TtfFont su disco
//Nome del file del carattere di output con percorso completo
string outputFile = RunExamples.GetDataDir_Data() + "Montserrat-Regular_out.ttf";
ttfFont.Save(outputFile);
Carica e salva il carattere Type1
L’esempio di codice seguente mostra come caricare e salvare i caratteri Type1 usando C#.
// Per esempi completi e file di dati, visitare 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;
Estrai le metriche dei caratteri usando C#
Aspose.Font per .NET consente inoltre di recuperare le informazioni sulle metriche dei caratteri come Ascender, Descender, TypoAscender, TypoDescender e UnitsPerEm. Di seguito sono riportati i passaggi per farlo.
- Usa la classe FontDefinition per caricare il font TrueType o Type1 dal file.
- Aprire il carattere utilizzando la rispettiva classe di tipo di carattere, ad esempio Type1Font, TtfFont, ecc.
- Accedi alle informazioni sulle metriche del carattere.
Gli esempi di codice seguenti mostrano come estrarre le metriche dei caratteri dai caratteri TrueType e Type1 usando C#.
Estrai le metriche dal carattere TrueType
// Per esempi completi e file di dati, visitare 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);
//Ottieni la tabella di codifica cmap unicode dal font come oggetto TtfCMapFormatBaseTable per accedere alle informazioni sul glifo del font per il simbolo 'A'.
//Verifica anche che il font abbia l'oggetto TtfGlyfTable (tabella 'glyf') per accedere al glifo.
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);
//Codice per il simbolo 'A'
char unicode = (char)65;
//Indice glifo per 'A'
uint glIndex = cmapTable.GetGlyphIndex(unicode);
if (glIndex != 0)
{
//Glifo per 'A'
Glyph glyph = font.GetGlyphById(glIndex);
if (glyph != null)
{
//Stampa le metriche dei glifi
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)));
}
}
}
Estrai le metriche dal carattere Type1
// Per esempi completi e file di dati, visitare 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);
Rileva i simboli latini nei caratteri usando C#
Puoi anche rilevare il testo latino nei caratteri decodificando i codici dei glifi usando Aspose.Font per .NET. Di seguito sono riportati i passaggi per eseguire questa operazione.
- Carica il Font dal file usando la classe FontDefinition.
- Decodifica il GlyphId usando il metodo DecodeToGid() della rispettiva classe di font.
Gli esempi di codice seguenti mostrano come decodificare i simboli latini nei caratteri TrueType e Type1 usando C#.
Rileva i simboli latini nel carattere TrueType
// Per esempi completi e file di dati, visitare 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));
}
Rileva i simboli latini nel carattere Type1
// Per esempi completi e file di dati, visitare 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));
}
Conclusione
In questo articolo, hai visto come caricare e salvare i caratteri CFF, TrueType e Type1 a livello di codice usando C#. Inoltre, hai imparato come estrarre le informazioni sulla metrica dei caratteri dai caratteri TrueType e Type1 all’interno delle tue applicazioni .NET. Puoi esplorare funzionalità più interessanti offerte da Aspose.Font per .NET nella documentazione. Per ulteriori aggiornamenti, continua a visitare Aspose.Font blog.