public class DefaultFontSubstitutionRule
Example:
Document doc = new Document();
FontSettings fontSettings = new FontSettings();
doc.setFontSettings(fontSettings);
// Get the default substitution rule within FontSettings.
// This rule will substitute all missing fonts with "Times New Roman".
DefaultFontSubstitutionRule defaultFontSubstitutionRule = fontSettings.getSubstitutionSettings().getDefaultFontSubstitution();
Assert.assertTrue(defaultFontSubstitutionRule.getEnabled());
Assert.assertEquals("Times New Roman", defaultFontSubstitutionRule.getDefaultFontName());
// Set the default font substitute to "Courier New".
defaultFontSubstitutionRule.setDefaultFontName("Courier New");
// Using a document builder, add some text in a font that we do not have to see the substitution take place,
// and then render the result in a PDF.
DocumentBuilder builder = new DocumentBuilder(doc);
builder.getFont().setName("Missing Font");
builder.writeln("Line written in a missing font, which will be substituted with Courier New.");
doc.save(getArtifactsDir() + "FontSettings.DefaultFontSubstitutionRule.pdf");
Property Getters/Setters Summary | ||
---|---|---|
java.lang.String | getDefaultFontName() | |
void | setDefaultFontName(java.lang.Stringvalue) | |
Gets or sets the default font name. | ||
boolean | getEnabled() | |
void | setEnabled(booleanvalue) | |
Specifies whether the rule is enabled or not. |
public java.lang.String getDefaultFontName() / public void setDefaultFontName(java.lang.String value)
The default value is 'Times New Roman'.
Example:
Shows how to set the default font substitution rule.Document doc = new Document(); FontSettings fontSettings = new FontSettings(); doc.setFontSettings(fontSettings); // Get the default substitution rule within FontSettings. // This rule will substitute all missing fonts with "Times New Roman". DefaultFontSubstitutionRule defaultFontSubstitutionRule = fontSettings.getSubstitutionSettings().getDefaultFontSubstitution(); Assert.assertTrue(defaultFontSubstitutionRule.getEnabled()); Assert.assertEquals("Times New Roman", defaultFontSubstitutionRule.getDefaultFontName()); // Set the default font substitute to "Courier New". defaultFontSubstitutionRule.setDefaultFontName("Courier New"); // Using a document builder, add some text in a font that we do not have to see the substitution take place, // and then render the result in a PDF. DocumentBuilder builder = new DocumentBuilder(doc); builder.getFont().setName("Missing Font"); builder.writeln("Line written in a missing font, which will be substituted with Courier New."); doc.save(getArtifactsDir() + "FontSettings.DefaultFontSubstitutionRule.pdf");
Example:
Shows how to specify a default font.Document doc = new Document(); DocumentBuilder builder = new DocumentBuilder(doc); builder.getFont().setName("Arial"); builder.writeln("Hello world!"); builder.getFont().setName("Arvo"); builder.writeln("The quick brown fox jumps over the lazy dog."); FontSourceBase[] fontSources = FontSettings.getDefaultInstance().getFontsSources(); // The font sources that the document uses contain the font "Arial", but not "Arvo". Assert.assertEquals(1, fontSources.length); Assert.assertTrue(IterableUtils.matchesAny(fontSources[0].getAvailableFonts(), f -> f.getFullFontName().contains("Arial"))); Assert.assertFalse(IterableUtils.matchesAny(fontSources[0].getAvailableFonts(), f -> f.getFullFontName().contains("Arvo"))); // Set the "DefaultFontName" property to "Courier New" to, // while rendering the document, apply that font in all cases when another font is not available. FontSettings.getDefaultInstance().getSubstitutionSettings().getDefaultFontSubstitution().setDefaultFontName("Courier New"); Assert.assertTrue(IterableUtils.matchesAny(fontSources[0].getAvailableFonts(), f -> f.getFullFontName().contains("Courier New"))); // Aspose.Words will now use the default font in place of any missing fonts during any rendering calls. doc.save(getArtifactsDir() + "FontSettings.DefaultFontName.pdf");
public boolean getEnabled() / public void setEnabled(boolean value)
Example:
Shows operating system-dependent font config substitution.FontSettings fontSettings = new FontSettings(); FontConfigSubstitutionRule fontConfigSubstitution = fontSettings.getSubstitutionSettings().getFontConfigSubstitution(); // The FontConfigSubstitutionRule object works differently on Windows/non-Windows platforms. // On Windows, it is unavailable. if (SystemUtils.IS_OS_WINDOWS) { Assert.assertFalse(fontConfigSubstitution.getEnabled()); Assert.assertFalse(fontConfigSubstitution.isFontConfigAvailable()); } // On Linux/Mac, we will have access to it, and will be able to perform operations. if (SystemUtils.IS_OS_LINUX) { Assert.assertTrue(fontConfigSubstitution.getEnabled()); Assert.assertTrue(fontConfigSubstitution.isFontConfigAvailable()); fontConfigSubstitution.resetCache(); }
Example:
Shows how to access a document's system font source and set font substitutes.Document doc = new Document(); doc.setFontSettings(new FontSettings()); // By default, a blank document always contains a system font source. Assert.assertEquals(1, doc.getFontSettings().getFontsSources().length); SystemFontSource systemFontSource = (SystemFontSource) doc.getFontSettings().getFontsSources()[0]; Assert.assertEquals(FontSourceType.SYSTEM_FONTS, systemFontSource.getType()); Assert.assertEquals(0, systemFontSource.getPriority()); if (SystemUtils.IS_OS_WINDOWS) { final String FONTS_PATH = "C:\\WINDOWS\\Fonts"; Assert.assertEquals(FONTS_PATH.toLowerCase(), SystemFontSource.getSystemFontFolders()[0].toLowerCase()); } for (String systemFontFolder : SystemFontSource.getSystemFontFolders()) { System.out.println(systemFontFolder); } // Set a font that exists in the Windows Fonts directory as a substitute for one that does not. doc.getFontSettings().getSubstitutionSettings().getFontInfoSubstitution().setEnabled(true); doc.getFontSettings().getSubstitutionSettings().getTableSubstitution().addSubstitutes("Kreon-Regular", "Calibri"); Assert.assertEquals(1, IterableUtils.size(doc.getFontSettings().getSubstitutionSettings().getTableSubstitution().getSubstitutes("Kreon-Regular"))); Assert.assertTrue(IterableUtils.toString(doc.getFontSettings().getSubstitutionSettings().getTableSubstitution().getSubstitutes("Kreon-Regular")).contains("Calibri")); // Alternatively, we could add a folder font source in which the corresponding folder contains the font. FolderFontSource folderFontSource = new FolderFontSource(getFontsDir(), false); doc.getFontSettings().setFontsSources(new FontSourceBase[]{systemFontSource, folderFontSource}); Assert.assertEquals(2, doc.getFontSettings().getFontsSources().length); // Resetting the font sources still leaves us with the system font source as well as our substitutes. doc.getFontSettings().resetFontSources(); Assert.assertEquals(1, doc.getFontSettings().getFontsSources().length); Assert.assertEquals(FontSourceType.SYSTEM_FONTS, doc.getFontSettings().getFontsSources()[0].getType()); Assert.assertEquals(1, IterableUtils.size(doc.getFontSettings().getSubstitutionSettings().getTableSubstitution().getSubstitutes("Kreon-Regular")));