fop 2.0

org.apache.fop.fonts
Class MultiByteFont

java.lang.Object
  extended by org.apache.fop.fonts.Typeface
      extended by org.apache.fop.fonts.CustomFont
          extended by org.apache.fop.fonts.CIDFont
              extended by org.apache.fop.fonts.MultiByteFont
All Implemented Interfaces:
Positionable, Substitutable, FontDescriptor, FontMetrics, MutableFont

public class MultiByteFont
extends CIDFont
implements Substitutable, Positionable

Generic MultiByte (CID) font


Field Summary
protected  java.awt.Rectangle[] boundingBoxes
          Contains the character bounding boxes for all characters in the font
protected  CIDSet cidSet
           
 
Fields inherited from class org.apache.fop.fonts.CIDFont
width
 
Fields inherited from class org.apache.fop.fonts.CustomFont
cmap
 
Fields inherited from class org.apache.fop.fonts.Typeface
eventListener, NOT_FOUND
 
Constructor Summary
MultiByteFont(InternalResourceResolver resourceResolver, EmbeddingMode embeddingMode)
          Default constructor
 
Method Summary
protected  void addPrivateUseMapping(int pu, int gi)
          Add a private use mapping {PU,GI} to the existing character map.
 int findGlyphIndex(int c)
          Returns the glyph index for a Unicode character.
 java.awt.Rectangle getBoundingBox(int glyphIndex, int size)
          Returns the bounding box of the glyph at the given index, for the given font size.
protected  char[] getChars()
           
 CIDSet getCIDSet()
          Returns the subset information for this font.
 CIDFontType getCIDType()
          Returns the type of the CID font.
 java.io.InputStream getCmapStream()
           
 int getDefaultWidth()
          Returns the default width for this font.
 java.lang.String getEmbedFontName()
          Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
 java.lang.String getEncodingName()
          Get the encoding of the font.
 GlyphDefinitionTable getGDEF()
          Obtain glyph definition table.
protected  java.util.BitSet getGlyphIndices()
           
 GlyphPositioningTable getGPOS()
          Obtain glyph positioning table.
 GlyphSubstitutionTable getGSUB()
          Obtain glyph substitution table.
 java.lang.String getOrdering()
          Returns a font name for use within a registry.
 java.lang.String getRegistry()
          Returns the name of the issuer of the font.
 int getSupplement()
          Returns the supplement number of the character collection.
 java.lang.String getTTCName()
          Returns the TrueType Collection Name.
protected  int[] getUnscaledWidths(GlyphSequence gs)
           
 java.util.LinkedHashMap<java.lang.Integer,java.lang.String> getUsedGlyphNames()
           
 java.util.Map<java.lang.Integer,java.lang.Integer> getUsedGlyphs()
          Returns a Map of used Glyphs.
 int getWidth(int i, int size)
          Return the width (in 1/1000ths of point size) of the character at code point i.
 int[] getWidths()
          Return the array of widths.
 java.util.Map<java.lang.Integer,java.lang.Integer> getWidthsMap()
           
 boolean hasChar(char c)
          Determines whether this font contains a particular character/glyph.
 boolean hasFeature(int tableType, java.lang.String script, java.lang.String language, java.lang.String feature)
          Determine if metrics supports specific feature in specified font table.
 boolean isEmbeddable()
          Indicates if this font may be embedded.
 boolean isOTFFile()
           
 boolean isSubsetEmbedded()
          Indicates whether this font is subset embedded.
 char mapChar(char c)
          Map a Unicode character to a code point in the font.
 void mapUsedGlyphName(int gid, java.lang.String value)
           
 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.
 boolean performsPositioning()
          Determines if font performs glyph positioning.
 boolean performsSubstitution()
          Determines if font performs glyph substitution.
 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.
 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.
 void setBBoxArray(java.awt.Rectangle[] boundingBoxes)
          Sets the bounding boxes array.
 void setCIDType(CIDFontType cidType)
          Sets the CIDType.
 void setDefaultWidth(int defaultWidth)
          Sets the defaultWidth.
 void setGDEF(GlyphDefinitionTable gdef)
          Establishes the glyph definition table.
 void setGPOS(GlyphPositioningTable gpos)
          Establishes the glyph positioning table.
 void setGSUB(GlyphSubstitutionTable gsub)
          Establishes the glyph substitution table.
 void setIsOTFFile(boolean isOTFFile)
           
 void setTTCName(java.lang.String ttcName)
          Sets the the TrueType Collection Name.
 void setWidthArray(int[] wds)
          Sets the width array.
 
Methods inherited from class org.apache.fop.fonts.CIDFont
isMultiByte
 
