public void SetFontsFoldersSystemAndCustomFolder()
{
// Store the font sources currently used so we can restore them later.
FontSourceBase[] origFontSources = FontSettings.DefaultInstance.GetFontsSources();
//ExStart
//ExFor:FontSettings
//ExFor:FontSettings.GetFontsSources()
//ExFor:FontSettings.SetFontsSources()
//ExId:SetFontsFoldersSystemAndCustomFolder
//ExSummary:Demonstrates how to set Aspose.Words to look for TrueType fonts in system folders as well as a custom defined folder when scanning for fonts.
Document doc = new Document(MyDir + "Rendering.doc");
// Retrieve the array of environment-dependent font sources that are searched by default. For example this will contain a "Windows\Fonts\" source on a Windows machines.
// We add this array to a new ArrayList to make adding or removing font entries much easier.
ArrayList fontSources = new ArrayList(FontSettings.DefaultInstance.GetFontsSources());
// Add a new folder source which will instruct Aspose.Words to search the following folder for fonts.
FolderFontSource folderFontSource = new FolderFontSource("C:\\MyFonts\\", true);
// Add the custom folder which contains our fonts to the list of existing font sources.
fontSources.Add(folderFontSource);
// Convert the Arraylist of source back into a primitive array of FontSource objects.
FontSourceBase[] updatedFontSources = (FontSourceBase[])fontSources.ToArray(typeof(FontSourceBase));
// Apply the new set of font sources to use.
FontSettings.DefaultInstance.SetFontsSources(updatedFontSources);
doc.Save(MyDir + @"\Artifacts\Rendering.SetFontsFolders.pdf");
//ExEnd
// Verify that font sources are set correctly.
Assert.IsInstanceOf(typeof(SystemFontSource), FontSettings.DefaultInstance.GetFontsSources()[0]); // The first source should be a system font source.
Assert.IsInstanceOf(typeof(FolderFontSource), FontSettings.DefaultInstance.GetFontsSources()[1]); // The second source should be our folder font source.
FolderFontSource folderSource = ((FolderFontSource)FontSettings.DefaultInstance.GetFontsSources()[1]);
Assert.AreEqual(@"C:\MyFonts\", folderSource.FolderPath);
Assert.True(folderSource.ScanSubfolders);
// Restore the original sources used to search for fonts.
FontSettings.DefaultInstance.SetFontsSources(origFontSources);
}