Package com.itextpdf.io.font
Class TrueTypeFontSubset
- java.lang.Object
-
- com.itextpdf.io.font.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 private static int
ARG_1_AND_2_ARE_WORDS
private int
directoryOffset
private static int[]
entrySelectors
private java.lang.String
fileName
The file name.private int
fontPtr
private int
glyfTableRealSize
private java.util.List<java.lang.Integer>
glyphsInList
private java.util.Set<java.lang.Integer>
glyphsUsed
private static int
HEAD_LOCA_FORMAT_OFFSET
private boolean
locaShortTable
private int[]
locaTable
private int
locaTableRealSize
private static int
MORE_COMPONENTS
private byte[]
newGlyfTable
private int[]
newLocaTable
private byte[]
newLocaTableOut
private byte[]
outFont
protected RandomAccessFileOrArray
rf
The file in use.private static int
TABLE_CHECKSUM
private static int
TABLE_LENGTH
private static java.lang.String[]
TABLE_NAMES
private static java.lang.String[]
TABLE_NAMES_SUBSET
private static int
TABLE_OFFSET
private java.util.Map<java.lang.String,int[]>
tableDirectory
Contains the location of the several tables.private int
tableGlyphOffset
private java.lang.String[]
tableNames
private static int
WE_HAVE_A_SCALE
private static int
WE_HAVE_A_TWO_BY_TWO
private static int
WE_HAVE_AN_X_AND_Y_SCALE
-
Constructor Summary
Constructors Constructor Description TrueTypeFontSubset(java.lang.String fileName, RandomAccessFileOrArray rf, java.util.Set<java.lang.Integer> glyphsUsed, int directoryOffset, boolean subset)
Creates a new TrueTypeFontSubSet
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private void
assembleFont()
private int
calculateChecksum(byte[] b)
private void
checkGlyphComposite(int glyph)
private void
createNewGlyphTables()
private void
createTableDirectory()
private void
flatGlyphs()
private void
locaToBytes()
(package private) byte[]
process()
Does the actual work of subsetting the font.private void
readLoca()
private java.lang.String
readStandardString(int length)
Reads aString
from the font file as bytes using the Cp1252 encoding.private void
writeFontInt(int n)
private void
writeFontShort(int n)
private void
writeFontString(java.lang.String s)
-
-
-
Field Detail
-
TABLE_NAMES_SUBSET
private static final java.lang.String[] TABLE_NAMES_SUBSET
-
TABLE_NAMES
private static final java.lang.String[] TABLE_NAMES
-
entrySelectors
private static final int[] entrySelectors
-
TABLE_CHECKSUM
private static final int TABLE_CHECKSUM
- See Also:
- Constant Field Values
-
TABLE_OFFSET
private static final int TABLE_OFFSET
- See Also:
- Constant Field Values
-
TABLE_LENGTH
private static final int TABLE_LENGTH
- See Also:
- Constant Field Values
-
HEAD_LOCA_FORMAT_OFFSET
private static final int HEAD_LOCA_FORMAT_OFFSET
- See Also:
- Constant Field Values
-
ARG_1_AND_2_ARE_WORDS
private static final int ARG_1_AND_2_ARE_WORDS
- See Also:
- Constant Field Values
-
WE_HAVE_A_SCALE
private static final int WE_HAVE_A_SCALE
- See Also:
- Constant Field Values
-
MORE_COMPONENTS
private static final int MORE_COMPONENTS
- See Also:
- Constant Field Values
-
WE_HAVE_AN_X_AND_Y_SCALE
private static final int WE_HAVE_AN_X_AND_Y_SCALE
- See Also:
- Constant Field Values
-
WE_HAVE_A_TWO_BY_TWO
private static final int WE_HAVE_A_TWO_BY_TWO
- See Also:
- Constant Field Values
-
tableDirectory
private java.util.Map<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
private java.lang.String fileName
The file name.
-
locaShortTable
private boolean locaShortTable
-
locaTable
private int[] locaTable
-
glyphsUsed
private java.util.Set<java.lang.Integer> glyphsUsed
-
glyphsInList
private java.util.List<java.lang.Integer> glyphsInList
-
tableGlyphOffset
private int tableGlyphOffset
-
newLocaTable
private int[] newLocaTable
-
newLocaTableOut
private byte[] newLocaTableOut
-
newGlyfTable
private byte[] newGlyfTable
-
glyfTableRealSize
private int glyfTableRealSize
-
locaTableRealSize
private int locaTableRealSize
-
outFont
private byte[] outFont
-
fontPtr
private int fontPtr
-
directoryOffset
private int directoryOffset
-
tableNames
private final java.lang.String[] tableNames
-
-
Constructor Detail
-
TrueTypeFontSubset
TrueTypeFontSubset(java.lang.String fileName, RandomAccessFileOrArray rf, java.util.Set<java.lang.Integer> glyphsUsed, int directoryOffset, boolean subset)
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 used
-
-
Method Detail
-
process
byte[] process() throws java.io.IOException
Does the actual work of subsetting the font.- Returns:
- the subset font
- Throws:
java.io.IOException
- on error
-
assembleFont
private void assembleFont() throws java.io.IOException
- Throws:
java.io.IOException
-
createTableDirectory
private void createTableDirectory() throws java.io.IOException
- Throws:
java.io.IOException
-
readLoca
private void readLoca() throws java.io.IOException
- Throws:
java.io.IOException
-
createNewGlyphTables
private void createNewGlyphTables() throws java.io.IOException
- Throws:
java.io.IOException
-
locaToBytes
private void locaToBytes()
-
flatGlyphs
private void flatGlyphs() throws java.io.IOException
- Throws:
java.io.IOException
-
checkGlyphComposite
private void checkGlyphComposite(int glyph) throws java.io.IOException
- Throws:
java.io.IOException
-
readStandardString
private 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
private void writeFontShort(int n)
-
writeFontInt
private void writeFontInt(int n)
-
writeFontString
private void writeFontString(java.lang.String s)
-
calculateChecksum
private int calculateChecksum(byte[] b)
-
-