Methods inherited from class org.apache.fop.fonts.CustomFont
getAscender, getAscender, getCapHeight, getCapHeight, getCMap, getDescender, getDescender, getEmbeddingMode, getEmbedFileURI, getEmbedResourceName, getFamilyNames, getFirstChar, getFlags, getFontBBox, getFontName, getFontSubName, getFontType, getFontURI, getFullName, getInputStream, getItalicAngle, getKerningInfo, getLastChar, getMissingWidth, getStemV, getStrikeoutPosition, getStrikeoutThickness, getStrippedFontName, getUnderlinePosition, getUnderlineThickness, getWeight, getXHeight, hasKerningInfo, isAdvancedEnabled, isKerningEnabled, isSymbolicFont, putKerningEntry, replaceKerningMap, setAdvancedEnabled, setAscender, setCapHeight, setCMap, setDescender, setEmbeddingMode, setEmbedResourceName, setEmbedURI, setFamilyNames, setFirstChar, setFlags, setFontBBox, setFontName, setFontSubFamilyName, setFontType, setFontURI, setFullName, setItalicAngle, setKerningEnabled, setLastChar, setMissingWidth, setStemV, setStrikeoutPosition, setStrikeoutThickness, setUnderlinePosition, setUnderlineThickness, setWeight, setXHeight
 
Methods inherited from class org.apache.fop.fonts.Typeface
getMaxAscent, hadMappingOperations, notifyMapOperation, setEventListener, toString, warnMissingGlyph
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.apache.fop.fonts.FontMetrics
getMaxAscent
 

Field Detail

cidSet

protected final CIDSet cidSet

boundingBoxes

protected java.awt.Rectangle[] boundingBoxes
Contains the character bounding boxes for all characters in the font

Constructor Detail

MultiByteFont

public MultiByteFont(InternalResourceResolver resourceResolver,
                     EmbeddingMode embeddingMode)
Default constructor

Method Detail

getDefaultWidth

public int getDefaultWidth()
Returns the default width for this font.

Overrides:
getDefaultWidth in class CIDFont
Returns:
the default width

getRegistry

public java.lang.String getRegistry()
Returns the name of the issuer of the font.

Specified by:
getRegistry in class CIDFont
Returns:
a String identifying an issuer of character collections - for example, Adobe

getOrdering

public java.lang.String getOrdering()
Returns a font name for use within a registry.

Specified by:
getOrdering in class CIDFont
Returns:
a String that uniquely names a character collection issued by a specific registry - for example, Japan1.

getSupplement

public int getSupplement()
Returns the supplement number of the character collection.

Specified by:
getSupplement in class CIDFont
Returns:
the supplement number

getCIDType

public CIDFontType getCIDType()
Returns the type of the CID font.

Specified by:
getCIDType in class CIDFont
Returns:
the type of the CID font

setIsOTFFile

public void setIsOTFFile(boolean isOTFFile)

isOTFFile

public boolean isOTFFile()

setCIDType

public void setCIDType(CIDFontType cidType)
Sets the CIDType.

Parameters:
cidType - The cidType to set

getEmbedFontName

public java.lang.String getEmbedFontName()
Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").

Specified by:
getEmbedFontName in interface FontMetrics
Overrides:
getEmbedFontName in class CustomFont
Returns:
the name for font embedding

isEmbeddable

public boolean isEmbeddable()
Indicates if this font may be embedded.

Specified by:
isEmbeddable in interface FontDescriptor
Returns:
True, if embedding is possible/permitted

isSubsetEmbedded

public boolean isSubsetEmbedded()
Description copied from interface: FontDescriptor
Indicates whether this font is subset embedded.

Specified by:
isSubsetEmbedded in interface FontDescriptor
Returns:
true if this font is subset embedded

getCIDSet

public CIDSet getCIDSet()
Returns the subset information for this font.

Specified by:
getCIDSet in class CIDFont
Returns:
the subset information

mapUsedGlyphName

public void mapUsedGlyphName(int gid,
                             java.lang.String value)

getUsedGlyphNames

public java.util.LinkedHashMap<java.lang.Integer,java.lang.String> getUsedGlyphNames()

getEncodingName

public java.lang.String getEncodingName()
Get the encoding of the font.

Specified by:
getEncodingName in class Typeface
Returns:
the encoding

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 interface FontMetrics
Parameters:
i - code point index
size - 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 interface FontMetrics
Returns:
an array of widths

getBoundingBox

public java.awt.Rectangle getBoundingBox(int glyphIndex,
                                         int size)
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 interface FontMetrics
Parameters:
glyphIndex - glyph index
size - font size
Returns:
the scaled bounding box scaled in 1/1000ths of the given size

findGlyphIndex

public int findGlyphIndex(int c)
Returns the glyph index for a Unicode character. The method returns 0 if there's no such glyph in the character map.

