Package com.itextpdf.text.pdf
Class TrueTypeFontSubSet
- java.lang.Object
-
- com.itextpdf.text.pdf.TrueTypeFontSubSet
-
class TrueTypeFontSubSet extends java.lang.Object
Subsets a True Type font by removing the unneeded glyphs from the font.
-
-
Field Summary
Fields Modifier and Type Field Description (package private) static int
ARG_1_AND_2_ARE_WORDS
protected int
directoryOffset
(package private) static int[]
entrySelectors
protected java.lang.String
fileName
The file name.protected int
fontPtr
protected int
glyfTableRealSize
protected java.util.ArrayList<java.lang.Integer>
glyphsInList
protected java.util.HashSet<java.lang.Integer>
glyphsUsed
(package private) static int
HEAD_LOCA_FORMAT_OFFSET
protected boolean
includeCmap
protected boolean
includeExtras
protected boolean
locaShortTable
protected int[]
locaTable
protected int
locaTableRealSize
(package private) static int
MORE_COMPONENTS
protected byte[]
newGlyfTable
protected int[]
newLocaTable
protected byte[]
newLocaTableOut
protected byte[]
outFont
protected RandomAccessFileOrArray
rf
The file in use.(package private) static int
TABLE_CHECKSUM
(package private) static int
TABLE_LENGTH
(package private) static int
TABLE_OFFSET
protected java.util.HashMap<java.lang.String,int[]>
tableDirectory
Contains the location of the several tables.protected int
tableGlyphOffset
(package private) static java.lang.String[]
tableNamesCmap
(package private) static java.lang.String[]
tableNamesExtra
(package private) static java.lang.String[]
tableNamesSimple
(package private) static int
WE_HAVE_A_SCALE
(package private) static int
WE_HAVE_A_TWO_BY_TWO
(package private) static int
WE_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 void
assembleFont()
protected int
calculateChecksum(byte[] b)
protected void
checkGlyphComposite(int glyph)
protected void
createNewGlyphTables()
protected void
createTableDirectory()
protected void
flatGlyphs()
protected void
locaTobytes()
(package private) byte[]
process()
Does the actual work of subsetting the font.protected void
readLoca()
protected java.lang.String
readStandardString(int length)
Reads aString
from the font file as bytes using the Cp1252 encoding.protected void
writeFontInt(int n)
protected void
writeFontShort(int n)
protected void
writeFontString(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
-true
if the table cmap is to be included in the generated font
-
-
Method Detail
-
process
byte[] process() throws java.io.IOException, DocumentException
Does 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.IOException
DocumentException
-
readLoca
protected void readLoca() throws java.io.IOException, DocumentException
- Throws:
java.io.IOException
DocumentException
-
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.IOException
DocumentException
-
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.IOException
Reads aString
from the font file as bytes using the Cp1252 encoding.- Parameters:
length
- the length of bytes to read- Returns:
- the
String
read - 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)
-
-