When a font needs to be embedded in a PDF document, client code will be called in order to determine what action to take. Client code will return an object of PdfFontEmbeddingPolicy which will be used to enact that action.
PdfFontManager is a class that is used by the GlobalResources class to maintain and manage fonts within PDF documents. In addition to tracking which fonts are requested, PdfFontManager also handles policy decisions for embedding fonts in PDF files. The choice to embed a font or not depends upon the circumstances. For example, some fonts may publish that they are not to be embedded without permission from the creator. Since the PDF Generating toolkit can't know if client code has permission for a given font, the action to be taken for embedding should be provided by client code where possible. The PdfFontManager contains a default policy which embeds the font when the permissions are PreviewAndPrint, Unrestricted, NoSubsetting, and Editable. In all other cases it will throw an exception.
This class contains tools for measuring text that is to be placed in a page in a PDF document. Concrete versions of this class are constructed behind the scenes for client code. It is unlikely that client code would ever need to create or construct a concrete version of this class. FontBounds, Ascent, Descent, and Leading are measured in PDF font design units, in which glyph coordinates are laid out in a design grid that is 1000 units by 1000 units. In practice, glyphs will go outside this grid for descender and for glyphs that project to the left (swashes, for example). To convert these numbers to a particular point size, use this formula: final size = (size in PDF design units x font size in points) / 1000
PdfFontResource represents a typographic font that will be used for placing text on a page in a PDF document. This object represents the font as a whole and not a rendering of the font in a specific size. Font resources represent a single style of the font and not a family of fonts. For example, Basketball Overextended and Basketball Overextended Bold are considered to be two different fonts, even if conceptually they are in the same family.
This delegate represents a method of function that will be called when a request has come to embed a particular font within a PDF. Client code will be passed a font resource and the embedding permissions that are contained within the font's data. The permissions describe the circumstances under which the font may be embedded. It is up to client code to respect these permissions.