Package org.apache.fop.fonts
Class LazyFont
java.lang.Object
org.apache.fop.fonts.Typeface
org.apache.fop.fonts.LazyFont
- All Implemented Interfaces:
Positionable
,Substitutable
,FontDescriptor
,FontMetrics
This class is used to defer the loading of a font until it is really used.
-
Field Summary
Fields inherited from class org.apache.fop.fonts.Typeface
eventListener, NOT_FOUND
-
Constructor Summary
ConstructorDescriptionLazyFont
(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver, boolean useComplexScripts) Main constructor -
Method Summary
Modifier and TypeMethodDescriptionint
Returns the ascender value of the font.int
getAscender
(int size) Returns the ascent of the font described by this FontMetrics object.getBoundingBox
(int glyphIndex, int size) Returns the bounding box of the glyph at the given index, for the given font size.int
Returns the capital height of the font.int
getCapHeight
(int size) Returns the size of a capital letter measured from the font's baseline.int
Returns the descender value of the font.int
getDescender
(int size) Returns the descent of the font described by this FontMetrics object.Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").Get the encoding of the font.Returns the font's family names as a Set of Strings (Example: "Helvetica").int
getFlags()
Returns the flags for the font.int[]
Returns the font's bounding box.Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").Returns the type of the font.Returns the URI of the font file from which these metrics were loaded.Returns the font's full name (Example: "Helvetica Bold Oblique").int
Returns the italic angle for the font.Returns the kerning map for the font.int
getMaxAscent
(int size) Returns the maximum ascent of the font described by this FontMetrics object.Gets the real font.int
getStemV()
Returns the vertical stem width for the font.int
getStrikeoutPosition
(int size) Returns the distance from the baseline to the center of the strikeout line (negative value indicates below baseline).int
getStrikeoutThickness
(int size) Returns the thickness of the strikeout line.int
getUnderlinePosition
(int size) Returns the distance from the baseline to the center of the underline (negative value indicates below baseline).int
getUnderlineThickness
(int size) Returns the thickness of the underline.int
getWidth
(int i, int size) Return the width (in 1/1000ths of point size) of the character at code point i.int[]
Return the array of widths.int
getXHeight
(int size) Determines the typical font height of this FontMetrics objectboolean
Indicates whether this font had to do any character mapping operations.boolean
hasChar
(char c) Determines whether this font contains a particular character/glyph.boolean
hasFeature
(int tableType, String script, String language, String feature) Determine if metrics supports specific feature in specified font table.boolean
Indicates if the font has kerning information.boolean
Indicates if this font may be embedded.boolean
Determines whether the font is a multibyte font.boolean
Indicates whether this font is subset embedded.boolean
Indicates whether the font is a symbolic font.char
mapChar
(char c) Map a Unicode character to a code point in the font.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()
Methods inherited from class org.apache.fop.fonts.Typeface
isCID, notifyMapOperation, setEventListener, warnMissingGlyph
-
Constructor Details
-
LazyFont
public LazyFont(EmbedFontInfo fontInfo, InternalResourceResolver resourceResolver, boolean useComplexScripts) Main constructor- Parameters:
fontInfo
- the font info to embedresourceResolver
- the font resolver to handle font URIs
-
-
Method Details
-
toString
-
getRealFont
Gets the real font.- Returns:
- the real font
-
getEncodingName
Get the encoding of the font.- Specified by:
getEncodingName
in classTypeface
- Returns:
- the encoding
-
mapChar
public char mapChar(char c) Map a Unicode character to a code point in the font. -
hadMappingOperations
public boolean hadMappingOperations()Indicates whether this font had to do any character mapping operations. If that was not the case, it's an indication that the font has never actually been used.- Overrides:
hadMappingOperations
in classTypeface
- Returns:
- true if the font had to do any character mapping operations
-
hasChar
public boolean hasChar(char c) Determines whether this font contains a particular character/glyph. -
isMultiByte
public boolean isMultiByte()Determines whether the font is a multibyte font.- Specified by:
isMultiByte
in interfaceFontMetrics
- Overrides:
isMultiByte
in classTypeface
- Returns:
- True if it is multibyte
-
getFontURI
Returns the URI of the font file from which these metrics were loaded.- Specified by:
getFontURI
in interfaceFontMetrics
- Returns:
- the font file's URI
-
getFontName
Returns the "PostScript" font name (Example: "Helvetica-BoldOblique").- Specified by:
getFontName
in interfaceFontMetrics
- Returns:
- the font name
-
getEmbedFontName
Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").- Specified by:
getEmbedFontName
in interfaceFontMetrics
- Returns:
- the name for font embedding
-
getFullName
Returns the font's full name (Example: "Helvetica Bold Oblique").- Specified by:
getFullName
in interfaceFontMetrics
- Returns:
- the font's full name
-
getFamilyNames
Returns the font's family names as a Set of Strings (Example: "Helvetica").- Specified by:
getFamilyNames
in interfaceFontMetrics
- Returns:
- the font's family names (a Set of Strings)
-
getMaxAscent
public int getMaxAscent(int size) Returns the maximum ascent of the font described by this FontMetrics object. Note: This is not the same as getAscender().- Specified by:
getMaxAscent
in interfaceFontMetrics
- Overrides:
getMaxAscent
in classTypeface
- Parameters:
size
- font size- Returns:
- ascent in milliponts
-
getAscender
public int getAscender(int size) Returns the ascent of the font described by this FontMetrics object. It returns the nominal ascent within the em box.- Specified by:
getAscender
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- ascent in milliponts
-
getCapHeight
public int getCapHeight(int size) Returns the size of a capital letter measured from the font's baseline.- Specified by:
getCapHeight
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- height of capital characters
-
getDescender
public int getDescender(int size) Returns the descent of the font described by this FontMetrics object.- Specified by:
getDescender
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- descent in milliponts
-
getXHeight
public int getXHeight(int size) Determines the typical font height of this FontMetrics object- Specified by:
getXHeight
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- font height in millipoints
-
getUnderlinePosition
public int getUnderlinePosition(int size) Description copied from interface:FontMetrics
Returns the distance from the baseline to the center of the underline (negative value indicates below baseline).- Specified by:
getUnderlinePosition
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- the position in 1/1000ths of the font size
-
getUnderlineThickness
public int getUnderlineThickness(int size) Description copied from interface:FontMetrics
Returns the thickness of the underline.- Specified by:
getUnderlineThickness
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- the thickness in 1/1000ths of the font size
-
getStrikeoutPosition
public int getStrikeoutPosition(int size) Description copied from interface:FontMetrics
Returns the distance from the baseline to the center of the strikeout line (negative value indicates below baseline).- Specified by:
getStrikeoutPosition
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- the position in 1/1000ths of the font size
-
getStrikeoutThickness
public int getStrikeoutThickness(int size) Description copied from interface:FontMetrics
Returns the thickness of the strikeout line.- Specified by:
getStrikeoutThickness
in interfaceFontMetrics
- Parameters:
size
- font size- Returns:
- the thickness in 1/1000ths of the font size
-
getWidth
public int getWidth(int i, int size) Return the width (in 1/1000ths of point size) of the character at code point i.- Specified by:
getWidth
in interfaceFontMetrics
- Parameters:
i
- code point indexsize
- font size- Returns:
- the width of the character
-
getWidths
public int[] getWidths()Return the array of widths.This is used to get an array for inserting in an output format. It should not be used for lookup.
- Specified by:
getWidths
in interfaceFontMetrics
- Returns:
- an array of widths
-
getBoundingBox
Description copied from interface:FontMetrics
Returns the bounding box of the glyph at the given index, for the given font size.- Specified by:
getBoundingBox
in interfaceFontMetrics
- Parameters:
glyphIndex
- glyph indexsize
- font size- Returns:
- the scaled bounding box scaled in 1/1000ths of the given size
-
hasKerningInfo
public boolean hasKerningInfo()Indicates if the font has kerning information.- Specified by:
hasKerningInfo
in interfaceFontMetrics
- Returns:
- true if kerning is available.
-
getKerningInfo
Returns the kerning map for the font.- Specified by:
getKerningInfo
in interfaceFontMetrics
- Returns:
- the kerning map
-
hasFeature
Determine if metrics supports specific feature in specified font table.- Specified by:
hasFeature
in interfaceFontMetrics
- Overrides:
hasFeature
in classTypeface
- Parameters:
tableType
- type of table (GSUB, GPOS, ...), see GlyphTable.GLYPH_TABLE_TYPE_*script
- to qualify feature lookuplanguage
- to qualify feature lookupfeature
- to test- Returns:
- true if feature supported (and has at least one lookup)
-
getCapHeight
public int getCapHeight()Returns the capital height of the font.- Specified by:
getCapHeight
in interfaceFontDescriptor
- Returns:
- the capital height
-
getDescender
public int getDescender()Returns the descender value of the font. (Descent in pdf spec)- Specified by:
getDescender
in interfaceFontDescriptor
- Returns:
- the descender value
-
getAscender
public int getAscender()Returns the ascender value of the font. (Ascent in pdf spec)- Specified by:
getAscender
in interfaceFontDescriptor
- Returns:
- the ascender
-
getFlags
public int getFlags()Returns the flags for the font. (See pdf spec)- Specified by:
getFlags
in interfaceFontDescriptor
- Returns:
- the flags
-
isSymbolicFont
public boolean isSymbolicFont()Indicates whether the font is a symbolic font.- Specified by:
isSymbolicFont
in interfaceFontDescriptor
- Returns:
- true if the font is a symbolic font (i.e. Symbol or ZapfDingbats)
-
getFontBBox
public int[] getFontBBox()Returns the font's bounding box.- Specified by:
getFontBBox
in interfaceFontDescriptor
- Returns:
- the bounding box
-
getItalicAngle
public int getItalicAngle()Returns the italic angle for the font.- Specified by:
getItalicAngle
in interfaceFontDescriptor
- Returns:
- the italic angle
-
getStemV
public int getStemV()Returns the vertical stem width for the font.- Specified by:
getStemV
in interfaceFontDescriptor
- Returns:
- the vertical stem width
-
getFontType
Returns the type of the font.- Specified by:
getFontType
in interfaceFontMetrics
- Returns:
- the font type
-
isEmbeddable
public boolean isEmbeddable()Indicates if this font may be embedded.- Specified by:
isEmbeddable
in interfaceFontDescriptor
- Returns:
- True, if embedding is possible/permitted
-
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
-
isSubsetEmbedded
public boolean isSubsetEmbedded()Indicates whether this font is subset embedded.- Specified by:
isSubsetEmbedded
in interfaceFontDescriptor
- Returns:
- true if this font is subset embedded
-