Class 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 Details

    • cidSet

      protected final CIDSet cidSet
    • boundingBoxes

      protected Rectangle[] boundingBoxes
      Contains the character bounding boxes for all characters in the font
  • Constructor Details

  • Method Details

    • 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)