Package org.docx4j.fonts.fop.fonts
Class Font
java.lang.Object
org.docx4j.fonts.fop.fonts.Font
- All Implemented Interfaces:
Positionable,Substitutable
public class Font extends java.lang.Object implements Substitutable, Positionable
This class holds font state information and provides access to the font
metrics.
-
Field Summary
Fields Modifier and Type Field Description static FontTripletDEFAULT_FONTDefault fallback keystatic intPRIORITY_DEFAULTDefault selection prioritystatic java.lang.StringSTYLE_INCLINEDInclined font stylestatic java.lang.StringSTYLE_ITALICItalic font stylestatic java.lang.StringSTYLE_NORMALNormal font stylestatic java.lang.StringSTYLE_OBLIQUEOblique font stylestatic intWEIGHT_BOLDBold font weightstatic intWEIGHT_EXTRA_BOLDExtra Bold font weightstatic intWEIGHT_LIGHTLight font weightstatic intWEIGHT_NORMALNormal font weight -
Constructor Summary
Constructors Constructor Description Font(java.lang.String key, FontTriplet triplet, FontMetrics met, int fontSize)Main constructor -
Method Summary
Modifier and Type Method Description intgetAscender()Returns the font's ascender.intgetCapHeight()Returns the font's CapHeight.intgetCharWidth(char c)Helper method for getting the width of a unicode char from the current fontstate.intgetCharWidth(int c)Helper method for getting the width of a unicode char from the current fontstate.intgetDescender()Returns the font's Descender.FontMetricsgetFontMetrics()Returns the associated font metrics object.java.lang.StringgetFontName()Returns the font's name.intgetFontSize()Returns the font sizeFontTripletgetFontTriplet()java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>>getKerning()Returns the font's kerning tableintgetKernValue(int ch1, int ch2)Returns the amount of kerning between two characters.intgetWidth(int charnum)Returns the width of a characterintgetWordWidth(java.lang.String word)Calculates the word width.intgetXHeight()Returns the XHeightbooleanhasChar(char c)Determines whether this font contains a particular character/glyph.booleanhasCodePoint(int cp)Determines whether this font contains a particular code point/glyph.booleanhasFeature(int tableType, java.lang.String script, java.lang.String language, java.lang.String feature)booleanhasKerning()booleanisMultiByte()Determines whether the font is a multibyte font.charmapChar(char c)Map a java character (unicode) to a font character.intmapCodePoint(int cp)Map a unicode code point to a font character.int[][]performPositioning(java.lang.CharSequence cs, java.lang.String script, java.lang.String language)Perform glyph positioning using an implied font size.int[][]performPositioning(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, int fontSize)Perform glyph positioning.booleanperformsPositioning()Determines if font performs glyph positioning.booleanperformsSubstitution()Determines if font performs glyph substitution.java.lang.CharSequenceperformSubstitution(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, java.util.List associations, boolean retainControls)Perform substitutions on characters to effect glyph substitution.java.lang.CharSequencereorderCombiningMarks(java.lang.CharSequence cs, int[][] gpa, java.lang.String script, java.lang.String language, java.util.List associations)Reorder combining marks in character sequence so that they precede (within the sequence) the base character to which they are applied.java.lang.StringtoString()Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Field Details
-
WEIGHT_EXTRA_BOLD
public static final int WEIGHT_EXTRA_BOLDExtra Bold font weight- See Also:
- Constant Field Values
-
WEIGHT_BOLD
public static final int WEIGHT_BOLDBold font weight- See Also:
- Constant Field Values
-
WEIGHT_NORMAL
public static final int WEIGHT_NORMALNormal font weight- See Also:
- Constant Field Values
-
WEIGHT_LIGHT
public static final int WEIGHT_LIGHTLight font weight- See Also:
- Constant Field Values
-
STYLE_NORMAL
public static final java.lang.String STYLE_NORMALNormal font style- See Also:
- Constant Field Values
-
STYLE_ITALIC
public static final java.lang.String STYLE_ITALICItalic font style- See Also:
- Constant Field Values
-
STYLE_OBLIQUE
public static final java.lang.String STYLE_OBLIQUEOblique font style- See Also:
- Constant Field Values
-
STYLE_INCLINED
public static final java.lang.String STYLE_INCLINEDInclined font style- See Also:
- Constant Field Values
-
PRIORITY_DEFAULT
public static final int PRIORITY_DEFAULTDefault selection priority- See Also:
- Constant Field Values
-
DEFAULT_FONT
Default fallback key
-
-
Constructor Details
-
Font
Main constructor- Parameters:
key- key of the fonttriplet- the font triplet that was used to lookup this font (may be null)met- font metricsfontSize- font size
-
-
Method Details
-
getFontMetrics
Returns the associated font metrics object.- Returns:
- the font metrics
-
isMultiByte
public boolean isMultiByte()Determines whether the font is a multibyte font.- Returns:
- True if it is multibyte
-
getAscender
public int getAscender()Returns the font's ascender.- Returns:
- the ascender
-
getCapHeight
public int getCapHeight()Returns the font's CapHeight.- Returns:
- the capital height
-
getDescender
public int getDescender()Returns the font's Descender.- Returns:
- the descender
-
getFontName
public java.lang.String getFontName()Returns the font's name.- Returns:
- the font name
-
getFontTriplet
- Returns:
- the font triplet that selected this font
-
getFontSize
public int getFontSize()Returns the font size- Returns:
- the font size
-
getXHeight
public int getXHeight()Returns the XHeight- Returns:
- the XHeight
-
hasKerning
public boolean hasKerning()- Returns:
- true if the font has kerning info
-
hasFeature
public boolean hasFeature(int tableType, java.lang.String script, java.lang.String language, java.lang.String feature)- Returns:
- true if the font has feature (i.e., at least one lookup matches)
-
getKerning
public java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.lang.Integer>> getKerning()Returns the font's kerning table- Returns:
- the kerning table
-
getKernValue
public int getKernValue(int ch1, int ch2)Returns the amount of kerning between two characters. The value returned measures in pt. So it is already adjusted for font size.- Parameters:
ch1- first characterch2- second character- Returns:
- the distance to adjust for kerning, 0 if there's no kerning
-
getWidth
public int getWidth(int charnum)Returns the width of a character- Parameters:
charnum- character to look up- Returns:
- width of the character
-
mapChar
public char mapChar(char c)Map a java character (unicode) to a font character. Default uses CodePointMapping.- Parameters:
c- character to map- Returns:
- the mapped character
-
mapCodePoint
public int mapCodePoint(int cp)Map a unicode code point to a font character. Default uses CodePointMapping.- Parameters:
cp- code point to map- Returns:
- the mapped character
-
hasChar
public boolean hasChar(char c)Determines whether this font contains a particular character/glyph.- Parameters:
c- character to check- Returns:
- True if the character is supported, False otherwise
-
hasCodePoint
public boolean hasCodePoint(int cp)Determines whether this font contains a particular code point/glyph.- Parameters:
cp- code point to check- Returns:
- True if the code point is supported, False otherwise
-
toString
public java.lang.String toString()- Overrides:
toStringin classjava.lang.Object
-
getCharWidth
public int getCharWidth(char c)Helper method for getting the width of a unicode char from the current fontstate. This also performs some guessing on widths on various versions of space that might not exists in the font.- Parameters:
c- character to inspect- Returns:
- the width of the character or -1 if no width available
-
getCharWidth
public int getCharWidth(int c)Helper method for getting the width of a unicode char from the current fontstate. This also performs some guessing on widths on various versions of space that might not exists in the font.- Parameters:
c- character to inspect- Returns:
- the width of the character or -1 if no width available
-
getWordWidth
public int getWordWidth(java.lang.String word)Calculates the word width.- Parameters:
word- text to get width for- Returns:
- the width of the text
-
performsSubstitution
public boolean performsSubstitution()Determines if font performs glyph substitution.- Specified by:
performsSubstitutionin interfaceSubstitutable- Returns:
- true if performs substitution.
-
performSubstitution
public java.lang.CharSequence performSubstitution(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, java.util.List associations, boolean retainControls)Perform substitutions on characters to effect glyph substitution. If some substitution is performed, it entails mapping from one or more input characters denoting textual character information to one or more output character codes denoting glyphs in this font, where the output character codes may make use of private character code values that have significance only for this font.- Specified by:
performSubstitutionin interfaceSubstitutable- Parameters:
cs- character sequence to map to output font encoding character sequencescript- a script identifierlanguage- a language identifierassociations- optional list to receive list of character associationsretainControls- if true, then retain control characters and their glyph mappings, otherwise remove- Returns:
- output sequence (represented as a character sequence, where each character in the returned sequence denotes "font characters", i.e., character codes that map directly (1-1) to their associated glyphs
-
reorderCombiningMarks
public java.lang.CharSequence reorderCombiningMarks(java.lang.CharSequence cs, int[][] gpa, java.lang.String script, java.lang.String language, java.util.List associations)Reorder combining marks in character sequence so that they precede (within the sequence) the base character to which they are applied. N.B. In the case of LTR segments, marks are not reordered by this, method since when the segment is reversed by BIDI processing, marks are automatically reordered to precede their base character.- Specified by:
reorderCombiningMarksin interfaceSubstitutable- Parameters:
cs- character sequence within which combining marks to be reorderedgpa- associated glyph position adjustments (also reordered)script- a script identifierlanguage- a language identifierassociations- optional list of associations to be reordered- Returns:
- output sequence containing reordered "font characters"
-
performsPositioning
public boolean performsPositioning()Determines if font performs glyph positioning.- Specified by:
performsPositioningin interfacePositionable- Returns:
- true if performs positioning
-
performPositioning
public int[][] performPositioning(java.lang.CharSequence cs, java.lang.String script, java.lang.String language, int fontSize)Perform glyph positioning.- Specified by:
performPositioningin interfacePositionable- Parameters:
cs- character sequence to map to position offsets (advancement adjustments)script- a script identifierlanguage- a language identifierfontSize- font size- Returns:
- array (sequence) of 4-tuples of placement [PX,PY] and advance [AX,AY] adjustments, in that order, with one 4-tuple for each element of glyph sequence, or null if no non-zero adjustment applies
-
performPositioning
public int[][] performPositioning(java.lang.CharSequence cs, java.lang.String script, java.lang.String language)Perform glyph positioning using an implied font size.- Specified by:
performPositioningin interfacePositionable- Parameters:
cs- character sequence to map to position offsets (advancement adjustments)script- a script identifierlanguage- a language identifier- Returns:
- array (sequence) of 4-tuples of placement [PX,PY] and advance [AX,AY] adjustments, in that order, with one 4-tuple for each element of glyph sequence, or null if no non-zero adjustment applies
-