Package org.apache.fop.fonts
Class Font
java.lang.Object
org.apache.fop.fonts.Font
- All Implemented Interfaces:
Positionable
,Substitutable
This class holds font state information and provides access to the font
metrics.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final FontTriplet
Default fallback keystatic final int
Default selection prioritystatic final String
Inclined font stylestatic final String
Italic font stylestatic final String
Normal font stylestatic final String
Oblique font stylestatic final int
Bold font weightstatic final int
Extra Bold font weightstatic final int
Light font weightstatic final int
Normal font weight -
Constructor Summary
ConstructorDescriptionFont
(String key, FontTriplet triplet, FontMetrics met, int fontSize) Main constructor -
Method Summary
Modifier and TypeMethodDescriptionint
Returns the font's ascender.int
Returns the font's CapHeight.int
getCharWidth
(char c) Helper method for getting the width of a unicode char from the current fontstate.int
getCharWidth
(int c) Helper method for getting the width of a unicode char from the current fontstate.int
Returns the font's Descender.Returns the associated font metrics object.Returns the font's name.int
Returns the font sizeReturns the font's kerning tableint
getKernValue
(int ch1, int ch2) Returns the amount of kerning between two characters.int
getWidth
(int charnum) Returns the width of a characterint
getWordWidth
(String word) Calculates the word width.int
Returns the XHeightboolean
hasChar
(char c) Determines whether this font contains a particular character/glyph.boolean
hasCodePoint
(int cp) Determines whether this font contains a particular code point/glyph.boolean
hasFeature
(int tableType, String script, String language, String feature) boolean
boolean
Determines whether the font is a multibyte font.char
mapChar
(char c) Map a java character (unicode) to a font character.int
mapCodePoint
(int cp) Map a unicode code point to a font character.int[][]
performPositioning
(CharSequence cs, String script, String language) Perform glyph positioning using an implied font size.int[][]
performPositioning
(CharSequence cs, String script, String language, int fontSize) Perform glyph positioning.boolean
Determines if font performs glyph positioning.boolean
Determines if font performs glyph substitution.performSubstitution
(CharSequence cs, String script, String language, List associations, boolean retainControls) Perform substitutions on characters to effect glyph substitution.reorderCombiningMarks
(CharSequence cs, int[][] gpa, String script, String language, List associations) Reorder combining marks in character sequence so that they precede (within the sequence) the base character to which they are applied.toString()
-
Field Details
-
WEIGHT_EXTRA_BOLD
public static final int WEIGHT_EXTRA_BOLDExtra Bold font weight- See Also:
-
WEIGHT_BOLD
public static final int WEIGHT_BOLDBold font weight- See Also:
-
WEIGHT_NORMAL
public static final int WEIGHT_NORMALNormal font weight- See Also:
-
WEIGHT_LIGHT
public static final int WEIGHT_LIGHTLight font weight- See Also:
-
STYLE_NORMAL
Normal font style- See Also:
-
STYLE_ITALIC
Italic font style- See Also:
-
STYLE_OBLIQUE
Oblique font style- See Also:
-
STYLE_INCLINED
Inclined font style- See Also:
-
PRIORITY_DEFAULT
public static final int PRIORITY_DEFAULTDefault selection priority- See Also:
-
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
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
- Returns:
- true if the font has feature (i.e., at least one lookup matches)
-
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
-
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
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:
performsSubstitution
in interfaceSubstitutable
- Returns:
- true if performs substitution.
-
performSubstitution
public CharSequence performSubstitution(CharSequence cs, String script, String language, 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:
performSubstitution
in 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 CharSequence reorderCombiningMarks(CharSequence cs, int[][] gpa, String script, String language, 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:
reorderCombiningMarks
in 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:
performsPositioning
in interfacePositionable
- Returns:
- true if performs positioning
-
performPositioning
Perform glyph positioning.- Specified by:
performPositioning
in 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
Perform glyph positioning using an implied font size.- Specified by:
performPositioning
in 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
-