Glyphs and Metrics of Type1 Fonts | .NET
Contents
[
Hide
Show
]Get Font Metrics
Font metrics contain information such as Ascender
, Descender
, TypoAscender
, TypoDescender
and UnitsPerEm
. Aspose.Font for .NET API can read the Font Metrics information from the Type1 Font File using the following sample code.
1// For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-.NET
2string fileName = dataDir + "courier.pfb"; //Font file name with full path
3
4FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName)));
5Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font;
6
7string name = font.FontName;
8Console.WriteLine("Font name: " + name);
9Console.WriteLine("Glyph count: " + font.NumGlyphs);
10string metrics = string.Format(
11 "Font metrics: ascender - {0}, descender - {1}, typo ascender = {2}, typo descender = {3}, UnitsPerEm = {4}",
12 font.Metrics.Ascender, font.Metrics.Descender,
13 font.Metrics.TypoAscender, font.Metrics.TypoDescender, font.Metrics.UnitsPerEM);
14
15Console.WriteLine(metrics);
Detect Latin Symbols
Aspose.Font for .NET lets you detect Latin Symbols from Type1 font files. This can be achieved using the following sample code.
- Load the Font file using FontFileDefinition
- Decode the GlyphId using the DecodeToGid() method
1// For complete examples and data files, please go to https://github.com/aspose-font/Aspose.Font-for-.NET 2string fileName = dataDir + "courier.pfb"; //Font file name with full path 3 4FontDefinition fd = new FontDefinition(FontType.Type1, new FontFileDefinition("pfb", new FileSystemStreamSource(fileName))); 5Type1Font font = Aspose.Font.Font.Open(fd) as Type1Font; 6 7bool latinText = true; 8 9 10for (uint code = 65; code < 123; code++) 11{ 12 GlyphId gid = font.Encoding.DecodeToGid(code); 13 if (gid == null || gid == GlyphUInt32Id.NotDefId) 14 { 15 latinText = false; 16 } 17} 18 19if (latinText) 20{ 21 Console.WriteLine(string.Format("Font {0} supports latin symbols.", font.FontName)); 22} 23else 24{ 25 Console.WriteLine(string.Format("Latin symbols are not supported by font {0}.", font.FontName)); 26}