Package org.openpdf.text.pdf
Class Type1Font
java.lang.Object
org.openpdf.text.pdf.BaseFont
org.openpdf.text.pdf.Type1Font
Reads a Type1 font
-
Nested Class Summary
Nested classes/interfaces inherited from class org.openpdf.text.pdf.BaseFont
BaseFont.StreamFont -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate intA variable.private booleantrueif this font is one of the 14 built in fonts.private intA variable.private StringThe character set of the font.Represents the section CharMetrics in the AFM file.private intA variable.private StringThe font's encoding name.private StringThe family name of the font.private StringThe file in use.private StringThe Postscript font name.private StringThe full name of the font.private booleantrueif all the characters have the same width.private floatThe italic angle of the font, usually 0.0 or negative.Represents the section KernPairs in the AFM file.private intThe llx of the FontBox.private intThe lly of the FontBox.protected byte[]The PFB file if the input was made with abytearray.private static final int[]Types of records in a PFB file.private static FontsResourceAnchorprivate intA variable.private intA variable.private intThe underline position.private intThe underline thickness.private intThe lurx of the FontBox.private intThe ury of the FontBox.private StringThe weight of the font: normal, bold, etc.private intA variable.Fields inherited from class org.openpdf.text.pdf.BaseFont
ASCENT, AWT_ASCENT, AWT_DESCENT, AWT_LEADING, AWT_MAXADVANCE, BBOXLLX, BBOXLLY, BBOXURX, BBOXURY, BuiltinFonts14, CACHED, CAPHEIGHT, CHAR_RANGE_ARABIC, CHAR_RANGE_CYRILLIC, CHAR_RANGE_HEBREW, CHAR_RANGE_LATIN, charBBoxes, CID_NEWLINE, compressionLevel, COURIER, COURIER_BOLD, COURIER_BOLDOBLIQUE, COURIER_OBLIQUE, CP1250, CP1252, CP1257, DESCENT, differences, directTextToByte, embedded, EMBEDDED, encoding, fastWinansi, FONT_TYPE_CJK, FONT_TYPE_DOCUMENT, FONT_TYPE_T1, FONT_TYPE_T3, FONT_TYPE_TT, FONT_TYPE_TTUNI, fontCache, fontSpecific, fontType, forceWidthsOutput, HELVETICA, HELVETICA_BOLD, HELVETICA_BOLDOBLIQUE, HELVETICA_OBLIQUE, IDENTITY_H, IDENTITY_V, includeCidSet, ITALICANGLE, MACROMAN, NOT_CACHED, NOT_EMBEDDED, notdef, RESOURCE_PATH, secureRandom, specialMap, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, SUBSCRIPT_OFFSET, SUBSCRIPT_SIZE, subset, subsetRanges, SUPERSCRIPT_OFFSET, SUPERSCRIPT_SIZE, SYMBOL, TIMES_BOLD, TIMES_BOLDITALIC, TIMES_ITALIC, TIMES_ROMAN, UNDERLINE_POSITION, UNDERLINE_THICKNESS, unicodeDifferences, widths, WINANSI, ZAPFDINGBATS -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionString[][]Gets all the entries of the names-table.String[][]Gets the family name of the font.private PdfDictionarygetFontBaseType(PdfIndirectReference fontDescriptor, int firstChar, int lastChar, byte[] shortTag) Generates the font dictionary for this font.floatgetFontDescriptor(int key, float fontSize) Gets the font parameter identified bykey.private PdfDictionarygetFontDescriptor(PdfIndirectReference fontStream) Generates the font descriptor for this font ornullif it is one of the 14 built in fonts.String[][]Gets the full name of the font.If the embedded flag isfalseor if the font is one of the 14 built in types, it returnsnull, otherwise the font is read and output in a PdfStream object.intgetKerning(int char1, int char2) Gets the kerning between two Unicode characters.Gets the postscript font name.protected int[]getRawCharBBox(int c, String name) (package private) intgetRawWidth(int c, String name) Gets the width from the font according to thenameor, if thenameis null, meaning it is a symbolic font, the charc.booleanChecks if the font has any kerning pairs.voidReads the font metricsbooleansetKerning(int char1, int char2, int kern) Sets the kerning between two Unicode chars.voidsetPostscriptFontName(String name) Sets the font name that will appear in the pdf font dictionary.(package private) voidwriteFont(PdfWriter writer, PdfIndirectReference ref, Object[] params) Outputs to the writer the font dictionaries and streams.Methods inherited from class org.openpdf.text.pdf.BaseFont
addSubsetRange, charExists, convertToBytes, convertToBytes, correctArabicAdvance, createEncoding, createFont, createFont, createFont, createFont, createFont, createFont, createFont, createSubsetPrefix, enumerateTTCNames, enumerateTTCNames, getAllFontNames, getAllNameEntries, getAscent, getAscentPoint, getBaseName, getCharBBox, getCidCode, getCodePagesSupported, getCompressionLevel, getDescent, getDescentPoint, getDifferences, getDocumentFonts, getDocumentFonts, getEncoding, getFontType, getFullFontName, getResourceStream, getResourceStream, getSecureRandom, getUnicodeDifferences, getUnicodeDifferences, getUnicodeEquivalent, getWidth, getWidth, getWidthPoint, getWidthPoint, getWidthPointKerned, getWidths, isDirectTextToByte, isEmbedded, isFontSpecific, isForceWidthsOutput, isIncludeCidSet, isSubset, normalizeEncoding, setCharAdvance, setCompressionLevel, setDirectTextToByte, setForceWidthsOutput, setIncludeCidSet, setSecureRandom, setSubset
-
Field Details
-
PFB_TYPES
private static final int[] PFB_TYPESTypes of records in a PFB file. ASCII is 1 and BINARY is 2. They have to appear in the PFB file in this sequence. -
resourceAnchor
-
pfb
protected byte[] pfbThe PFB file if the input was made with abytearray. -
FontName
The Postscript font name. -
FullName
The full name of the font. -
FamilyName
The family name of the font. -
Weight
The weight of the font: normal, bold, etc. -
ItalicAngle
private float ItalicAngleThe italic angle of the font, usually 0.0 or negative. -
IsFixedPitch
private boolean IsFixedPitchtrueif all the characters have the same width. -
CharacterSet
The character set of the font. -
llx
private int llxThe llx of the FontBox. -
lly
private int llyThe lly of the FontBox. -
urx
private int urxThe lurx of the FontBox. -
ury
private int uryThe ury of the FontBox. -
UnderlinePosition
private int UnderlinePositionThe underline position. -
UnderlineThickness
private int UnderlineThicknessThe underline thickness. -
EncodingScheme
The font's encoding name. This encoding is 'StandardEncoding' or 'AdobeStandardEncoding' for a font that can be totally encoded according to the characters names. For all other names the font is treated as symbolic. -
CapHeight
private int CapHeightA variable. -
XHeight
private int XHeightA variable. -
Ascender
private int AscenderA variable. -
Descender
private int DescenderA variable. -
StdHW
private int StdHWA variable. -
StdVW
private int StdVWA variable. -
CharMetrics
Represents the section CharMetrics in the AFM file. Each value of this array contains aObject[4]with an Integer, Integer, String and int[]. This is the code, width, name and char bbox. The key is the name of the char and also an Integer with the char number. -
KernPairs
Represents the section KernPairs in the AFM file. The key is the name of the first character and the value is aObject[]with 2 elements for each kern pair. Position 0 is the name of the second character and position 1 is the kerning distance. This is repeated for all the pairs. -
fileName
The file in use. -
builtinFont
private boolean builtinFonttrueif this font is one of the 14 built in fonts.
-
-
Constructor Details
-
Type1Font
Type1Font(String afmFile, String enc, boolean emb, byte[] ttfAfm, byte[] pfb, boolean forceRead) throws DocumentException, IOException Creates a new Type1 font.- Parameters:
ttfAfm- the AFM file if the input is made with abytearraypfb- the PFB file if the input is made with abytearrayafmFile- the name of one of the 14 built-in fonts or the location of an AFM file. The file must end in '.afm'enc- the encoding to be applied to this fontemb- true if the font is to be embedded in the PDF- Throws:
DocumentException- the AFM file is invalidIOException- the AFM file could not be read- Since:
- 2.1.5
-
-
Method Details
-
getRawWidth
Gets the width from the font according to thenameor, if thenameis null, meaning it is a symbolic font, the charc.- Specified by:
getRawWidthin classBaseFont- Parameters:
c- the char if the font is symbolicname- the glyph name- Returns:
- the width of the char
-
getKerning
public int getKerning(int char1, int char2) Gets the kerning between two Unicode characters. The characters are converted to names and this names are used to find the kerning pairs in theHashMapKernPairs.- Specified by:
getKerningin classBaseFont- Parameters:
char1- the first charchar2- the second char- Returns:
- the kerning to be applied
-
process
Reads the font metrics- Parameters:
rf- the AFM file- Throws:
DocumentException- the AFM file is invalidIOException- the AFM file could not be read
-
getFullFontStream
If the embedded flag isfalseor if the font is one of the 14 built in types, it returnsnull, otherwise the font is read and output in a PdfStream object.- Specified by:
getFullFontStreamin classBaseFont- Returns:
- the PdfStream containing the font or
null - Throws:
DocumentException- if there is an error reading the font- Since:
- 2.1.3
-
getFontDescriptor
Generates the font descriptor for this font ornullif it is one of the 14 built in fonts.- Parameters:
fontStream- the indirect reference to a PdfStream containing the font ornull- Returns:
- the PdfDictionary containing the font descriptor or
null
-
getFontBaseType
private PdfDictionary getFontBaseType(PdfIndirectReference fontDescriptor, int firstChar, int lastChar, byte[] shortTag) Generates the font dictionary for this font.- Parameters:
firstChar- the first valid characterlastChar- the last valid charactershortTag- a 256 bytes longbytearray where each unused byte is represented by 0fontDescriptor- the indirect reference to a PdfDictionary containing the font descriptor ornull- Returns:
- the PdfDictionary containing the font dictionary
-
writeFont
void writeFont(PdfWriter writer, PdfIndirectReference ref, Object[] params) throws DocumentException, IOException Outputs to the writer the font dictionaries and streams.- Specified by:
writeFontin classBaseFont- Parameters:
writer- the writer for this documentref- the font indirect referenceparams- several parameters that depend on the font type- Throws:
IOException- on errorDocumentException- error in generating the object
-
getFontDescriptor
public float getFontDescriptor(int key, float fontSize) Gets the font parameter identified bykey. Valid values forkeyareASCENT,CAPHEIGHT,DESCENT,ITALICANGLE,BBOXLLX,BBOXLLY,BBOXURXandBBOXURY.- Specified by:
getFontDescriptorin classBaseFont- Parameters:
key- the parameter to be extractedfontSize- the font size in points- Returns:
- the parameter in points
-
getPostscriptFontName
Gets the postscript font name.- Specified by:
getPostscriptFontNamein classBaseFont- Returns:
- the postscript font name
-
setPostscriptFontName
Sets the font name that will appear in the pdf font dictionary. Use with care as it can easily make a font unreadable if not embedded.- Specified by:
setPostscriptFontNamein classBaseFont- Parameters:
name- the new font name
-
getFullFontName
Gets the full name of the font. If it is a True Type font each array element will have {Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"", "", "", font name}.- Specified by:
getFullFontNamein classBaseFont- Returns:
- the full name of the font
-
getAllNameEntries
Gets all the entries of the names-table. If it is a True Type font each array element will have {Name ID, Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"4", "", "", "", font name}.- Specified by:
getAllNameEntriesin classBaseFont- Returns:
- the full name of the font
-
getFamilyFontName
Gets the family name of the font. If it is a True Type font each array element will have {Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"", "", "", font name}.- Specified by:
getFamilyFontNamein classBaseFont- Returns:
- the family name of the font
-
hasKernPairs
public boolean hasKernPairs()Checks if the font has any kerning pairs.- Specified by:
hasKernPairsin classBaseFont- Returns:
trueif the font has any kerning pairs
-
setKerning
public boolean setKerning(int char1, int char2, int kern) Sets the kerning between two Unicode chars.- Specified by:
setKerningin classBaseFont- Parameters:
char1- the first charchar2- the second charkern- the kerning to apply in normalized 1000 units- Returns:
trueif the kerning was applied,falseotherwise
-
getRawCharBBox
- Specified by:
getRawCharBBoxin classBaseFont
-