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.Objecta Font definition for PDF files
-
-
Field Summary
Fields Modifier and Type Field Description private java.lang.StringbaseFontthe postscript name of this fontprivate java.util.Map<java.lang.Character,PDFGlyph>charCachea cache of glyphs indexed by characterprivate PDFFontDescriptordescriptorthe font descriptorprivate PDFFontEncodingencodingthe font encoding (maps character ids to glyphs)private java.lang.Stringsubtypethe font SubType of this fontprivate PDFCMapunicodeMapthe CMap that maps this font to unicode values
-
Constructor Summary
Constructors Modifier Constructor Description protectedPDFFont(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 booleanequals(java.lang.Object o)Compare two fonts base on the baseFontjava.lang.StringgetBaseFont()Get the postscript name of this fontPDFGlyphgetCachedGlyph(char src, java.lang.String name)Get a glyph for a given character code.PDFFontDescriptorgetDescriptor()Get the descriptor for this fontPDFFontEncodinggetEncoding()Get the encoding for this fontstatic PDFFontgetFont(PDFObject obj, java.util.HashMap<java.lang.String,PDFObject> resources)get the PDFFont corresponding to the font described in a PDFObject.protected abstract PDFGlyphgetGlyph(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.StringgetSubtype()Get the subtype of this font.PDFCMapgetUnicodeMap()Get the CMap which maps the characters in this font to unicode namesinthashCode()Hash a font based on its base fontvoidsetBaseFont(java.lang.String baseFont)Set the postscript name of this fontvoidsetDescriptor(PDFFontDescriptor descriptor)Set the descriptor font descriptorvoidsetEncoding(PDFFontEncoding encoding)Set the encoding for this fontvoidsetSubtype(java.lang.String subtype)Set the font subtypevoidsetUnicodeMap(PDFCMap unicodeMap)Set the CMap which maps the characters in this font to unicode namesjava.lang.StringtoString()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:
toStringin classjava.lang.Object
-
equals
public boolean equals(java.lang.Object o)
Compare two fonts base on the baseFont- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
Hash a font based on its base font- Overrides:
hashCodein classjava.lang.Object
-
-