com.lowagie.text.pdf
Class CFFFontSubset
java.lang.Object
com.lowagie.text.pdf.CFFFont
com.lowagie.text.pdf.CFFFontSubset
public class CFFFontSubset
- extends CFFFont
This Class subsets a CFF Type Font. The subset is preformed for CID fonts and NON CID fonts.
The Charstring is subseted for both types. For CID fonts only the FDArray which are used are embedded.
The Lsubroutines of the FDArrays used are subsetted as well. The Subroutine subset supports both Type1 and Type2
formatting altough only tested on Type2 Format.
For Non CID the Lsubroutines are subsetted. On both types the Gsubroutines is subsetted.
A font which was not of CID type is transformed into CID as a part of the subset process.
The CID synthetic creation was written by Sivan Toledo
- Author:
- Oren Manor & Ygal Blum
Nested classes/interfaces inherited from class com.lowagie.text.pdf.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 |
Fields inherited from class com.lowagie.text.pdf.CFFFont |
arg_count, args, buf, fonts, gsubrIndexOffset, gsubrOffsets, key, nameIndexOffset, nameOffsets, stringIndexOffset, stringOffsets, topdictIndexOffset, topdictOffsets |
Method Summary |
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 & 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,
HashMap Used)
Function builds the new offset array, object array and assembles the index. |
protected void |
BuildNewLGSubrs(int Font)
Function builds the new local & global subsrs indices. |
protected void |
BuildSubrUsed(int Font,
int FD,
int SubrOffset,
int[] SubrsOffsets,
HashMap hSubr,
ArrayList lSubr)
Function uses ReadAsubr on the glyph used to build the LSubr & 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 accomodate 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,
HashMap hSubr,
ArrayList 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 |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
CFFFontSubset
public CFFFontSubset(RandomAccessFileOrArray rf,
HashMap GlyphsUsed)
- C'tor for CFFFontSubset
- Parameters:
rf
- - The font fileGlyphsUsed
- - a HashMap that contains the glyph used in the subset
readFDSelect
protected void readFDSelect(int Font)
- Read the FDSelect of the font and compute the array and its length
- Parameters:
Font
- The index of the font being processed
BuildFDArrayUsed
protected void BuildFDArrayUsed(int Font)
- Function reads the FDSelect and builds the FDArrayUsed HashMap According to the glyphs used
- Parameters:
Font
- the Number of font being processed
ReadFDArray
protected void ReadFDArray(int Font)
- Read the FDArray count, offsize and Offset array
- Parameters:
Font
-
Process
public byte[] Process(String fontName)
throws IOException
- The Process function extracts one font out of the CFF file and returns a
subset version of the original.
- Parameters:
fontName
- - The name of the font to be taken out of the CFF
- Returns:
- The new font stream
- Throws:
IOException
CalcBias
protected int CalcBias(int Offset,
int Font)
- Function calcs bias according to the CharString type and the count
of the subrs
- Parameters:
Offset
- The offset to the relevent subrs indexFont
- the font
- Returns:
- The calculated Bias
BuildNewCharString
protected void BuildNewCharString(int FontIndex)
throws IOException
- Function uses BuildNewIndex to create the new index of the subset charstrings
- Parameters:
FontIndex
- the font
- Throws:
IOException
BuildNewLGSubrs
protected void BuildNewLGSubrs(int Font)
throws IOException
- Function builds the new local & global subsrs indices. IF CID then All of
the FD Array lsubrs will be subsetted.
- Parameters:
Font
- the font
- Throws:
IOException
BuildFDSubrsOffsets
protected void BuildFDSubrsOffsets(int Font,
int FD)
- The function finds for the FD array processed the local subr offset and its
offset array.
- Parameters:
Font
- the fontFD
- The FDARRAY processed
BuildSubrUsed
protected void BuildSubrUsed(int Font,
int FD,
int SubrOffset,
int[] SubrsOffsets,
HashMap hSubr,
ArrayList lSubr)
- Function uses ReadAsubr on the glyph used to build the LSubr & Gsubr HashMap.
The HashMap (of the lsub only) is then scaned recursivly for Lsubr & Gsubrs
calls.
- Parameters:
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 used
BuildGSubrsUsed
protected void BuildGSubrsUsed(int Font)
- Function scans the Glsubr used ArrayList to find recursive calls
to Gsubrs and adds to Hashmap & ArrayList
- Parameters:
Font
- the font
ReadASubr
protected void ReadASubr(int begin,
int end,
int GBias,
int LBias,
HashMap hSubr,
ArrayList lSubr,
int[] LSubrsOffsets)
- The function reads a subrs (glyph info) between begin and end.
Adds calls to a Lsubr to the hSubr and lSubrs.
Adds calls to a Gsubr to the hGSubr and lGSubrs.
- Parameters:
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 lSubrs
HandelStack
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
StackOpp
protected int StackOpp()
- Function checks the key and return the change to the stack after the operator
- Returns:
- The change in the stack. 2-> flush the stack
EmptyStack
protected void EmptyStack()
- Empty the Type2 Stack
PopStack
protected void PopStack()
- Pop one element from the stack
PushStack
protected void PushStack()
- Add an item to the stack
ReadCommand
protected void ReadCommand()
- The function reads the next command after the file pointer is set
CalcHints
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.
If a call to another subroutine is found the function calls recursively.
- Parameters:
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 subroutines
- Returns:
- The number of hints in the subroutine read.
BuildNewIndex
protected byte[] BuildNewIndex(int[] Offsets,
HashMap Used)
throws IOException
- Function builds the new offset array, object array and assembles the index.
used for creating the glyph and subrs subsetted index
- Parameters:
Offsets
- the offset array of the original indexUsed
- the hashmap of the used objects
- Returns:
- the new index subset version
- Throws:
IOException
AssembleIndex
protected byte[] AssembleIndex(int[] NewOffsets,
byte[] NewObjects)
- Function creates the new index, inserting the count,offsetsize,offset array
and object array.
- Parameters:
NewOffsets
- the subsetted offset arrayNewObjects
- the subsetted object array
- Returns:
- the new index created
BuildNewFile
protected byte[] BuildNewFile(int Font)
throws IOException
- The function builds the new output stream according to the subset process
- Parameters:
Font
- the font
- Returns:
- the subseted font stream
- Throws:
IOException
CopyHeader
protected void CopyHeader()
- Function Copies the header from the original fileto the output list
BuildIndexHeader
protected void BuildIndexHeader(int Count,
int Offsize,
int First)
- Function Build the header of an index
- Parameters:
Count
- the count field of the indexOffsize
- the offsize field of the indexFirst
- the first offset of the index
CreateKeys
protected void CreateKeys(CFFFont.OffsetItem fdarrayRef,
CFFFont.OffsetItem fdselectRef,
CFFFont.OffsetItem charsetRef,
CFFFont.OffsetItem charstringsRef)
- Function adds the keys into the TopDict
- Parameters:
fdarrayRef
- OffsetItem for the FDArrayfdselectRef
- OffsetItem for the FDSelectcharsetRef
- OffsetItem for the CharSetcharstringsRef
- OffsetItem for the CharString
CreateNewStringIndex
protected void CreateNewStringIndex(int Font)
- Function takes the original string item and adds the new strings
to accomodate the CID rules
- Parameters:
Font
- the font
CreateFDSelect
protected void CreateFDSelect(CFFFont.OffsetItem fdselectRef,
int nglyphs)
- Function creates new FDSelect for non-CID fonts.
The FDSelect built uses a single range for all glyphs
- Parameters:
fdselectRef
- OffsetItem for the FDSelectnglyphs
- the number of glyphs in the font
CreateCharset
protected void CreateCharset(CFFFont.OffsetItem charsetRef,
int nglyphs)
- Function creates new CharSet for non-CID fonts.
The CharSet built uses a single range for all glyphs
- Parameters:
charsetRef
- OffsetItem for the CharSetnglyphs
- the number of glyphs in the font
CreateFDArray
protected void CreateFDArray(CFFFont.OffsetItem fdarrayRef,
CFFFont.OffsetItem privateRef,
int Font)
- Function creates new FDArray for non-CID fonts.
The FDArray built has only the "Private" operator that points to the font's
original private dict
- Parameters:
fdarrayRef
- OffsetItem for the FDArrayprivateRef
- OffsetItem for the Private DictFont
- the font
countEntireIndexRange
protected int countEntireIndexRange(int indexOffset)
- Function computes the size of an index
- Parameters:
indexOffset
- The offset for the computed index
- Returns:
- The size of the index
Copyright © 2006-2007 EGIZ - E-Government Innovationszentrum. All Rights Reserved.