com.itextpdf.text.pdf
Class CMapAwareDocumentFont

java.lang.Object
  extended by com.itextpdf.text.pdf.BaseFont
      extended by com.itextpdf.text.pdf.DocumentFont
          extended by com.itextpdf.text.pdf.CMapAwareDocumentFont

public class CMapAwareDocumentFont
extends DocumentFont

Implementation of DocumentFont used while parsing PDF streams.

Since:
2.1.4

Nested Class Summary
 
Nested classes/interfaces inherited from class com.itextpdf.text.pdf.BaseFont
BaseFont.StreamFont
 
Field Summary
private  char[] cidbyte2uni
          Mapping between CID code (single byte only for now) and unicode equivalent as derived by the font's encoding.
private  PdfDictionary fontDic
          The font dictionary.
private  int spaceWidth
          the width of a space for this font, in normalized 1000 point units
private  CMap toUnicodeCmap
          The CMap constructed from the ToUnicode map from the font's dictionary, if present.
 
Fields inherited from class com.itextpdf.text.pdf.BaseFont
ASCENT, AWT_ASCENT, AWT_DESCENT, AWT_LEADING, AWT_MAXADVANCE, BBOXLLX, BBOXLLY, BBOXURX, BBOXURY, BuiltinFonts14, CACHED, CAPHEIGHT, CHAR_RANGE_ARABIC, CHAR_RANGE_CYRILLIC, CHAR_RANGE_HEBREW, CHAR_RANGE_LATIN, charBBoxes, CID_NEWLINE, compressionLevel, COURIER, COURIER_BOLD, COURIER_BOLDOBLIQUE, COURIER_OBLIQUE, CP1250, CP1252, CP1257, DESCENT, differences, directTextToByte, embedded, EMBEDDED, encoding, fastWinansi, FONT_TYPE_CJK, FONT_TYPE_DOCUMENT, FONT_TYPE_T1, FONT_TYPE_T3, FONT_TYPE_TT, FONT_TYPE_TTUNI, fontCache, fontSpecific, fontType, forceWidthsOutput, HELVETICA, HELVETICA_BOLD, HELVETICA_BOLDOBLIQUE, HELVETICA_OBLIQUE, IDENTITY_H, IDENTITY_V, ITALICANGLE, MACROMAN, NOT_CACHED, NOT_EMBEDDED, notdef, RESOURCE_PATH, specialMap, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, SUBSCRIPT_OFFSET, SUBSCRIPT_SIZE, subset, subsetRanges, SUPERSCRIPT_OFFSET, SUPERSCRIPT_SIZE, SYMBOL, TIMES_BOLD, TIMES_BOLDITALIC, TIMES_ITALIC, TIMES_ROMAN, UNDERLINE_POSITION, UNDERLINE_THICKNESS, unicodeDifferences, widths, WINANSI, ZAPFDINGBATS
 
Constructor Summary
CMapAwareDocumentFont(PRIndirectReference refFont)
          Creates an instance of a CMapAwareFont based on an indirect reference to a font.
 
