com.sun.pdfview.font

## Class PDFFont

- java.lang.Object
- - 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

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

### Method Summary

Methods
`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`