←Select platform

PDFFont Structure

Summary

Contains the information about a PDF font.

Syntax
C#
C++/CLI
Java
Python
[SerializableAttribute()] 
public struct PDFFont 
public class PDFFont 
[SerializableAttribute()] 
public value class PDFFont : public System.ValueType  
class PDFFont: 
Remarks

The PDFFont structure is used as the type for the PDFDocument.Fonts collection.

You can read the fonts of a PDF page using the PDFDocument.ParseDocumentStructure method with the PDFParseDocumentStructureOptions.Fonts as part of the options parameter. When this method returns, The PDFDocument.Fonts collection will be populated with the PDFFont objects found in the document.

The font height and width is not stored in the PDFFont structure, instead it is stored in the PDFObject.TextProperties property of the text or hyperlink object.

PDFFont matches the font properties from PDF specification and contains the following members:

Member Description
FaceName Name of the font found in the file such as "Arial", "Times New Roman" or "ArialBoldEmbeddedSubset" or any value the creator of the PDF chose when creating the document.
FontType Type of font. Typically "Type0", "Type1", "TrueType" or any other font types defined by the PDFFont.Type constants.
Encoding Character set encoding used by this font. This could be "StandardEncoding", "WinAnsiEncoding", or any other encodings defined by the PDFFont.Encoding constants.
DescendantCID Descendant CIDFont name if this is a Type 0 font.
EmbeddingType Font embedding type, such as None, Embedded or EmbeddedSubset.

Refer to the example below for sample source code on how to parse these values.

Example

This example parses the fonts from a PDF document and shows their information.

C#
using Leadtools; 
using Leadtools.Codecs; 
using Leadtools.Controls; 
using Leadtools.Pdf; 
using Leadtools.Svg; 
using Leadtools.WinForms; 
 
 
private static void DocumentFontsExample() 
{ 
   // Make a copy of 'leadtools.pdf' installed with LEADTOOLS 
   string pdfFile = @"C:\LEADTOOLS22\Resources\Images\leadtools.pdf"; 
 
   using (var document = new PDFDocument(pdfFile)) 
   { 
      document.ParseDocumentStructure(PDFParseDocumentStructureOptions.Fonts); 
 
      Console.WriteLine("Fonts found in the document:"); 
      if (document.Fonts != null && document.Fonts.Count > 0) 
      { 
         foreach (PDFFont font in document.Fonts) 
         { 
            string faceName = GetPDFFontFaceName(font); 
            string type = GetPDFFontTypeName(font); 
            string encoding = GetPDFFontEncodingName(font); 
 
            Console.WriteLine($"  Face name:{faceName}\n    type:{type} encoding:{encoding}"); 
         } 
      } 
   } 
} 
 
private static string GetPDFFontFaceName(PDFFont font) 
{ 
   if (string.IsNullOrEmpty(font.FaceName)) 
      return string.Empty; 
 
   string faceName = font.FaceName; 
 
   // Strip out everything between + and - 
   char[] separator = { '+', '-' }; 
   int index = faceName.IndexOfAny(separator); 
   if (index != -1) 
   { 
      faceName = faceName.Substring(index + 1); 
      index = faceName.IndexOfAny(separator); 
      if (index != -1) 
         faceName = faceName.Substring(0, index); 
   } 
 
   switch (font.EmbeddingType) 
   { 
      case PDFFontEmbeddingType.Embedded: 
         faceName += " (Embedded)"; 
         break; 
 
      case PDFFontEmbeddingType.EmbeddedSubset: 
         faceName += " (Embedded Subset)"; 
         break; 
 
      case PDFFontEmbeddingType.None: 
      default: 
         break; 
   } 
 
   return faceName; 
} 
 
private static string GetPDFFontTypeName(PDFFont font) 
{ 
   if (string.IsNullOrEmpty(font.FontType)) 
      return string.Empty; 
 
   if (string.Compare(PDFFont.TypeType0, font.FontType, true) == 0) 
   { 
      if (string.Compare(PDFFont.TypeCIDFontType2, font.DescendantCID, true) == 0) 
         return "TrueType (CID)"; 
      else 
         return "Type 2 (CID)"; 
   } 
 
   if (string.Compare(PDFFont.TypeType1, font.FontType, true) == 0) 
      return "Type 1"; 
 
   if (string.Compare(PDFFont.TypeType3, font.FontType, true) == 0) 
      return "Type 3"; 
 
   return font.FontType; 
} 
 
private static string GetPDFFontEncodingName(PDFFont font) 
{ 
   if (string.IsNullOrEmpty(font.Encoding)) 
      return "Custom"; 
 
   if (string.Compare(PDFFont.EncodingWinAnsiEncoding, font.Encoding, true) == 0) 
      return "Ansi"; 
 
   if (string.Compare(PDFFont.EncodingStandardEncoding, font.Encoding, true) == 0) 
      return "Standard"; 
 
   if (string.Compare(PDFFont.EncodingPDFDocEncoding, font.Encoding, true) == 0) 
      return "PDF"; 
 
   if (string.Compare(PDFFont.EncodingMacExpertEncoding, font.Encoding, true) == 0) 
      return "MAC Expert"; 
 
   if (string.Compare(PDFFont.EncodingMacRomanEncoding, font.Encoding, true) == 0) 
      return "MAC Roman"; 
 
   return font.Encoding; 
} 
Requirements

Target Platforms

Help Version 22.0.2023.7.10
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Pdf Assembly

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.