PDFsharp Sample: Private Fonts

Modified on 2015/12/16 14:26 by Thomas Hövel — Categorized as: PDFsharp Samples, Samples, TODO

<< Previous^UpNext >>
This sample shows how to use fonts that are not installed with Windows.

Note:  XPrivateFontCollection is no longer supported and no longer recommended. This sample is outdated. Use the IFontResolver interface.

Applications that use PDFsharp or MigraDoc 1.50 beta 3b or newer should use the IFontResolver interface.
PDFsharp Sample: Font Resolver

PDF Output File

See the PDF file created by this sample: output.pdf (21 kB)

Screen Shots

Here is a sample screen shot:

PDF file with private fonts

Source Code

This is the source code that shows how to load private fonts from a resource (WPF build):
public void Add(Uri baseUri, string familyName)
{
  if (String.IsNullOrEmpty(familyName))
    throw new ArgumentNullException("familyName");
  if (familyName.Contains(","))
    throw new NotImplementedException("Only one family name is supported.");
 
  // family name starts right of '#'
  int idxHash = familyName.IndexOf('#');
  if (idxHash < 0)
    throw new ArgumentException("Family name must contain a '#'. Example './#MyFontFamilyName'", "familyName");
 
  string key = familyName.Substring(idxHash + 1);
  if (String.IsNullOrEmpty(key))
    throw new ArgumentException("familyName has invalid format.");
 
  if (this.fontFamilies.ContainsKey(key))
    throw new ArgumentException("An entry with the specified family name already exists.");
 
  System.Windows.Media.FontFamily fontFamily = new System.Windows.Media.FontFamily(baseUri, familyName);
 
  this.fontFamilies.Add(key, fontFamily);
}

Note: The samples on this site usually show and discuss code snippets only. The complete source code of the samples with solutions for Visual Studio is available from the download area on CodePlex.