Parameters:
c - the Unicode character index
Returns:
the glyph index (or 0 if the glyph is not available)

addPrivateUseMapping

protected void addPrivateUseMapping(int pu,
                                    int gi)
Add a private use mapping {PU,GI} to the existing character map. N.B. Does not insert in order, merely appends to end of existing map.


getGlyphIndices

protected java.util.BitSet getGlyphIndices()

getChars

protected char[] getChars()

mapChar

public char mapChar(char c)
Map a Unicode character to a code point in the font.

Specified by:
mapChar in class Typeface
Parameters:
c - character to map
Returns:
the mapped character

hasChar

public boolean hasChar(char c)
Determines whether this font contains a particular character/glyph.

Specified by:
hasChar in class Typeface
Parameters:
c - character to check
Returns:
True if the character is supported, Falso otherwise

setDefaultWidth

public void setDefaultWidth(int defaultWidth)
Sets the defaultWidth.

Parameters:
defaultWidth - The defaultWidth to set

getTTCName

public java.lang.String getTTCName()
Returns the TrueType Collection Name.

Returns:
the TrueType Collection Name

setTTCName

public void setTTCName(java.lang.String ttcName)
Sets the the TrueType Collection Name.

Parameters:
ttcName - the TrueType Collection Name

setWidthArray

public void setWidthArray(int[] wds)
Sets the width array.

Parameters:
wds - array of widths.

setBBoxArray

public void setBBoxArray(java.awt.Rectangle[] boundingBoxes)
Sets the bounding boxes array.

Parameters:
boundingBoxes - array of bounding boxes.

getUsedGlyphs

public java.util.Map<java.lang.Integer,java.lang.Integer> getUsedGlyphs()
Returns a Map of used Glyphs.

Returns:
Map Map of used Glyphs

setGDEF

public void setGDEF(GlyphDefinitionTable gdef)
Establishes the glyph definition table.

Parameters:
gdef - the glyph definition table to be used by this font

getGDEF

public GlyphDefinitionTable getGDEF()
Obtain glyph definition table.

Returns:
glyph definition table or null if none is associated with font

setGSUB

public void setGSUB(GlyphSubstitutionTable gsub)
Establishes the glyph substitution table.

Parameters:
gsub - the glyph substitution table to be used by this font

getGSUB

public GlyphSubstitutionTable getGSUB()
Obtain glyph substitution table.

Returns:
glyph substitution table or null if none is associated with font

setGPOS

public void setGPOS(GlyphPositioningTable gpos)
Establishes the glyph positioning table.

Parameters:
gpos - the glyph positioning table to be used by this font

getGPOS

public GlyphPositioningTable getGPOS()
Obtain glyph positioning table.

Returns:
glyph positioning table or null if none is associated with font

performsSubstitution

public boolean performsSubstitution()
Determines if font performs glyph substitution.

Specified by:
performsSubstitution in interface Substitutable
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:
performSubstitution in interface Substitutable
Parameters:
cs - character sequence to map to output font encoding character sequence
script - a script identifier
language - a language identifier
associations - optional list to receive list of character associations
retainControls - 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:
reorderCombiningMarks in interface Substitutable
Parameters:
cs - character sequence within which combining marks to be reordered
gpa - associated glyph position adjustments (also reordered)
script - a script identifier
language - a language identifier
associations - optional list of associations to be reordered
Returns:
output sequence containing reordered "font characters"

getUnscaledWidths

protected int[] getUnscaledWidths(GlyphSequence gs)

performsPositioning

public boolean performsPositioning()
Determines if font performs glyph positioning.

Specified by:
performsPositioning in interface Positionable
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:
performPositioning in interface Positionable
Parameters:
cs - character sequence to map to position offsets (advancement adjustments)
script - a script identifier
language - a language identifier
fontSize - 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:
performPositioning in interface Positionable
Parameters:
cs - character sequence to map to position offsets (advancement adjustments)
script - a script identifier
language - 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

hasFeature

public boolean hasFeature(int tableType,
                          java.lang.String script,
                          java.lang.String language,
                          java.lang.String feature)
Description copied from class: Typeface
Determine if metrics supports specific feature in specified font table.

Specified by:
hasFeature in interface FontMetrics
Overrides:
hasFeature in class Typeface
Parameters:
tableType - type of table (GSUB, GPOS, ...), see GlyphTable.GLYPH_TABLE_TYPE_*
script - to qualify feature lookup
language - to qualify feature lookup
feature - to test
Returns:
true if feature supported (and has at least one lookup)

getWidthsMap

public java.util.Map<java.lang.Integer,java.lang.Integer> getWidthsMap()

getCmapStream

public java.io.InputStream getCmapStream()

fop 2.0

Copyright 1999-2015 The Apache Software Foundation. All Rights Reserved.