org.apache.fop.fonts

## Class MultiByteFont

- java.lang.Object
- - org.apache.fop.fonts.Typeface
  - - org.apache.fop.fonts.CustomFont
    - - org.apache.fop.fonts.CIDFont
      - - org.apache.fop.fonts.MultiByteFont

All Implemented Interfaces:
  Positionable, Substitutable, FontDescriptor, FontMetrics, MutableFont

Direct Known Subclasses:
  CFFToType1Font

    public class MultiByteFont
    extends CIDFont
    implements Substitutable, Positionable

Generic MultiByte (CID) font

### Field Summary

Fields
`protected 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

`additionalEncodings, cmap, svgs, unencodedCharacters`

### Fields inherited from class org.apache.fop.fonts.Typeface

`eventListener, NOT_FOUND`

### Constructor Summary

Constructors
Constructor and Description
`MultiByteFont(InternalResourceResolver resourceResolver, EmbeddingMode embeddingMode)` Default constructor

### Method Summary

All Methods Instance Methods Concrete Methods
`protected void` `addPrivateUseMapping(int pu, int gi)` Add a private use mapping {PU,GI} to the existing character map.
`GlyphSequence` `charSequenceToGlyphSequence(CharSequence charSequence, List associations)`
`int` `findGlyphIndex(int c)` Returns the glyph index for a Unicode character.
`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.
`InputStream` `getCmapStream()`
`int` `getDefaultWidth()` Returns the default width for this font.
`String` `getEmbedFontName()` Returns the font name for font embedding (may include a prefix, Example: "1E28bcArialMT").
`String` `getEncodingName()` Get the encoding of the font.
`GlyphDefinitionTable` `getGDEF()` Obtain glyph definition table.
`int` `getGIDFromChar(char ch)` Gets the original glyph index in the font from a character.
`protected BitSet` `getGlyphIndices()`
`GlyphPositioningTable` `getGPOS()` Obtain glyph positioning table.
`GlyphSubstitutionTable` `getGSUB()` Obtain glyph substitution table.
`String` `getOrdering()` Returns a font name for use within a registry.
`String` `getRegistry()` Returns the name of the issuer of the font.
`int` `getSupplement()` Returns the supplement number of the character collection.
`SVGGlyphData` `getSVG(int c)`
`String` `getTTCName()` Returns the TrueType Collection Name.
`char` `getUnicodeFromGID(int glyphIndex)` Returns the character from it's original glyph index in the font
`protected int[]` `getUnscaledWidths(GlyphSequence gs)`
`LinkedHashMap<Integer,String>` `getUsedGlyphNames()`
`Map<Integer,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.
`Map<Integer,Integer>` `getWidthsMap()`
`boolean` `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)` 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.
`int` `mapCodePoint(int cp)` Map a Unicode code point to a code point in the font.
`void` `mapUsedGlyphName(int gid, String value)`
`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` `performsPositioning()` Determines if font performs glyph positioning.
`boolean` `performsSubstitution()` Determines if font performs glyph substitution.
`CharSequence` `performSubstitution(CharSequence charSequence, String script, String language, List associations, boolean retainControls)` Perform substitutions on characters to effect glyph substitution.
`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.
`void` `setBBoxArray(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(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

`addUnencodedCharacter, getAdditionalEncoding, getAdditionalEncodingCount, getAscender, getAscender, getCapHeight, getCapHeight, getCMap, getDescender, getDescender, getEmbeddingMode, getEmbedFileURI, getEmbedResourceName, getFamilyNames, getFirstChar, getFlags, getFontBBox, getFontName, getFontSubName, getFontType, getFontURI, getFullName, getInputStream, getItalicAngle, getKerningInfo, getLastChar, getMissingWidth, getSimulateStyle, getStemV, getStrikeoutPosition, getStrikeoutThickness, getStrippedFontName, getUnderlinePosition, getUnderlineThickness, getWeight, getXHeight, hasAdditionalEncodings, hasKerningInfo, hasSVG, isAdvancedEnabled, isKerningEnabled, isSymbolicFont, mapUnencodedChar, putKerningEntry, replaceKerningMap, setAdvancedEnabled, setAscender, setCapHeight, setCMap, setDescender, setEmbeddingMode, setEmbedResourceName, setEmbedURI, setFamilyNames, setFirstChar, setFlags, setFontBBox, setFontName, setFontSubFamilyName, setFontType, setFontURI, setFullName, setItalicAngle, setKerningEnabled, setLastChar, setMissingWidth, setSimulateStyle, setStemV, setStrikeoutPosition, setStrikeoutThickness, setSVG, setUnderlinePosition, setUnderlineThickness, setWeight, setXHeight`

### Methods inherited from class org.apache.fop.fonts.Typeface

`getMaxAscent, hadMappingOperations, isCID, 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 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 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 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 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,
                                 String value)

#### getUsedGlyphNames

    public LinkedHashMap<Integer,String> getUsedGlyphNames()

#### getEncodingName

    public 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 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 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

#### mapCodePoint

    public int mapCodePoint(int cp)

Map a Unicode code point to a code point in the font.

Specified by:
  `mapCodePoint` in class `CIDFont`
Parameters:
  `cp` - code point to map
Returns:
  the mapped code point

#### 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

#### hasCodePoint

    public boolean hasCodePoint(int cp)

Determines whether this font contains a particular code point/glyph.

Specified by:
  `hasCodePoint` in class `CIDFont`
Parameters:
  `cp` - character to check
Returns:
  True if the character is supported, False otherwise

#### setDefaultWidth

    public void setDefaultWidth(int defaultWidth)

Sets the defaultWidth.

Parameters:
  `defaultWidth` - The defaultWidth to set

#### getTTCName

    public String getTTCName()

Returns the TrueType Collection Name.

Returns:
  the TrueType Collection Name

#### setTTCName

    public void setTTCName(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(Rectangle[] boundingBoxes)

Sets the bounding boxes array.

Parameters:
  `boundingBoxes` - array of bounding boxes.

#### getUsedGlyphs

    public Map<Integer,Integer> getUsedGlyphs()

Returns a Map of used Glyphs.

Specified by:
  `getUsedGlyphs` in class `CustomFont`
Returns:
  Map Map of used Glyphs

#### getUnicodeFromGID

    public char getUnicodeFromGID(int glyphIndex)

Returns the character from it's original glyph index in the font

Specified by:
  `getUnicodeFromGID` in class `CustomFont`
Parameters:
  `glyphIndex` - The original index of the character
Returns:
  The character

#### getGIDFromChar

    public int getGIDFromChar(char ch)

Gets the original glyph index in the font from a character.

Parameters:
  `ch` - The character
Returns:
  The glyph index in the font

#### 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 CharSequence performSubstitution(CharSequence charSequence,
                                            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 interface `Substitutable`
Parameters:
  `charSequence` - 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

#### charSequenceToGlyphSequence

    public GlyphSequence charSequenceToGlyphSequence(CharSequence charSequence,
                                                     List associations)

#### 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 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(CharSequence cs,
                                      String script,
                                      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(CharSequence cs,
                                      String script,
                                      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,
                              String script,
                              String language,
                              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 Map<Integer,Integer> getWidthsMap()

#### getCmapStream

    public InputStream getCmapStream()

#### getSVG

    public SVGGlyphData getSVG(int c)