Package 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
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.String
baseFont
the postscript name of this fontprivate java.util.Map<java.lang.Character,PDFGlyph>
charCache
a cache of glyphs indexed by characterprivate PDFFontDescriptor
descriptor
the font descriptorprivate PDFFontEncoding
encoding
the font encoding (maps character ids to glyphs)private java.lang.String
subtype
the font SubType of this fontprivate PDFCMap
unicodeMap
the CMap that maps this font to unicode values
-
Constructor Summary
Constructors Modifier Constructor Description protected
PDFFont(java.lang.String baseFont, PDFFontDescriptor descriptor)
Create a PDFFont given the base font name and the font descriptor
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
equals(java.lang.Object o)
Compare two fonts base on the baseFontjava.lang.String
getBaseFont()
Get the postscript name of this fontPDFGlyph
getCachedGlyph(char src, java.lang.String name)
Get a glyph for a given character code.PDFFontDescriptor
getDescriptor()
Get the descriptor for this fontPDFFontEncoding
getEncoding()
Get the encoding for this fontstatic 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 fontjava.lang.String
getSubtype()
Get the subtype of this font.PDFCMap
getUnicodeMap()
Get the CMap which maps the characters in this font to unicode namesint
hashCode()
Hash a font based on its base fontvoid
setBaseFont(java.lang.String baseFont)
Set the postscript name of this fontvoid
setDescriptor(PDFFontDescriptor descriptor)
Set the descriptor font descriptorvoid
setEncoding(PDFFontEncoding encoding)
Set the encoding for this fontvoid
setSubtype(java.lang.String subtype)
Set the font subtypevoid
setUnicodeMap(PDFCMap unicodeMap)
Set the CMap which maps the characters in this font to unicode namesjava.lang.String
toString()
Turn this font into a pretty String
-
-
-
Field Detail
-
subtype
private java.lang.String subtype
the font SubType of this font
-
baseFont
private java.lang.String baseFont
the postscript name of this font
-
encoding
private PDFFontEncoding encoding
the font encoding (maps character ids to glyphs)
-
descriptor
private PDFFontDescriptor descriptor
the font descriptor
-
unicodeMap
private PDFCMap unicodeMap
the CMap that maps this font to unicode values
-
charCache
private java.util.Map<java.lang.Character,PDFGlyph> charCache
a cache of glyphs indexed by character
-
-
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 fontdescriptor
- 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 glyphname
- 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 glyphname
- 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 classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
Compare two fonts base on the baseFont- Overrides:
equals
in classjava.lang.Object
-
hashCode
public int hashCode()
Hash a font based on its base font- Overrides:
hashCode
in classjava.lang.Object
-
-