Method Summary
private  int computeAverageWidth()
          For all widths of all glyphs, compute the average width in normalized 1000 point units.
 String decode(byte[] cidbytes, int offset, int len)
          Decodes a string of bytes (encoded in the font's encoding) into a unicode string This will use the ToUnicode map of the font, if available, otherwise it uses the font's encoding
private  String decodeSingleCID(byte[] bytes, int offset, int len)
          Decodes a single CID (represented by one or two bytes) to a unicode String.
 String encode(byte[] bytes, int offset, int len)
          Deprecated. method name is not indicative of what it does. Use decode instead.
 int getWidth(int char1)
          Gets the width of a char in normalized 1000 units.
private  void processToUnicode()
          Parses the ToUnicode entry, if present, and constructs a CMap for it
private  void processUni2Byte()
          Inverts DocumentFont's uni2byte mapping to obtain a cid-to-unicode mapping based on the font's encoding
 
Methods inherited from class com.itextpdf.text.pdf.DocumentFont
charExists, convertToBytes, convertToBytes, getAllNameEntries, getCharBBox, getFamilyFontName, getFontDescriptor, getFullFontName, getFullFontStream, getIndirectReference, getKerning, getPostscriptFontName, getRawCharBBox, getRawWidth, getUni2Byte, getWidth, hasKernPairs, setKerning, setPostscriptFontName, writeFont
 
Methods inherited from class com.itextpdf.text.pdf.BaseFont
addSubsetRange, correctArabicAdvance, createEncoding, createFont, createFont, createFont, createFont, createFont, createFont, createFont, createSubsetPrefix, enumerateTTCNames, enumerateTTCNames, getAllFontNames, getAllNameEntries, getAscent, getAscentPoint, getBaseName, getCidCode, getCodePagesSupported, getCompressionLevel, getDescent, getDescentPoint, getDifferences, getDocumentFonts, getDocumentFonts, getEncoding, getFontType, getFullFontName, getResourceStream, getResourceStream, getUnicodeDifferences, getUnicodeDifferences, getUnicodeEquivalent, getWidthPoint, getWidthPoint, getWidthPointKerned, getWidths, isDirectTextToByte, isEmbedded, isFontSpecific, isForceWidthsOutput, isSubset, normalizeEncoding, setCharAdvance, setCompressionLevel, setDirectTextToByte, setForceWidthsOutput, setSubset
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

fontDic

private PdfDictionary fontDic
The font dictionary.


spaceWidth

private int spaceWidth
the width of a space for this font, in normalized 1000 point units


toUnicodeCmap

private CMap toUnicodeCmap
The CMap constructed from the ToUnicode map from the font's dictionary, if present. This CMap transforms CID values into unicode equivalent


cidbyte2uni

private char[] cidbyte2uni
Mapping between CID code (single byte only for now) and unicode equivalent as derived by the font's encoding. Only needed if the ToUnicode CMap is not provided.

Constructor Detail

CMapAwareDocumentFont

public CMapAwareDocumentFont(PRIndirectReference refFont)
Creates an instance of a CMapAwareFont based on an indirect reference to a font.

Parameters:
refFont - the indirect reference to a font
Method Detail

processToUnicode

private void processToUnicode()
Parses the ToUnicode entry, if present, and constructs a CMap for it

Since:
2.1.7

processUni2Byte

private void processUni2Byte()
Inverts DocumentFont's uni2byte mapping to obtain a cid-to-unicode mapping based on the font's encoding

Since:
2.1.7

computeAverageWidth

private int computeAverageWidth()
For all widths of all glyphs, compute the average width in normalized 1000 point units. This is used to give some meaningful width in cases where we need an average font width (such as if the width of a space isn't specified by a given font)

Returns:
the average width of all non-zero width glyphs in the font

getWidth

public int getWidth(int char1)
Description copied from class: DocumentFont
Gets the width of a char in normalized 1000 units.

Overrides:
getWidth in class DocumentFont
Parameters:
char1 - the unicode char to get the width of
Returns:
the width in normalized 1000 units
Since:
2.1.5 Override to allow special handling for fonts that don't specify width of space character
See Also:
DocumentFont.getWidth(int)

decodeSingleCID

private String decodeSingleCID(byte[] bytes,
                               int offset,
                               int len)
Decodes a single CID (represented by one or two bytes) to a unicode String.

Parameters:
bytes - the bytes making up the character code to convert
offset - an offset
len - a length
Returns:
a String containing the encoded form of the input bytes using the font's encoding.

decode

public String decode(byte[] cidbytes,
                     int offset,
                     int len)
Decodes a string of bytes (encoded in the font's encoding) into a unicode string This will use the ToUnicode map of the font, if available, otherwise it uses the font's encoding

Parameters:
cidbytes - the bytes that need to be decoded
Returns:
the unicode String that results from decoding
Since:
2.1.7

encode

public String encode(byte[] bytes,
                     int offset,
                     int len)
Deprecated. method name is not indicative of what it does. Use decode instead.

Encodes bytes to a String.

Parameters:
bytes - the bytes from a stream
offset - an offset
len - a length
Returns:
a String encoded taking into account if the bytes are in unicode or not.

Hosted by Hostbasket