public class CFFFontSubset extends CFFFont
CFFFont.DictNumberItem, CFFFont.DictOffsetItem, CFFFont.Font, CFFFont.IndexBaseItem, CFFFont.IndexMarkerItem, CFFFont.IndexOffsetItem, CFFFont.Item, CFFFont.MarkerItem, CFFFont.OffsetItem, CFFFont.RangeItem, CFFFont.StringItem, CFFFont.SubrMarkerItem, CFFFont.UInt16Item, CFFFont.UInt24Item, CFFFont.UInt32Item, CFFFont.UInt8Item
arg_count, args, buf, fonts, gsubrIndexOffset, gsubrOffsets, key, nameIndexOffset, nameOffsets, stringIndexOffset, stringOffsets, topdictIndexOffset, topdictOffsets
Constructor and Description |
---|
CFFFontSubset(RandomAccessFileOrArray rf,
HashMap<Integer,int[]> GlyphsUsed)
C'tor for CFFFontSubset
|
Modifier and Type | Method and Description |
---|---|
protected byte[] |
AssembleIndex(int[] NewOffsets,
byte[] NewObjects)
Function creates the new index, inserting the count,offsetsize,offset array
and object array.
|
protected void |
BuildFDArrayUsed(int Font)
Function reads the FDSelect and builds the FDArrayUsed HashMap According to the glyphs used
|
protected void |
BuildFDSubrsOffsets(int Font,
int FD)
The function finds for the FD array processed the local subr offset and its
offset array.
|
protected void |
BuildGSubrsUsed(int Font)
Function scans the Glsubr used ArrayList to find recursive calls
to Gsubrs and adds to Hashmap and ArrayList
|
protected void |
BuildIndexHeader(int Count,
int Offsize,
int First)
Function Build the header of an index
|
protected void |
BuildNewCharString(int FontIndex)
Function uses BuildNewIndex to create the new index of the subset charstrings
|
protected byte[] |
BuildNewFile(int Font)
The function builds the new output stream according to the subset process
|
protected byte[] |
BuildNewIndex(int[] Offsets,
Map<Integer,int[]> Used,
byte OperatorForUnusedEntries)
Function builds the new offset array, object array and assembles the index.
|
protected void |
BuildNewLGSubrs(int Font)
Function builds the new local and global subsrs indices.
|
protected void |
BuildSubrUsed(int Font,
int FD,
int SubrOffset,
int[] SubrsOffsets,
Map<Integer,int[]> hSubr,
List<Integer> lSubr)
Function uses ReadAsubr on the glyph used to build the LSubr and Gsubr HashMap.
|
protected int |
CalcBias(int Offset,
int Font)
Function calcs bias according to the CharString type and the count
of the subrs
|
protected int |
CalcHints(int begin,
int end,
int LBias,
int GBias,
int[] LSubrsOffsets)
The function reads the subroutine and returns the number of the hint in it.
|
protected void |
CopyHeader()
Function Copies the header from the original fileto the output list
|
protected int |
countEntireIndexRange(int indexOffset)
Function computes the size of an index
|
protected void |
CreateCharset(CFFFont.OffsetItem charsetRef,
int nglyphs)
Function creates new CharSet for non-CID fonts.
|
protected void |
CreateFDArray(CFFFont.OffsetItem fdarrayRef,
CFFFont.OffsetItem privateRef,
int Font)
Function creates new FDArray for non-CID fonts.
|
protected void |
CreateFDSelect(CFFFont.OffsetItem fdselectRef,
int nglyphs)
Function creates new FDSelect for non-CID fonts.
|
protected void |
CreateKeys(CFFFont.OffsetItem fdarrayRef,
CFFFont.OffsetItem fdselectRef,
CFFFont.OffsetItem charsetRef,
CFFFont.OffsetItem charstringsRef)
Function adds the keys into the TopDict
|
protected void |
CreateNewStringIndex(int Font)
Function takes the original string item and adds the new strings
to accommodate the CID rules
|
protected void |
EmptyStack()
Empty the Type2 Stack
|
protected void |
HandelStack()
Function Checks how the current operator effects the run time stack after being run
An operator may increase or decrease the stack size
|
protected void |
PopStack()
Pop one element from the stack
|
byte[] |
Process(String fontName)
The Process function extracts one font out of the CFF file and returns a
subset version of the original.
|
protected void |
PushStack()
Add an item to the stack
|
protected void |
ReadASubr(int begin,
int end,
int GBias,
int LBias,
Map<Integer,int[]> hSubr,
List<Integer> lSubr,
int[] LSubrsOffsets)
The function reads a subrs (glyph info) between begin and end.
|
protected void |
ReadCommand()
The function reads the next command after the file pointer is set
|
protected void |
ReadFDArray(int Font)
Read the FDArray count, offsize and Offset array
|
protected void |
readFDSelect(int Font)
Read the FDSelect of the font and compute the array and its length
|
protected int |
StackOpp()
Function checks the key and return the change to the stack after the operator
|
exists, getCID, getDictItem, getEntireIndexRange, getNames, getString, isCID
public CFFFontSubset(RandomAccessFileOrArray rf, HashMap<Integer,int[]> GlyphsUsed)
rf
- - The font fileGlyphsUsed
- - a HashMap that contains the glyph used in the subsetprotected void readFDSelect(int Font)
Font
- The index of the font being processedprotected void BuildFDArrayUsed(int Font)
Font
- the Number of font being processedprotected void ReadFDArray(int Font)
Font
- font offsetpublic byte[] Process(String fontName) throws IOException
fontName
- - The name of the font to be taken out of the CFFIOException
- on errorprotected int CalcBias(int Offset, int Font)
Offset
- The offset to the relevant subrs indexFont
- the fontprotected void BuildNewCharString(int FontIndex) throws IOException
FontIndex
- the fontIOException
- on errorprotected void BuildNewLGSubrs(int Font) throws IOException
Font
- the fontIOException
- on errorprotected void BuildFDSubrsOffsets(int Font, int FD)
Font
- the fontFD
- The FDARRAY processedprotected void BuildSubrUsed(int Font, int FD, int SubrOffset, int[] SubrsOffsets, Map<Integer,int[]> hSubr, List<Integer> lSubr)
Font
- the fontFD
- FD array processed. 0 indicates function was called by non CID fontSubrOffset
- the offset to the subr index to calc the biasSubrsOffsets
- the offset array of the subr indexhSubr
- HashMap of the subrs usedlSubr
- ArrayList of the subrs usedprotected void BuildGSubrsUsed(int Font)
Font
- the fontprotected void ReadASubr(int begin, int end, int GBias, int LBias, Map<Integer,int[]> hSubr, List<Integer> lSubr, int[] LSubrsOffsets)
begin
- the start point of the subrend
- the end point of the subrGBias
- the bias of the Global SubrsLBias
- the bias of the Local SubrshSubr
- the HashMap for the lSubrslSubr
- the ArrayList for the lSubrsLSubrsOffsets
- The Offsets array of the subroutinesprotected void HandelStack()
protected int StackOpp()
protected void EmptyStack()
protected void PopStack()
protected void PushStack()
protected void ReadCommand()
protected int CalcHints(int begin, int end, int LBias, int GBias, int[] LSubrsOffsets)
begin
- the start point of the subrend
- the end point of the subrLBias
- the bias of the Local SubrsGBias
- the bias of the Global SubrsLSubrsOffsets
- The Offsets array of the subroutinesprotected byte[] BuildNewIndex(int[] Offsets, Map<Integer,int[]> Used, byte OperatorForUnusedEntries) throws IOException
Offsets
- the offset array of the original indexUsed
- the hashmap of the used objectsOperatorForUnusedEntries
- the operator inserted into the data stream for unused entriesIOException
- on errorprotected byte[] AssembleIndex(int[] NewOffsets, byte[] NewObjects)
NewOffsets
- the subsetted offset arrayNewObjects
- the subsetted object arrayprotected byte[] BuildNewFile(int Font)
Font
- the fontprotected void CopyHeader()
protected void BuildIndexHeader(int Count, int Offsize, int First)
Count
- the count field of the indexOffsize
- the offsize field of the indexFirst
- the first offset of the indexprotected void CreateKeys(CFFFont.OffsetItem fdarrayRef, CFFFont.OffsetItem fdselectRef, CFFFont.OffsetItem charsetRef, CFFFont.OffsetItem charstringsRef)
fdarrayRef
- OffsetItem for the FDArrayfdselectRef
- OffsetItem for the FDSelectcharsetRef
- OffsetItem for the CharSetcharstringsRef
- OffsetItem for the CharStringprotected void CreateNewStringIndex(int Font)
Font
- the fontprotected void CreateFDSelect(CFFFont.OffsetItem fdselectRef, int nglyphs)
fdselectRef
- OffsetItem for the FDSelectnglyphs
- the number of glyphs in the fontprotected void CreateCharset(CFFFont.OffsetItem charsetRef, int nglyphs)
charsetRef
- OffsetItem for the CharSetnglyphs
- the number of glyphs in the fontprotected void CreateFDArray(CFFFont.OffsetItem fdarrayRef, CFFFont.OffsetItem privateRef, int Font)
fdarrayRef
- OffsetItem for the FDArrayprivateRef
- OffsetItem for the Private DictFont
- the fontprotected int countEntireIndexRange(int indexOffset)
indexOffset
- The offset for the computed indexCopyright © 2020. All rights reserved.