Class KerningSubtable

java.lang.Object
org.apache.fontbox.ttf.KerningSubtable

public class KerningSubtable extends Object
A 'kern' table in a true type font.
  • Field Details

    • LOG

      private static final org.apache.commons.logging.Log LOG
    • COVERAGE_HORIZONTAL

      private static final int COVERAGE_HORIZONTAL
      See Also:
    • COVERAGE_MINIMUMS

      private static final int COVERAGE_MINIMUMS
      See Also:
    • COVERAGE_CROSS_STREAM

      private static final int COVERAGE_CROSS_STREAM
      See Also:
    • COVERAGE_FORMAT

      private static final int COVERAGE_FORMAT
      See Also:
    • COVERAGE_HORIZONTAL_SHIFT

      private static final int COVERAGE_HORIZONTAL_SHIFT
      See Also:
    • COVERAGE_MINIMUMS_SHIFT

      private static final int COVERAGE_MINIMUMS_SHIFT
      See Also:
    • COVERAGE_CROSS_STREAM_SHIFT

      private static final int COVERAGE_CROSS_STREAM_SHIFT
      See Also:
    • COVERAGE_FORMAT_SHIFT

      private static final int COVERAGE_FORMAT_SHIFT
      See Also:
    • horizontal

      private boolean horizontal
    • minimums

      private boolean minimums
    • crossStream

      private boolean crossStream
    • pairs

      private KerningSubtable.PairData pairs
  • Constructor Details

    • KerningSubtable

      KerningSubtable()
  • Method Details

    • read

      void read(TTFDataStream data, int version) throws IOException
      This will read the required data from the stream.
      Parameters:
      data - The stream to read the data from.
      version - The version of the table to be read
      Throws:
      IOException - If there is an error reading the data.
    • isHorizontalKerning

      public boolean isHorizontalKerning()
      Determine if subtable is designated for use in horizontal writing modes and contains inline progression kerning pairs (not block progression "cross stream") kerning pairs.
      Returns:
      true if subtable is for horizontal kerning
    • isHorizontalKerning

      public boolean isHorizontalKerning(boolean cross)
      Determine if subtable is designated for use in horizontal writing modes, contains kerning pairs (as opposed to minimum pairs), and, if CROSS is true, then return cross stream designator; otherwise, if CROSS is false, return true if cross stream designator is false.
      Parameters:
      cross - if true, then return cross stream designator in horizontal modes
      Returns:
      true if subtable is for horizontal kerning in horizontal modes
    • getKerning

      public int[] getKerning(int[] glyphs)
      Obtain kerning adjustments for GLYPHS sequence, where the Nth returned adjustment is associated with the Nth glyph and the succeeding non-zero glyph in the GLYPHS sequence. Kerning adjustments are returned in font design coordinates.
      Parameters:
      glyphs - a (possibly empty) array of glyph identifiers
      Returns:
      a (possibly empty) array of kerning adjustments
    • getKerning

      public int getKerning(int l, int r)
      Obtain kerning adjustment for glyph pair {L,R}.
      Parameters:
      l - left member of glyph pair
      r - right member of glyph pair
      Returns:
      a (possibly zero) kerning adjustment
    • readSubtable0

      private void readSubtable0(TTFDataStream data) throws IOException
      Throws:
      IOException
    • readSubtable0Format0

      private void readSubtable0Format0(TTFDataStream data) throws IOException
      Throws:
      IOException
    • readSubtable0Format2

      private void readSubtable0Format2(TTFDataStream data)
    • readSubtable1

      private void readSubtable1(TTFDataStream data)
    • isBitsSet

      private static boolean isBitsSet(int bits, int mask, int shift)
    • getBits

      private static int getBits(int bits, int mask, int shift)