Package org.apache.fontbox.cff
Class CFFParser
- java.lang.Object
-
- org.apache.fontbox.cff.CFFParser
-
public class CFFParser extends java.lang.ObjectThis class represents a parser for a CFF font.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceCFFParser.ByteSourceSource from which bytes may be read in the future.(package private) static classCFFParser.CFFBuiltInEncodingInner class representing a font's built-in CFF encoding.private static classCFFParser.DictDataInner class holding the DictData of a CFF font.(package private) static classCFFParser.EmbeddedCharsetInner class representing an embedded CFF charset.private static classCFFParser.EmptyCharsetAn empty charset in a malformed CID font.private static classCFFParser.Format0CharsetInner class representing a Format0 charset.private static classCFFParser.Format0EncodingInner class representing a Format0 encoding.private static classCFFParser.Format0FDSelectFormat 0 FDSelect.private static classCFFParser.Format1CharsetInner class representing a Format1 charset.private static classCFFParser.Format1EncodingInner class representing a Format1 encoding.private static classCFFParser.Format2CharsetInner class representing a Format2 charset.private static classCFFParser.Format3FDSelectFormat 3 FDSelect data.private static classCFFParser.HeaderInner class holding the header of a CFF font.private static classCFFParser.Range3Structure of a Range3 element.private static classCFFParser.RangeMappingInner class representing a rang mapping for a CID charset.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.StringdebugFontNameprivate static org.apache.commons.logging.LogLOGLog instance.private CFFParser.ByteSourcesourceprivate java.lang.String[]stringIndexprivate static java.lang.StringTAG_OTTOprivate static java.lang.StringTAG_TTCFprivate static java.lang.StringTAG_TTFONLY
-
Constructor Summary
Constructors Constructor Description CFFParser()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidconcatenateMatrix(java.util.List<java.lang.Number> matrixDest, java.util.List<java.lang.Number> matrixConcat)private CFFDataInputcreateTaggedCFFDataInput(CFFDataInput input, byte[] bytes)private java.lang.StringgetString(CFFParser.DictData dict, java.lang.String name)java.util.List<CFFFont>parse(byte[] bytes)Parse CFF font using a byte array as input.java.util.List<CFFFont>parse(byte[] bytes, CFFParser.ByteSource source)Parse CFF font using byte array, also passing in a byte source for future use.private voidparseCIDFontDicts(CFFDataInput input, CFFParser.DictData topDict, CFFCIDFont font, int nrOfcharStrings)Parse dictionaries specific to a CIDFont.private CFFFontparseFont(CFFDataInput input, java.lang.String name, byte[] topDictIndex)private voidparseType1Dicts(CFFDataInput input, CFFParser.DictData topDict, CFFType1Font font, CFFCharset charset)Parse dictionaries specific to a Type 1-equivalent font.private CFFCharsetreadCharset(CFFDataInput dataInput, int nGlyphs, boolean isCIDFont)private static CFFParser.DictDatareadDictData(CFFDataInput input)private static CFFParser.DictDatareadDictData(CFFDataInput input, int dictSize)private CFFEncodingreadEncoding(CFFDataInput dataInput, CFFCharset charset)private static CFFParser.DictData.EntryreadEntry(CFFDataInput input)private static FDSelectreadFDSelect(CFFDataInput dataInput, int nGlyphs, CFFCIDFont ros)Read the FDSelect Data according to the format.private CFFParser.Format0CharsetreadFormat0Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont)private CFFParser.Format0EncodingreadFormat0Encoding(CFFDataInput dataInput, CFFCharset charset, int format)private static CFFParser.Format0FDSelectreadFormat0FDSelect(CFFDataInput dataInput, int format, int nGlyphs, CFFCIDFont ros)Read the Format 0 of the FDSelect data structure.private CFFParser.Format1CharsetreadFormat1Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont)private CFFParser.Format1EncodingreadFormat1Encoding(CFFDataInput dataInput, CFFCharset charset, int format)private CFFParser.Format2CharsetreadFormat2Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont)private static CFFParser.Format3FDSelectreadFormat3FDSelect(CFFDataInput dataInput, int format, int nGlyphs, CFFCIDFont ros)Read the Format 3 of the FDSelect data structure.private static CFFParser.HeaderreadHeader(CFFDataInput input)private static byte[][]readIndexData(CFFDataInput input)private static int[]readIndexDataOffsets(CFFDataInput input)private static java.lang.IntegerreadIntegerNumber(CFFDataInput input, int b0)private static longreadLong(CFFDataInput input)private static CFFOperatorreadOperator(CFFDataInput input, int b0)private static CFFOperator.KeyreadOperatorKey(CFFDataInput input, int b0)private java.util.Map<java.lang.String,java.lang.Object>readPrivateDict(CFFParser.DictData privateDict)private static java.lang.DoublereadRealNumber(CFFDataInput input)private java.lang.StringreadString(int index)private static java.lang.String[]readStringIndexData(CFFDataInput input)private voidreadSupplement(CFFDataInput dataInput, CFFParser.CFFBuiltInEncoding encoding)private static java.lang.StringreadTagName(CFFDataInput input)java.lang.StringtoString()
-
-
-
Field Detail
-
LOG
private static final org.apache.commons.logging.Log LOG
Log instance.
-
TAG_OTTO
private static final java.lang.String TAG_OTTO
- See Also:
- Constant Field Values
-
TAG_TTCF
private static final java.lang.String TAG_TTCF
- See Also:
- Constant Field Values
-
TAG_TTFONLY
private static final java.lang.String TAG_TTFONLY
- See Also:
- Constant Field Values
-
stringIndex
private java.lang.String[] stringIndex
-
source
private CFFParser.ByteSource source
-
debugFontName
private java.lang.String debugFontName
-
-
Method Detail
-
parse
public java.util.List<CFFFont> parse(byte[] bytes, CFFParser.ByteSource source) throws java.io.IOException
Parse CFF font using byte array, also passing in a byte source for future use.- Parameters:
bytes- source bytessource- source to re-read bytes from in the future- Returns:
- the parsed CFF fonts
- Throws:
java.io.IOException- If there is an error reading from the stream
-
parse
public java.util.List<CFFFont> parse(byte[] bytes) throws java.io.IOException
Parse CFF font using a byte array as input.- Parameters:
bytes- the given byte array- Returns:
- the parsed CFF fonts
- Throws:
java.io.IOException- If there is an error reading from the stream
-
createTaggedCFFDataInput
private CFFDataInput createTaggedCFFDataInput(CFFDataInput input, byte[] bytes) throws java.io.IOException
- Throws:
java.io.IOException
-
readTagName
private static java.lang.String readTagName(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readLong
private static long readLong(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readHeader
private static CFFParser.Header readHeader(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readIndexDataOffsets
private static int[] readIndexDataOffsets(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readIndexData
private static byte[][] readIndexData(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readStringIndexData
private static java.lang.String[] readStringIndexData(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readDictData
private static CFFParser.DictData readDictData(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readDictData
private static CFFParser.DictData readDictData(CFFDataInput input, int dictSize) throws java.io.IOException
- Throws:
java.io.IOException
-
readEntry
private static CFFParser.DictData.Entry readEntry(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
readOperator
private static CFFOperator readOperator(CFFDataInput input, int b0) throws java.io.IOException
- Throws:
java.io.IOException
-
readOperatorKey
private static CFFOperator.Key readOperatorKey(CFFDataInput input, int b0) throws java.io.IOException
- Throws:
java.io.IOException
-
readIntegerNumber
private static java.lang.Integer readIntegerNumber(CFFDataInput input, int b0) throws java.io.IOException
- Throws:
java.io.IOException
-
readRealNumber
private static java.lang.Double readRealNumber(CFFDataInput input) throws java.io.IOException
- Throws:
java.io.IOException
-
parseFont
private CFFFont parseFont(CFFDataInput input, java.lang.String name, byte[] topDictIndex) throws java.io.IOException
- Throws:
java.io.IOException
-
concatenateMatrix
private void concatenateMatrix(java.util.List<java.lang.Number> matrixDest, java.util.List<java.lang.Number> matrixConcat)
-
parseCIDFontDicts
private void parseCIDFontDicts(CFFDataInput input, CFFParser.DictData topDict, CFFCIDFont font, int nrOfcharStrings) throws java.io.IOException
Parse dictionaries specific to a CIDFont.- Throws:
java.io.IOException
-
readPrivateDict
private java.util.Map<java.lang.String,java.lang.Object> readPrivateDict(CFFParser.DictData privateDict)
-
parseType1Dicts
private void parseType1Dicts(CFFDataInput input, CFFParser.DictData topDict, CFFType1Font font, CFFCharset charset) throws java.io.IOException
Parse dictionaries specific to a Type 1-equivalent font.- Throws:
java.io.IOException
-
readString
private java.lang.String readString(int index) throws java.io.IOException- Throws:
java.io.IOException
-
getString
private java.lang.String getString(CFFParser.DictData dict, java.lang.String name) throws java.io.IOException
- Throws:
java.io.IOException
-
readEncoding
private CFFEncoding readEncoding(CFFDataInput dataInput, CFFCharset charset) throws java.io.IOException
- Throws:
java.io.IOException
-
readFormat0Encoding
private CFFParser.Format0Encoding readFormat0Encoding(CFFDataInput dataInput, CFFCharset charset, int format) throws java.io.IOException
- Throws:
java.io.IOException
-
readFormat1Encoding
private CFFParser.Format1Encoding readFormat1Encoding(CFFDataInput dataInput, CFFCharset charset, int format) throws java.io.IOException
- Throws:
java.io.IOException
-
readSupplement
private void readSupplement(CFFDataInput dataInput, CFFParser.CFFBuiltInEncoding encoding) throws java.io.IOException
- Throws:
java.io.IOException
-
readFDSelect
private static FDSelect readFDSelect(CFFDataInput dataInput, int nGlyphs, CFFCIDFont ros) throws java.io.IOException
Read the FDSelect Data according to the format.- Parameters:
dataInput-nGlyphs-ros-- Returns:
- the FDSelect data
- Throws:
java.io.IOException
-
readFormat0FDSelect
private static CFFParser.Format0FDSelect readFormat0FDSelect(CFFDataInput dataInput, int format, int nGlyphs, CFFCIDFont ros) throws java.io.IOException
Read the Format 0 of the FDSelect data structure.- Parameters:
dataInput-format-nGlyphs-ros-- Returns:
- the Format 0 of the FDSelect data
- Throws:
java.io.IOException
-
readFormat3FDSelect
private static CFFParser.Format3FDSelect readFormat3FDSelect(CFFDataInput dataInput, int format, int nGlyphs, CFFCIDFont ros) throws java.io.IOException
Read the Format 3 of the FDSelect data structure.- Parameters:
dataInput-format-nGlyphs-ros-- Returns:
- the Format 3 of the FDSelect data
- Throws:
java.io.IOException
-
readCharset
private CFFCharset readCharset(CFFDataInput dataInput, int nGlyphs, boolean isCIDFont) throws java.io.IOException
- Throws:
java.io.IOException
-
readFormat0Charset
private CFFParser.Format0Charset readFormat0Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont) throws java.io.IOException
- Throws:
java.io.IOException
-
readFormat1Charset
private CFFParser.Format1Charset readFormat1Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont) throws java.io.IOException
- Throws:
java.io.IOException
-
readFormat2Charset
private CFFParser.Format2Charset readFormat2Charset(CFFDataInput dataInput, int format, int nGlyphs, boolean isCIDFont) throws java.io.IOException
- Throws:
java.io.IOException
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
-