public class PDType1Font extends PDSimpleFont
Modifier and Type | Field and Description |
---|---|
private static java.util.Map<java.lang.String,java.lang.String> |
ALT_NAMES |
private java.util.Map<java.lang.Integer,byte[]> |
codeToBytesMap
to improve encoding speed.
|
static PDType1Font |
COURIER |
static PDType1Font |
COURIER_BOLD |
static PDType1Font |
COURIER_BOLD_OBLIQUE |
static PDType1Font |
COURIER_OBLIQUE |
private BoundingBox |
fontBBox |
private Matrix |
fontMatrix |
private java.awt.geom.AffineTransform |
fontMatrixTransform |
private FontBoxFont |
genericFont
embedded or system font for rendering.
|
static PDType1Font |
HELVETICA |
static PDType1Font |
HELVETICA_BOLD |
static PDType1Font |
HELVETICA_BOLD_OBLIQUE |
static PDType1Font |
HELVETICA_OBLIQUE |
private boolean |
isDamaged |
private boolean |
isEmbedded |
private static org.apache.commons.logging.Log |
LOG |
private static int |
PFB_START_MARKER |
static PDType1Font |
SYMBOL |
static PDType1Font |
TIMES_BOLD |
static PDType1Font |
TIMES_BOLD_ITALIC |
static PDType1Font |
TIMES_ITALIC |
static PDType1Font |
TIMES_ROMAN |
private Type1Font |
type1font
embedded font.
|
static PDType1Font |
ZAPF_DINGBATS |
encoding, glyphList
DEFAULT_FONT_MATRIX, dict
Modifier | Constructor and Description |
---|---|
|
PDType1Font(COSDictionary fontDictionary)
Creates a Type 1 font from a Font dictionary in a PDF.
|
|
PDType1Font(PDDocument doc,
java.io.InputStream pfbIn)
Creates a new Type 1 font for embedding.
|
|
PDType1Font(PDDocument doc,
java.io.InputStream pfbIn,
Encoding encoding)
Creates a new Type 1 font for embedding.
|
private |
PDType1Font(java.lang.String baseFont)
Creates a Type 1 standard 14 font for embedding.
|
Modifier and Type | Method and Description |
---|---|
java.lang.String |
codeToName(int code) |
protected byte[] |
encode(int unicode)
Encodes the given Unicode code point for use in a PDF content stream.
|
private static int |
findBinaryOffsetAfterExec(byte[] bytes,
int startOffset) |
private BoundingBox |
generateBoundingBox() |
float |
getAverageFontWidth()
This will get the average font width for all characters.
|
java.lang.String |
getBaseFont()
Returns the PostScript name of the font.
|
BoundingBox |
getBoundingBox()
Returns the font's bounding box.
|
FontBoxFont |
getFontBoxFont()
Returns the embedded or system font used for rendering.
|
Matrix |
getFontMatrix()
Returns the font matrix, which represents the transformation from glyph space to text space.
|
float |
getHeight(int code)
Returns the height of the given character, in glyph space.
|
java.lang.String |
getName()
Returns the name of this font, either the PostScript "BaseName" or the Type 3 "Name".
|
private java.lang.String |
getNameInFont(java.lang.String name)
Maps a PostScript glyph name to the name in the underlying font, for example when
using a TTF font we might map "W" to "uni0057".
|
java.awt.geom.GeneralPath |
getPath(java.lang.String name)
Returns the path for the character with the given name.
|
Type1Font |
getType1Font()
Returns the embedded or substituted Type 1 font, or null if there is none.
|
float |
getWidthFromFont(int code)
Returns the width of a glyph in the embedded font file.
|
boolean |
hasGlyph(java.lang.String name)
Returns true if the font contains the character with the given name.
|
boolean |
isDamaged()
Returns true if the embedded font file is damaged.
|
boolean |
isEmbedded()
Returns true if the font file is embedded in the PDF.
|
int |
readCode(java.io.InputStream in)
Reads a character code from a content stream string.
|
protected Encoding |
readEncodingFromFont()
Called by readEncoding() if the encoding needs to be extracted from the font file.
|
private int |
repairLength1(byte[] bytes,
int length1)
Some Type 1 fonts have an invalid Length1, which causes the binary segment of the font
to be truncated, see PDFBOX-2350, PDFBOX-3677.
|
private int |
repairLength2(byte[] bytes,
int length1,
int length2)
Some Type 1 fonts have an invalid Length2, see PDFBOX-3475.
|
addToSubset, getEncoding, getGlyphList, getStandard14Width, getSymbolicFlag, hasExplicitWidth, isFontSymbolic, isStandard14, isSymbolic, isVertical, readEncoding, subset, toUnicode, toUnicode, willBeSubset
encode, equals, getCOSObject, getDisplacement, getFontDescriptor, getPositionVector, getSpaceWidth, getStandard14AFM, getStringWidth, getSubType, getType, getWidth, getWidths, hashCode, readCMap, setFontDescriptor, toString
private static final org.apache.commons.logging.Log LOG
private static final java.util.Map<java.lang.String,java.lang.String> ALT_NAMES
private static final int PFB_START_MARKER
public static final PDType1Font TIMES_ROMAN
public static final PDType1Font TIMES_BOLD
public static final PDType1Font TIMES_ITALIC
public static final PDType1Font TIMES_BOLD_ITALIC
public static final PDType1Font HELVETICA
public static final PDType1Font HELVETICA_BOLD
public static final PDType1Font HELVETICA_OBLIQUE
public static final PDType1Font HELVETICA_BOLD_OBLIQUE
public static final PDType1Font COURIER
public static final PDType1Font COURIER_BOLD
public static final PDType1Font COURIER_OBLIQUE
public static final PDType1Font COURIER_BOLD_OBLIQUE
public static final PDType1Font SYMBOL
public static final PDType1Font ZAPF_DINGBATS
private final Type1Font type1font
private final FontBoxFont genericFont
private final boolean isEmbedded
private final boolean isDamaged
private Matrix fontMatrix
private final java.awt.geom.AffineTransform fontMatrixTransform
private BoundingBox fontBBox
private final java.util.Map<java.lang.Integer,byte[]> codeToBytesMap
private PDType1Font(java.lang.String baseFont)
baseFont
- One of the standard 14 PostScript namespublic PDType1Font(PDDocument doc, java.io.InputStream pfbIn) throws java.io.IOException
doc
- PDF document to write topfbIn
- PFB file streamjava.io.IOException
public PDType1Font(PDDocument doc, java.io.InputStream pfbIn, Encoding encoding) throws java.io.IOException
doc
- PDF document to write topfbIn
- PFB file streamencoding
- java.io.IOException
public PDType1Font(COSDictionary fontDictionary) throws java.io.IOException
fontDictionary
- font dictionary.java.io.IOException
- if there was an error initializing the font.java.lang.IllegalArgumentException
- if /FontFile3 was used.private int repairLength1(byte[] bytes, int length1)
bytes
- Type 1 stream byteslength1
- Length1 from the Type 1 streamprivate static int findBinaryOffsetAfterExec(byte[] bytes, int startOffset)
private int repairLength2(byte[] bytes, int length1, int length2)
bytes
- Type 1 stream byteslength1
- Length1 from the Type 1 streamlength2
- Length2 from the Type 1 streampublic final java.lang.String getBaseFont()
public float getHeight(int code) throws java.io.IOException
PDFontLike
Warning: This method is deprecated in PDFBox 2.0 because there is no meaningful value
which it can return. The PDFontLike.getWidth(int)
method returns the advance width of a glyph,
but there is no corresponding advance height. The logical height of a character is the same
for every character in a font, so if you want that, retrieve the font bbox's height.
Otherwise if you want the visual bounds of the glyph then call getPath(..) on the appropriate
PDFont subclass to retrieve the glyph outline as a GeneralPath. See the cyan rectangles in
the DrawPrintTextLocations.java example to see this in action.
code
- character codejava.io.IOException
protected byte[] encode(int unicode) throws java.io.IOException
PDFont
This method is called when embedding text in PDFs and when filling in fields.
public float getWidthFromFont(int code) throws java.io.IOException
PDFontLike
code
- character codejava.io.IOException
- if the font could not be readpublic boolean isEmbedded()
PDFontLike
public float getAverageFontWidth()
PDFont
getAverageFontWidth
in interface PDFontLike
getAverageFontWidth
in class PDFont
public int readCode(java.io.InputStream in) throws java.io.IOException
PDFont
protected Encoding readEncodingFromFont() throws java.io.IOException
PDSimpleFont
readEncodingFromFont
in class PDSimpleFont
java.io.IOException
- if the font file could not be read.public Type1Font getType1Font()
public FontBoxFont getFontBoxFont()
PDSimpleFont
getFontBoxFont
in class PDSimpleFont
public java.lang.String getName()
PDFontLike
public BoundingBox getBoundingBox() throws java.io.IOException
PDFontLike
java.io.IOException
private BoundingBox generateBoundingBox() throws java.io.IOException
java.io.IOException
public java.lang.String codeToName(int code) throws java.io.IOException
java.io.IOException
private java.lang.String getNameInFont(java.lang.String name) throws java.io.IOException
java.io.IOException
public java.awt.geom.GeneralPath getPath(java.lang.String name) throws java.io.IOException
PDSimpleFont
getPath
in class PDSimpleFont
java.io.IOException
- if the path could not be readpublic boolean hasGlyph(java.lang.String name) throws java.io.IOException
PDSimpleFont
hasGlyph
in class PDSimpleFont
java.io.IOException
- if the path could not be readpublic final Matrix getFontMatrix()
PDFontLike
getFontMatrix
in interface PDFontLike
getFontMatrix
in class PDFont
public boolean isDamaged()
PDFontLike