Class Java2DFontMetrics

java.lang.Object
org.apache.fop.render.java2d.Java2DFontMetrics

public class Java2DFontMetrics extends Object
This is a FontMetrics to be used for AWT rendering. It instanciates a font, depening on family and style values. The java.awt.FontMetrics for this font is then created to be used for the actual measurement. Since layout is word by word and since it is expected that two subsequent words often share the same style, the Font and FontMetrics is buffered and only changed if needed.

Since FontState and FontInfo multiply all factors by size, we assume a "standard" font of FONT_SIZE.

  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    private int
    The highest point of the font above the baseline (usually derived from "d", value in mpt)
    private int
    The lowest point of the font under the baseline (usually derived from "p", value in mpt)
    private Font
    Buffered font.
    private String
    The family type of the font last used
    private FontMetrics
    The FontMetrics object used to calculate character width etc.
    static final int
    This factor multiplies the calculated values to scale to FOP internal measurements
    static final int
    Font size standard used for metric measurements
    private final Graphics2D
    Temp graphics object needed to get the font metrics
    private LineMetrics
    A LineMetrics to access high-resolution metrics information.
    private float
    The size of the font last used
    private int
    The style of the font last used
    private int[]
    The width of all 256 character, if requested
    private int
    The typical height of a small cap latter (often derived from "x", value in mpt)
  • Constructor Summary

    Constructors
    Constructor
    Description
    Constructs a new Font-metrics.
  • Method Summary

    Modifier and Type
    Method
    Description
    private static Graphics2D
    Creates a Graphics2D object for the sole purpose of getting font metrics.
    int
    getAscender(String family, int style, int size)
    Determines the font ascent of the Font described by this FontMetrics object
    private Font
    getBaseFont(String family, int style, float size)
     
    int
    getCapHeight(String family, int style, int size)
    The size of a capital letter measured from the font's baseline
    int
    getDescender(String family, int style, int size)
    Determines the font descent of the Font described by this FontMetrics object
    getFont(String family, int style, int size)
    Returns a java.awt.Font instance for the desired family, style and size type.
    int
    getMaxAscent(String family, int style, int size)
    Determines the font's maximum ascent of the Font described by the current FontMetrics object
    int
    getStrikeoutPosition(String family, int style, int size)
     
    int
    getStrikeoutThickness(String family, int style, int size)
     
    int
    getUnderlinePosition(String family, int style, int size)
     
    int
    getUnderlineThickness(String family, int style, int size)
     
    int[]
    getWidths(String family, int style, int size)
    Return widths (in 1/1000ths of point size) of all characters
    int
    getXHeight(String family, int style, int size)
    Determines the typical font height of a small cap letter FontMetrics object
    boolean
    hasChar(String family, int style, int size, char c)
    Indicates whether the font contains a particular character/glyph.
    private int
     
    private boolean
    setFont(String family, int style, int size)
    Checks whether the font for which values are requested is the one used immediately before or whether it is a new one
    int
    width(int i, String family, int style, int size)
    Returns width (in 1/1000ths of point size) of character at code point i

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • FONT_SIZE

      public static final int FONT_SIZE
      Font size standard used for metric measurements
      See Also:
    • FONT_FACTOR

      public static final int FONT_FACTOR
      This factor multiplies the calculated values to scale to FOP internal measurements
      See Also:
    • width

      private int[] width
      The width of all 256 character, if requested
    • xHeight

      private int xHeight
      The typical height of a small cap latter (often derived from "x", value in mpt)
    • ascender

      private int ascender
      The highest point of the font above the baseline (usually derived from "d", value in mpt)
    • descender

      private int descender
      The lowest point of the font under the baseline (usually derived from "p", value in mpt)
    • f1

      private Font f1
      Buffered font. f1 is bufferd for metric measurements during layout. fSized is buffered for display purposes
    • family

      private String family
      The family type of the font last used
    • style

      private int style
      The style of the font last used
    • size

      private float size
      The size of the font last used
    • fmt

      private FontMetrics fmt
      The FontMetrics object used to calculate character width etc.
    • lineMetrics

      private LineMetrics lineMetrics
      A LineMetrics to access high-resolution metrics information.
    • graphics

      private final Graphics2D graphics
      Temp graphics object needed to get the font metrics
  • Constructor Details

    • Java2DFontMetrics

      public Java2DFontMetrics()
      Constructs a new Font-metrics.
  • Method Details

    • createFontMetricsGraphics2D

      private static Graphics2D createFontMetricsGraphics2D()
      Creates a Graphics2D object for the sole purpose of getting font metrics.
      Returns:
      a Graphics2D object
    • getMaxAscent

      public int getMaxAscent(String family, int style, int size)
      Determines the font's maximum ascent of the Font described by the current FontMetrics object
      Parameters:
      family - font family (java name) to use
      style - font style (java def.) to use
      size - font size
      Returns:
      ascent in milliponts
    • getAscender

      public int getAscender(String family, int style, int size)
      Determines the font ascent of the Font described by this FontMetrics object
      Parameters:
      family - font family (java name) to use
      style - font style (java def.) to use
      size - font size
      Returns:
      ascent in milliponts
    • getCapHeight

      public int getCapHeight(String family, int style, int size)
      The size of a capital letter measured from the font's baseline
      Parameters:
      family - font family
      style - font style
      size - font size
      Returns:
      capital height in millipoints
    • getDescender

      public int getDescender(String family, int style, int size)
      Determines the font descent of the Font described by this FontMetrics object
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      descent in milliponts
    • getXHeight

      public int getXHeight(String family, int style, int size)
      Determines the typical font height of a small cap letter FontMetrics object
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      font height in milliponts
    • getUnderlinePosition

      public int getUnderlinePosition(String family, int style, int size)
    • getUnderlineThickness

      public int getUnderlineThickness(String family, int style, int size)
    • getStrikeoutPosition

      public int getStrikeoutPosition(String family, int style, int size)
    • getStrikeoutThickness

      public int getStrikeoutThickness(String family, int style, int size)
    • width

      public int width(int i, String family, int style, int size)
      Returns width (in 1/1000ths of point size) of character at code point i
      Parameters:
      i - the character for which to get the width
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      character width in millipoints
    • internalCharWidth

      private int internalCharWidth(int i)
    • getWidths

      public int[] getWidths(String family, int style, int size)
      Return widths (in 1/1000ths of point size) of all characters
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      array of character widths in millipoints
    • getBaseFont

      private Font getBaseFont(String family, int style, float size)
    • setFont

      private boolean setFont(String family, int style, int size)
      Checks whether the font for which values are requested is the one used immediately before or whether it is a new one
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      true if the font was changed, false otherwise
    • getFont

      public Font getFont(String family, int style, int size)
      Returns a java.awt.Font instance for the desired family, style and size type. This is here, so that the font-mapping of FOP-defined fonts to java-fonts can be done in one place and does not need to occur in AWTFontRenderer.
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      Returns:
      font with the desired characeristics.
    • hasChar

      public boolean hasChar(String family, int style, int size, char c)
      Indicates whether the font contains a particular character/glyph.
      Parameters:
      family - font family (jave name) to use
      style - font style (jave def.) to use
      size - font size
      c - the glyph to check
      Returns:
      true if the character is supported