com.sun.pdfview.font
Class PDFFont

java.lang.Object
  extended by com.sun.pdfview.font.PDFFont
Direct Known Subclasses:
OutlineFont, Type0Font, Type3Font

public abstract class PDFFont
extends java.lang.Object

a Font definition for PDF files


Constructor Summary
protected PDFFont(java.lang.String baseFont, PDFFontDescriptor descriptor)
          Create a PDFFont given the base font name and the font descriptor
 
Method Summary
 boolean equals(java.lang.Object o)
          Compare two fonts base on the baseFont
 java.lang.String getBaseFont()
          Get the postscript name of this font
 PDFGlyph getCachedGlyph(char src, java.lang.String name)
          Get a glyph for a given character code.
 PDFFontDescriptor getDescriptor()
          Get the descriptor for this font
 PDFFontEncoding getEncoding()
          Get the encoding for this font
static PDFFont getFont(PDFObject obj, java.util.HashMap<java.lang.String,PDFObject> resources)
          get the PDFFont corresponding to the font described in a PDFObject.
protected abstract  PDFGlyph getGlyph(char src, java.lang.String name)
          Get the glyph for a given character code and name The preferred method of getting the glyph should be by name.
 java.util.List<PDFGlyph> getGlyphs(java.lang.String text)
          Get the glyphs associated with a given String in this font
 java.lang.String getSubtype()
          Get the subtype of this font.
 PDFCMap getUnicodeMap()
          Get the CMap which maps the characters in this font to unicode names
 int hashCode()
          Hash a font based on its base font
 void setBaseFont(java.lang.String baseFont)
          Set the postscript name of this font
 void setDescriptor(PDFFontDescriptor descriptor)
          Set the descriptor font descriptor
 void setEncoding(PDFFontEncoding encoding)
          Set the encoding for this font
 void setSubtype(java.lang.String subtype)
          Set the font subtype
 void setUnicodeMap(PDFCMap unicodeMap)
          Set the CMap which maps the characters in this font to unicode names
 java.lang.String toString()
          Turn this font into a pretty String
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PDFFont

protected PDFFont(java.lang.String baseFont,
                  PDFFontDescriptor descriptor)
Create a PDFFont given the base font name and the font descriptor

Parameters:
baseFont - the postscript name of this font
descriptor - the descriptor for the font
Method Detail

getFont

public static PDFFont getFont(PDFObject obj,
                              java.util.HashMap<java.lang.String,PDFObject> resources)
                       throws java.io.IOException
get the PDFFont corresponding to the font described in a PDFObject. The object is actually a dictionary containing the following keys:
Type = "Font"
Subtype = (Type1 | TrueType | Type3 | Type0 | MMType1 | CIDFontType0 | CIDFontType2)
FirstChar = #
LastChar = #
Widths = array of #
Encoding = (some name representing a dictionary in the resources | an inline dictionary)

For Type1 and TrueType fonts, the dictionary also contains:
BaseFont = (some name, or XXXXXX+Name as a subset of font Name)

For Type3 font, the dictionary contains:
FontBBox = (rectangle)
FontMatrix = (array, typically [0.001, 0, 0, 0.001, 0, 0])
CharProcs = (dictionary) Resources = (dictionary)

Throws:
java.io.IOException

getSubtype

public java.lang.String getSubtype()
Get the subtype of this font.

Returns:
the subtype, one of: Type0, Type1, TrueType or Type3

setSubtype

public void setSubtype(java.lang.String subtype)
Set the font subtype


getBaseFont

public java.lang.String getBaseFont()
Get the postscript name of this font

Returns:
the postscript name of this font

setBaseFont

public void setBaseFont(java.lang.String baseFont)
Set the postscript name of this font

Parameters:
baseFont - the postscript name of the font

getEncoding

public PDFFontEncoding getEncoding()
Get the encoding for this font

Returns:
the encoding which maps from this font to actual characters

setEncoding

public void setEncoding(PDFFontEncoding encoding)
Set the encoding for this font


getDescriptor

public PDFFontDescriptor getDescriptor()
Get the descriptor for this font

Returns:
the font descriptor

setDescriptor

public void setDescriptor(PDFFontDescriptor descriptor)
Set the descriptor font descriptor


getUnicodeMap

public PDFCMap getUnicodeMap()
Get the CMap which maps the characters in this font to unicode names


setUnicodeMap

public void setUnicodeMap(PDFCMap unicodeMap)
Set the CMap which maps the characters in this font to unicode names


getGlyphs

public java.util.List<PDFGlyph> getGlyphs(java.lang.String text)
Get the glyphs associated with a given String in this font

Parameters:
text - the text to translate into glyphs

getCachedGlyph

public PDFGlyph getCachedGlyph(char src,
                               java.lang.String name)
Get a glyph for a given character code. The glyph is returned from the cache if available, or added to the cache if not

Parameters:
src - the character code of this glyph
name - the name of the glyph, or null if the name is unknown
Returns:
a glyph for this character

getGlyph

protected abstract PDFGlyph getGlyph(char src,
                                     java.lang.String name)
Get the glyph for a given character code and name The preferred method of getting the glyph should be by name. If the name is null or not valid, then the character code should be used. If the both the code and the name are invalid, the undefined glyph should be returned. Note this method must *always* return a glyph.

Parameters:
src - the character code of this glyph
name - the name of this glyph or null if unknown
Returns:
a glyph for this character

toString

public java.lang.String toString()
Turn this font into a pretty String

Overrides:
toString in class java.lang.Object

equals

public boolean equals(java.lang.Object o)
Compare two fonts base on the baseFont

Overrides:
equals in class java.lang.Object

hashCode

public int hashCode()
Hash a font based on its base font

Overrides:
hashCode in class java.lang.Object