org.apache.pdfbox.pdmodel.font
Class PDSimpleFont

java.lang.Object
  extended by org.apache.pdfbox.pdmodel.font.PDFont
      extended by org.apache.pdfbox.pdmodel.font.PDSimpleFont
All Implemented Interfaces:
COSObjectable
Direct Known Subclasses:
PDCIDFont, PDMMType1Font, PDTrueTypeFont, PDType0Font, PDType1CFont, PDType1Font, PDType3Font

public abstract class PDSimpleFont
extends PDFont

This class contains implementation details of the simple pdf fonts.

Version:
$Revision: 1.18 $
Author:
Ben Litchfield

Field Summary
 
Fields inherited from class org.apache.pdfbox.pdmodel.font.PDFont
cmap, cmapObjects, font, fontMatrix, resourceRootCMAP, toUnicodeCmap
 
Constructor Summary
PDSimpleFont()
          Constructor.
PDSimpleFont(COSDictionary fontDictionary)
          Constructor.
 
Method Summary
protected  void determineEncoding()
          Determines the encoding for the font.
 void drawString(java.lang.String string, int[] codePoints, java.awt.Graphics g, float fontSize, java.awt.geom.AffineTransform at, float x, float y)
          This will draw a string on a canvas using the font.
 float getAverageFontWidth()
          This will get the average font width for all characters.
 java.awt.Font getawtFont()
          Looks up, creates, returns the AWT Font.
 PDRectangle getFontBoundingBox()
          This will get the fonts bounding box.
 float getFontHeight(byte[] c, int offset, int length)
          This will get the font height for a character.
 float getFontWidth(byte[] c, int offset, int length)
          This will get the font width for a character.
 float getSpaceWidth()
          Determines the width of the space character.
 COSBase getToUnicode()
          This will get the ToUnicode object.
protected  boolean isFontSubstituted()
          This will get the value for isFontSubstituted, which indicates if the font was substituted due to a problem with the embedded one.
protected  void setIsFontSubstituted(boolean isSubstituted)
          This will set the value for isFontSubstituted.
 void setToUnicode(COSBase unicode)
          This will set the ToUnicode object.
protected  void writeFont(java.awt.Graphics2D g2d, java.awt.geom.AffineTransform at, float x, float y, java.awt.font.GlyphVector glyphs)
          This will draw a string on a canvas using the font.
 
Methods inherited from class org.apache.pdfbox.pdmodel.font.PDFont
clearResources, cmapEncoding, drawString, encode, encodeToCID, equals, getAFM, getAverageFontWidthFromAFMFile, getBaseFont, getCodeFromArray, getCOSObject, getEncoding, getFirstChar, getFontDescriptor, getFontEncoding, getFontMatrix, getFontWidth, getFontWidthFromAFMFile, getLastChar, getStringWidth, getSubType, getType, getWidths, hashCode, hasToUnicode, isType0Font, isType1Font, parseCmap, setBaseFont, setEncoding, setFirstChar, setFontDescriptor, setFontEncoding, setHasToUnicode, setLastChar, setWidths
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PDSimpleFont

public PDSimpleFont()
Constructor.


PDSimpleFont

public PDSimpleFont(COSDictionary fontDictionary)
Constructor.

Parameters:
fontDictionary - The font dictionary according to the PDF specification.
Method Detail

getawtFont

public java.awt.Font getawtFont()
                         throws java.io.IOException
Looks up, creates, returns the AWT Font.

Returns:
returns the awt font to bes used for rendering
Throws:
java.io.IOException - if something went wrong.

drawString

public void drawString(java.lang.String string,
                       int[] codePoints,
                       java.awt.Graphics g,
                       float fontSize,
                       java.awt.geom.AffineTransform at,
                       float x,
                       float y)
                throws java.io.IOException
This will draw a string on a canvas using the font.

Specified by:
drawString in class PDFont
Parameters:
string - The string to draw.
codePoints - The codePoints of the given string.
g - The graphics to draw onto.
fontSize - The size of the font to draw.
at - The transformation matrix with all information for scaling and shearing of the font.
x - The x coordinate to draw at.
y - The y coordinate to draw at.
Throws:
java.io.IOException - If there is an error drawing the specific string.

getFontHeight

public float getFontHeight(byte[] c,
                           int offset,
                           int length)
                    throws java.io.IOException
This will get the font height for a character.

Specified by:
getFontHeight in class PDFont
Parameters:
c - The character code to get the width for.
offset - The offset into the array.
length - The length of the data.
Returns:
The width is in 1000 unit of text space, ie 333 or 777
Throws:
java.io.IOException - If an error occurs while parsing.

getFontWidth

public float getFontWidth(byte[] c,
                          int offset,
                          int length)
                   throws java.io.IOException
This will get the font width for a character.

Specified by:
getFontWidth in class PDFont
Parameters:
c - The character code to get the width for.
offset - The offset into the array.
length - The length of the data.
Returns:
The width is in 1000 unit of text space, ie 333 or 777
Throws:
java.io.IOException - If an error occurs while parsing.

getAverageFontWidth

public float getAverageFontWidth()
                          throws java.io.IOException
This will get the average font width for all characters.

Specified by:
getAverageFontWidth in class PDFont
Returns:
The width is in 1000 unit of text space, ie 333 or 777
Throws:
java.io.IOException - If an error occurs while parsing.

getToUnicode

public COSBase getToUnicode()
This will get the ToUnicode object.

Returns:
The ToUnicode object.

setToUnicode

public void setToUnicode(COSBase unicode)
This will set the ToUnicode object.

Parameters:
unicode - The unicode object.

getFontBoundingBox

public PDRectangle getFontBoundingBox()
                               throws java.io.IOException
This will get the fonts bounding box.

Specified by:
getFontBoundingBox in class PDFont
Returns:
The fonts bouding box.
Throws:
java.io.IOException - If there is an error getting the bounding box.

writeFont

protected void writeFont(java.awt.Graphics2D g2d,
                         java.awt.geom.AffineTransform at,
                         float x,
                         float y,
                         java.awt.font.GlyphVector glyphs)
This will draw a string on a canvas using the font.

Parameters:
g2d - The graphics to draw onto.
at - The transformation matrix with all information for scaling and shearing of the font.
x - The x coordinate to draw at.
y - The y coordinate to draw at.
glyphs - The GlyphVector containing the glyphs to be drawn.

determineEncoding

protected void determineEncoding()
Determines the encoding for the font. This method as to be overwritten, as there are different possibilities to define a mapping.

Specified by:
determineEncoding in class PDFont

isFontSubstituted

protected boolean isFontSubstituted()
This will get the value for isFontSubstituted, which indicates if the font was substituted due to a problem with the embedded one.

Returns:
true if the font was substituted

setIsFontSubstituted

protected void setIsFontSubstituted(boolean isSubstituted)
This will set the value for isFontSubstituted.

Parameters:
isSubstituted - true if the font was substituted

getSpaceWidth

public float getSpaceWidth()
Determines the width of the space character.

Specified by:
getSpaceWidth in class PDFont
Returns:
the width of the space character