Package com.itextpdf.text.pdf
Class TrueTypeFontSubSet
- java.lang.Object
-
- com.itextpdf.text.pdf.TrueTypeFontSubSet
-
class TrueTypeFontSubSet extends java.lang.ObjectSubsets a True Type font by removing the unneeded glyphs from the font.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static intARG_1_AND_2_ARE_WORDSprotected intdirectoryOffset(package private) static int[]entrySelectorsprotected java.lang.StringfileNameThe file name.protected intfontPtrprotected intglyfTableRealSizeprotected java.util.ArrayList<java.lang.Integer>glyphsInListprotected java.util.HashSet<java.lang.Integer>glyphsUsed(package private) static intHEAD_LOCA_FORMAT_OFFSETprotected booleanincludeCmapprotected booleanincludeExtrasprotected booleanlocaShortTableprotected int[]locaTableprotected intlocaTableRealSize(package private) static intMORE_COMPONENTSprotected byte[]newGlyfTableprotected int[]newLocaTableprotected byte[]newLocaTableOutprotected byte[]outFontprotected RandomAccessFileOrArrayrfThe file in use.(package private) static intTABLE_CHECKSUM(package private) static intTABLE_LENGTH(package private) static intTABLE_OFFSETprotected java.util.HashMap<java.lang.String,int[]>tableDirectoryContains the location of the several tables.protected inttableGlyphOffset(package private) static java.lang.String[]tableNamesCmap(package private) static java.lang.String[]tableNamesExtra(package private) static java.lang.String[]tableNamesSimple(package private) static intWE_HAVE_A_SCALE(package private) static intWE_HAVE_A_TWO_BY_TWO(package private) static intWE_HAVE_AN_X_AND_Y_SCALE
-
Constructor Summary
Constructors Constructor Description TrueTypeFontSubSet(java.lang.String fileName, RandomAccessFileOrArray rf, java.util.HashSet<java.lang.Integer> glyphsUsed, int directoryOffset, boolean includeCmap, boolean includeExtras)Creates a new TrueTypeFontSubSet
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidassembleFont()protected intcalculateChecksum(byte[] b)protected voidcheckGlyphComposite(int glyph)protected voidcreateNewGlyphTables()protected voidcreateTableDirectory()protected voidflatGlyphs()protected voidlocaTobytes()(package private) byte[]process()Does the actual work of subsetting the font.protected voidreadLoca()protected java.lang.StringreadStandardString(int length)Reads aStringfrom the font file as bytes using the Cp1252 encoding.protected voidwriteFontInt(int n)protected voidwriteFontShort(int n)protected voidwriteFontString(java.lang.String s)
-
-
-
Field Detail
-
tableNamesSimple
static final java.lang.String[] tableNamesSimple
-
tableNamesCmap
static final java.lang.String[] tableNamesCmap
-
tableNamesExtra
static final java.lang.String[] tableNamesExtra
-
entrySelectors
static final int[] entrySelectors
-
TABLE_CHECKSUM
static final int TABLE_CHECKSUM
- See Also:
- Constant Field Values
-
TABLE_OFFSET
static final int TABLE_OFFSET
- See Also:
- Constant Field Values
-
TABLE_LENGTH
static final int TABLE_LENGTH
- See Also:
- Constant Field Values
-
HEAD_LOCA_FORMAT_OFFSET
static final int HEAD_LOCA_FORMAT_OFFSET
- See Also:
- Constant Field Values
-
ARG_1_AND_2_ARE_WORDS
static final int ARG_1_AND_2_ARE_WORDS
- See Also:
- Constant Field Values
-
WE_HAVE_A_SCALE
static final int WE_HAVE_A_SCALE
- See Also:
- Constant Field Values
-
MORE_COMPONENTS
static final int MORE_COMPONENTS
- See Also:
- Constant Field Values
-
WE_HAVE_AN_X_AND_Y_SCALE
static final int WE_HAVE_AN_X_AND_Y_SCALE
- See Also:
- Constant Field Values
-
WE_HAVE_A_TWO_BY_TWO
static final int WE_HAVE_A_TWO_BY_TWO
- See Also:
- Constant Field Values
-
tableDirectory
protected java.util.HashMap<java.lang.String,int[]> tableDirectory
Contains the location of the several tables. The key is the name of the table and the value is anint[3]where position 0 is the checksum, position 1 is the offset from the start of the file and position 2 is the length of the table.
-
rf
protected RandomAccessFileOrArray rf
The file in use.
-
fileName
protected java.lang.String fileName
The file name.
-
includeCmap
protected boolean includeCmap
-
includeExtras
protected boolean includeExtras
-
locaShortTable
protected boolean locaShortTable
-
locaTable
protected int[] locaTable
-
glyphsUsed
protected java.util.HashSet<java.lang.Integer> glyphsUsed
-
glyphsInList
protected java.util.ArrayList<java.lang.Integer> glyphsInList
-
tableGlyphOffset
protected int tableGlyphOffset
-
newLocaTable
protected int[] newLocaTable
-
newLocaTableOut
protected byte[] newLocaTableOut
-
newGlyfTable
protected byte[] newGlyfTable
-
glyfTableRealSize
protected int glyfTableRealSize
-
locaTableRealSize
protected int locaTableRealSize
-
outFont
protected byte[] outFont
-
fontPtr
protected int fontPtr
-
directoryOffset
protected int directoryOffset
-
-
Constructor Detail
-
TrueTypeFontSubSet
TrueTypeFontSubSet(java.lang.String fileName, RandomAccessFileOrArray rf, java.util.HashSet<java.lang.Integer> glyphsUsed, int directoryOffset, boolean includeCmap, boolean includeExtras)Creates a new TrueTypeFontSubSet- Parameters:
directoryOffset- The offset from the start of the file to the table directoryfileName- the file name of the fontglyphsUsed- the glyphs usedincludeCmap-trueif the table cmap is to be included in the generated font
-
-
Method Detail
-
process
byte[] process() throws java.io.IOException, DocumentExceptionDoes the actual work of subsetting the font.- Returns:
- the subset font
- Throws:
java.io.IOException- on errorDocumentException- on error
-
assembleFont
protected void assembleFont() throws java.io.IOException- Throws:
java.io.IOException
-
createTableDirectory
protected void createTableDirectory() throws java.io.IOException, DocumentException- Throws:
java.io.IOExceptionDocumentException
-
readLoca
protected void readLoca() throws java.io.IOException, DocumentException- Throws:
java.io.IOExceptionDocumentException
-
createNewGlyphTables
protected void createNewGlyphTables() throws java.io.IOException- Throws:
java.io.IOException
-
locaTobytes
protected void locaTobytes()
-
flatGlyphs
protected void flatGlyphs() throws java.io.IOException, DocumentException- Throws:
java.io.IOExceptionDocumentException
-
checkGlyphComposite
protected void checkGlyphComposite(int glyph) throws java.io.IOException- Throws:
java.io.IOException
-
readStandardString
protected java.lang.String readStandardString(int length) throws java.io.IOExceptionReads aStringfrom the font file as bytes using the Cp1252 encoding.- Parameters:
length- the length of bytes to read- Returns:
- the
Stringread - Throws:
java.io.IOException- the font file could not be read
-
writeFontShort
protected void writeFontShort(int n)
-
writeFontInt
protected void writeFontInt(int n)
-
writeFontString
protected void writeFontString(java.lang.String s)
-
calculateChecksum
protected int calculateChecksum(byte[] b)
-
-