public abstract class PDFont extends Object implements COSObjectable
Modifier and Type | Field and Description |
---|---|
protected org.apache.fontbox.cmap.CMap |
cmap
This is only used if this is a font object and it has an encoding and it is
a type0 font with a cmap.
|
protected static Map<String,org.apache.fontbox.cmap.CMap> |
cmapObjects |
protected COSDictionary |
font
The cos dictionary for this font.
|
protected PDMatrix |
fontMatrix
The font matrix.
|
protected static String |
resourceRootCMAP |
protected org.apache.fontbox.cmap.CMap |
toUnicodeCmap
The CMap holding the ToUnicode mapping.
|
Constructor and Description |
---|
PDFont()
Constructor.
|
PDFont(COSDictionary fontDictionary)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
static void |
clearResources()
This will clear AFM resources that are stored statically.
|
protected String |
cmapEncoding(int code,
int length,
boolean isCIDFont,
org.apache.fontbox.cmap.CMap sourceCmap)
Encode the given value using the CMap of the font.
|
protected abstract void |
determineEncoding()
Determines the encoding for the font.
|
void |
drawString(String string,
Graphics g,
float fontSize,
AffineTransform at,
float x,
float y)
Deprecated.
|
abstract void |
drawString(String string,
int[] codePoints,
Graphics g,
float fontSize,
AffineTransform at,
float x,
float y)
This will draw a string on a canvas using the font.
|
String |
encode(byte[] c,
int offset,
int length)
This will perform the encoding of a character if needed.
|
int |
encodeToCID(byte[] c,
int offset,
int length) |
boolean |
equals(Object other) |
protected org.apache.fontbox.afm.FontMetric |
getAFM()
This will get an AFM object if one exists.
|
abstract float |
getAverageFontWidth()
This will get the average font width for all characters.
|
protected float |
getAverageFontWidthFromAFMFile()
This will attempt to get the average font width from an AFM file.
|
String |
getBaseFont()
The PostScript name of the font.
|
int |
getCodeFromArray(byte[] data,
int offset,
int length)
Used for multibyte encodings.
|
COSBase |
getCOSObject()
Convert this standard java object to a COS object.
|
protected COSBase |
getEncoding()
cache the
COSName.ENCODING object from
the font's dictionary since it is called so often. |
int |
getFirstChar()
The code for the first char or -1 if there is none.
|
abstract PDRectangle |
getFontBoundingBox()
This will get the fonts bounding box.
|
PDFontDescriptor |
getFontDescriptor()
This will get the font descriptor for this font.
|
Encoding |
getFontEncoding()
This will get or create the encoder.
|
abstract float |
getFontHeight(byte[] c,
int offset,
int length)
This will get the font height for a character.
|
PDMatrix |
getFontMatrix()
This will get the matrix that is used to transform glyph space to
text space.
|
abstract float |
getFontWidth(byte[] c,
int offset,
int length)
This will get the font width for a character.
|
float |
getFontWidth(int charCode)
Determines the width of the given character.
|
protected float |
getFontWidthFromAFMFile(int code)
This will attempt to get the font width from an AFM file.
|
int |
getLastChar()
The code for the last char or -1 if there is none.
|
abstract float |
getSpaceWidth()
Determines the width of the space character.
|
float |
getStringWidth(String string)
This will get the width of this string for this font.
|
String |
getSubType()
This will get the subtype of font, Type1, Type3, ...
|
String |
getType()
This will always return "Font" for fonts.
|
List<Float> |
getWidths()
The widths of the characters.
|
int |
hashCode() |
protected boolean |
hasToUnicode()
Determines if a font as a ToUnicode entry.
|
protected boolean |
isType0Font()
Determines if the font is a type 0 font.
|
protected boolean |
isType1Font()
Determines if the font is a type 1 font.
|
protected org.apache.fontbox.cmap.CMap |
parseCmap(String cmapRoot,
InputStream cmapStream) |
void |
setBaseFont(String baseFont)
Set the PostScript name of the font.
|
protected void |
setEncoding(COSBase encodingValue)
Set the encoding object from the fonts dictionary.
|
void |
setFirstChar(int firstChar)
Set the first character this font supports.
|
void |
setFontDescriptor(PDFontDescriptorDictionary fdDictionary)
This will set the font descriptor.
|
void |
setFontEncoding(Encoding enc)
The will set the encoding for this font.
|
protected void |
setHasToUnicode(boolean hasToUnicodeValue)
Sets hasToUnicode to the given value.
|
void |
setLastChar(int lastChar)
Set the last character this font supports.
|
void |
setWidths(List<Float> widthsList)
Set the widths of the characters code.
|
protected COSDictionary font
protected PDMatrix fontMatrix
protected org.apache.fontbox.cmap.CMap cmap
protected org.apache.fontbox.cmap.CMap toUnicodeCmap
protected static final String resourceRootCMAP
public PDFont()
public PDFont(COSDictionary fontDictionary)
fontDictionary
- The font dictionary according to the PDF specification.public static void clearResources()
public PDFontDescriptor getFontDescriptor()
public void setFontDescriptor(PDFontDescriptorDictionary fdDictionary)
fdDictionary
- The font descriptor.protected abstract void determineEncoding()
public COSBase getCOSObject()
getCOSObject
in interface COSObjectable
public abstract float getFontWidth(byte[] c, int offset, int length) throws IOException
c
- The character code to get the width for.offset
- The offset into the array.length
- The length of the data.IOException
- If an error occurs while parsing.public abstract float getFontHeight(byte[] c, int offset, int length) throws IOException
c
- The character code to get the height for.offset
- The offset into the array.length
- The length of the data.IOException
- If an error occurs while parsing.public float getStringWidth(String string) throws IOException
string
- The string to get the width of.IOException
- If there is an error getting the width information.public abstract float getAverageFontWidth() throws IOException
IOException
- If an error occurs while parsing.public void drawString(String string, Graphics g, float fontSize, AffineTransform at, float x, float y) throws IOException
drawString(String, int[], Graphics, float, AffineTransform, float, float)
insteadstring
- The string to draw.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.IOException
- If there is an error drawing the specific string.public abstract void drawString(String string, int[] codePoints, Graphics g, float fontSize, AffineTransform at, float x, float y) throws IOException
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.IOException
- If there is an error drawing the specific string.public int getCodeFromArray(byte[] data, int offset, int length)
data
- The array of data.offset
- The offset into the array.length
- The number of bytes to use.protected float getFontWidthFromAFMFile(int code) throws IOException
code
- The character code we are trying to get.IOException
- if we cannot find the width.protected float getAverageFontWidthFromAFMFile() throws IOException
IOException
- if we cannot find the width.protected org.apache.fontbox.afm.FontMetric getAFM()
protected COSBase getEncoding()
COSName.ENCODING
object from
the font's dictionary since it is called so often.
Use this method instead of
font.getDictionaryObject(COSName.ENCODING);
protected void setEncoding(COSBase encodingValue)
encodingValue
- the given encoding.protected String cmapEncoding(int code, int length, boolean isCIDFont, org.apache.fontbox.cmap.CMap sourceCmap) throws IOException
code
- the code to encode.length
- the byte length of the given code.isCIDFont
- indicates that the used font is a CID font.IOException
- if something went wrongpublic String encode(byte[] c, int offset, int length) throws IOException
c
- The character to encode.offset
- The offset into the array to get the datalength
- The number of bytes to read.IOException
- If there is an error during the encoding.public int encodeToCID(byte[] c, int offset, int length) throws IOException
IOException
protected org.apache.fontbox.cmap.CMap parseCmap(String cmapRoot, InputStream cmapStream)
public void setFontEncoding(Encoding enc)
enc
- The font encoding.public Encoding getFontEncoding()
public String getType()
public String getSubType()
protected boolean isType1Font()
protected boolean isType0Font()
public String getBaseFont()
public void setBaseFont(String baseFont)
baseFont
- The postscript name for the font.public int getFirstChar()
public void setFirstChar(int firstChar)
firstChar
- The first character.public int getLastChar()
public void setLastChar(int lastChar)
lastChar
- The last character.public List<Float> getWidths()
public void setWidths(List<Float> widthsList)
widthsList
- The widths of the character codes.public PDMatrix getFontMatrix()
public abstract PDRectangle getFontBoundingBox() throws IOException
IOException
- If there is an error getting the bounding box.public float getFontWidth(int charCode)
charCode
- the code of the given characterprotected boolean hasToUnicode()
protected void setHasToUnicode(boolean hasToUnicodeValue)
hasToUnicodeValue
- the given value for hasToUnicodepublic abstract float getSpaceWidth()
Copyright © 2002-2013 The Apache Software Foundation. All Rights Reserved.