package com.aspose.words.examples.rendering_printing;
import java.util.ArrayList;
import java.util.Arrays;
import com.aspose.words.Document;
import com.aspose.words.FolderFontSource;
import com.aspose.words.FontSettings;
import com.aspose.words.FontSourceBase;
import com.aspose.words.examples.Utils;
public class SpecifyTrueTypeFontsLocation {
private static final String dataDir = Utils.getSharedDataDir(SpecifyTrueTypeFontsLocation.class) + "RenderingAndPrinting/";
public static void main(String[] args) throws Exception {
// Specifying a Font Folder
specifyAFontFolder();
// Specifying Multiple Font Folders
specifyMultipleFontFolders();
// Specifying Fonts to be Read from both the System Fonts Folder and a Custom Folder
specifyFontsFromBothSystemFontsFolderAndCustomFolder();
}
public static void specifyAFontFolder() throws Exception {
Document doc = new Document(dataDir + "Rendering.doc");
// Note that this setting will override any default font sources that are being searched by default. Now only these folders will be searched for
// fonts when rendering or embedding fonts. To add an extra font source while keeping system font sources then use both FontSettings.GetFontSources and
// FontSettings.SetFontSources instead.
FontSettings.getDefaultInstance().setFontsFolder("/Users/username/MyFonts/", false);
doc.save(dataDir + "Rendering.SpecifyingAFontFolder_Out.pdf");
}
public static void specifyMultipleFontFolders() throws Exception {
Document doc = new Document(dataDir + "Rendering.doc");
// Note that this setting will override any default font sources that are being searched by default. Now only these folders will be searched for
// fonts when rendering or embedding fonts. To add an extra font source while keeping system font sources then use both FontSettings.GetFontSources and
// FontSettings.SetFontSources instead.
FontSettings.getDefaultInstance().setFontsFolders(new String[] { "/Users/username/MyFonts/", "/Users/username/Documents/Fonts/" }, true);
doc.save(dataDir + "Rendering.SpecifyMultipleFontFolders_Out.pdf");
}
public static void specifyFontsFromBothSystemFontsFolderAndCustomFolder() throws Exception {
Document doc = new Document(dataDir + "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 and /Library/Fonts/ on Mac OS X.
// We add this array to a new ArrayList to make adding or removing font entries much easier.
ArrayList<FolderFontSource> fontSources = new ArrayList(Arrays.asList(FontSettings.getDefaultInstance().getFontsSources()));
// Add a new folder source which will instruct Aspose.Words to search the following folder for fonts.
FolderFontSource folderFontSource = new FolderFontSource("/Users/username/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 = fontSources.toArray(new FontSourceBase[fontSources.size()]);
// Apply the new set of font sources to use.
FontSettings.getDefaultInstance().setFontsSources(updatedFontSources);
doc.save(dataDir + "Rendering.SpecifyFontsToBeReadFromBothSystemFontsFolderAndCustomFolder_Out.pdf");
}
}