Package org.docx4j.fonts
Class Mapper
java.lang.Object
org.docx4j.fonts.Mapper
- Direct Known Subclasses:
BestMatchingMapper,IdentityPlusMapper
public abstract class Mapper
extends java.lang.Object
Maps font names used in the document to
fonts physically available
on the system.
So, a mapper per document.
If fonts are added to the document
(ie fonts introduced into use)
then the mapper should be updated
to include a mapping for the
new font.
There are 2 implementations:
- IndentityPlusMapper, which is best
where most of the fonts used in the
document are physically present
on the system
- BestMatchingMapper, useful on
Linux and OSX systems on which
Microsoft fonts have not been
installed.
Whichever one you use, you can
add/remove mappings programmatically
to customise to your needs.
- Author:
- jharrop
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.ConcurrentHashMap<java.lang.String,PhysicalFont>boldFormsprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,PhysicalFont>boldItalicFormsstatic java.lang.StringFONT_FALLBACKprotected static java.util.Map<java.lang.String,PhysicalFont>fontMappingsprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,PhysicalFont>italicFormsprotected static org.slf4j.Loggerlogprotected java.util.concurrent.ConcurrentHashMap<java.lang.String,PhysicalFont>regularForms -
Constructor Summary
Constructors Constructor Description Mapper() -
Method Summary
Modifier and Type Method Description PhysicalFontget(java.lang.String key)Get a PhysicalFont from FontMappings, by case-insensitive name.PhysicalFontgetBoldForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pf)PhysicalFontgetBoldItalicForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pf)java.util.Map<java.lang.String,PhysicalFont>getFontMappings()Deprecated.PhysicalFontgetItalicForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pf)PhysicalFontgetRegularForm(java.lang.String fontNameAsInFontTablePart)java.lang.StringgetSubstituteFontXsltExtension(java.lang.String documentStyleId, java.lang.String bolditalic, boolean fontFamilyStack)static java.lang.StringgetSubstituteFontXsltExtension(Mapper s, java.lang.String documentStyleId, java.lang.String bolditalic, boolean fontFamilyStack)abstract voidpopulateFontMappings(java.util.Set<java.lang.String> documentFontNames, Fonts wmlFonts)Populate the fontMappings object.voidput(java.lang.String key, PhysicalFont pf)Put a PhysicalFont into FontMappings, by case-insensitive name.voidregisterBoldForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfBold)voidregisterBoldItalicForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfBoldItalic)voidregisterItalicForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfItalic)voidregisterRegularForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfRegular)intsize()
-
Field Details
-
log
protected static org.slf4j.Logger log -
regularForms
-
boldForms
-
italicForms
-
boldItalicForms
-
fontMappings
-
FONT_FALLBACK
public static final java.lang.String FONT_FALLBACK- See Also:
- Constant Field Values
-
-
Constructor Details
-
Mapper
public Mapper()
-
-
Method Details
-
getFontMappings
Deprecated. -
get
Get a PhysicalFont from FontMappings, by case-insensitive name. (Although Word always uses Title Case for font names, it is actually case insensitive; the spec is silent on this.)- Parameters:
key-- Returns:
-
put
Put a PhysicalFont into FontMappings, by case-insensitive name. (Although Word always uses Title Case for font names, it is actually case insensitive; the spec is silent on this.)- Parameters:
key-pf-
-
size
public int size() -
populateFontMappings
public abstract void populateFontMappings(java.util.Set<java.lang.String> documentFontNames, Fonts wmlFonts) throws java.lang.ExceptionPopulate the fontMappings object. We make an entry for each of the documentFontNames.- Parameters:
documentFontNames- - the fonts used in the documentwmlFonts- - the content model for the fonts part- Throws:
java.lang.Exception
-
getSubstituteFontXsltExtension
public static java.lang.String getSubstituteFontXsltExtension(Mapper s, java.lang.String documentStyleId, java.lang.String bolditalic, boolean fontFamilyStack) -
getSubstituteFontXsltExtension
public java.lang.String getSubstituteFontXsltExtension(java.lang.String documentStyleId, java.lang.String bolditalic, boolean fontFamilyStack) -
registerRegularForm
public void registerRegularForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfRegular) -
registerBoldForm
-
registerItalicForm
-
registerBoldItalicForm
public void registerBoldItalicForm(java.lang.String fontNameAsInFontTablePart, PhysicalFont pfBoldItalic) -
getRegularForm
-
getBoldForm
-
getItalicForm
-
getBoldItalicForm
-