com.itextpdf.text.pdf
Class DocumentFont

java.lang.Object
  extended by com.itextpdf.text.pdf.BaseFont
      extended by com.itextpdf.text.pdf.DocumentFont
Direct Known Subclasses:
CMapAwareDocumentFont

public class DocumentFont
extends BaseFont

Author:
psoares

Nested Class Summary
 
Nested classes/interfaces inherited from class com.itextpdf.text.pdf.BaseFont
BaseFont.StreamFont
 
Field Summary
private  float Ascender
           
private  float CapHeight
           
private static String[] cjkEncs
           
private static String[] cjkEncs2
           
private  BaseFont cjkMirror
           
private static String[] cjkNames
           
private static String[] cjkNames2
           
private  float Descender
           
private  IntHashtable diffmap
           
private  PdfDictionary font
           
private  String fontName
           
private  boolean isType0
           
private  float ItalicAngle
           
private  float llx
           
private  float lly
           
private  HashMap<Integer,int[]> metrics
           
private  PRIndirectReference refFont
           
private static int[] stdEnc
           
private  IntHashtable uni2byte
           
private  float urx
           
private  float ury
           
 
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
DocumentFont(PRIndirectReference refFont)
          Creates a new instance of DocumentFont
 
Method Summary
 boolean charExists(int c)
          Checks if a character exists in this font.
(package private)  byte[] convertToBytes(int char1)
          Converts a char to a byte array according to the font's encoding.
(package private)  byte[] convertToBytes(String text)
          Converts a String to a byte array according to the font's encoding.
private  String decodeString(PdfString ps)
           
private  void doType1TT()
           
private  void fillEncoding(PdfName encoding)
           
private  void fillFontDesc(PdfDictionary fontDesc)
           
private  void fillMetrics(byte[] touni, IntHashtable widths, int dw)
           
 String[][] getAllNameEntries()
          Gets all the entries of the names-table.
 int[] getCharBBox(int c)
          Gets the smallest box enclosing the character contours.
 String[][] getFamilyFontName()
          Gets the family name of the font.
 float getFontDescriptor(int key, float fontSize)
          Gets the font parameter identified by key.
 String[][] getFullFontName()
          Gets the full name of the font.
 PdfStream getFullFontStream()
          Always returns null.
(package private)  PdfIndirectReference getIndirectReference()
           
 int getKerning(int char1, int char2)
          Gets the kerning between two Unicode chars.
 String getPostscriptFontName()
          Gets the postscript font name.
protected  int[] getRawCharBBox(int c, String name)
           
(package private)  int getRawWidth(int c, String name)
          Gets the width from the font according to the Unicode char c or the name.
(package private)  IntHashtable getUni2Byte()
          Exposes the unicode - > CID map that is constructed from the font's encoding
 int getWidth(int char1)
          Gets the width of a char in normalized 1000 units.
 int getWidth(String text)
          Gets the width of a String in normalized 1000 units.
 boolean hasKernPairs()
          Checks if the font has any kerning pairs.
private  void processType0(PdfDictionary font)
           
private  IntHashtable readWidths(PdfArray ws)
           
 boolean setKerning(int char1, int char2, int kern)
          Sets the kerning between two Unicode chars.
 void setPostscriptFontName(String name)
          Sets the font name that will appear in the pdf font dictionary.
(package private)  void writeFont(PdfWriter writer, PdfIndirectReference ref, Object[] params)
          Outputs to the writer the font dictionaries and streams.
 
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

metrics

private HashMap<Integer,int[]> metrics

fontName

private String fontName

refFont

private PRIndirectReference refFont

font

private PdfDictionary font

uni2byte

private IntHashtable uni2byte

diffmap

private IntHashtable diffmap

Ascender

private float Ascender

CapHeight

private float CapHeight

Descender

private float Descender

ItalicAngle

private float ItalicAngle

llx

private float llx

lly

private float lly

urx

private float urx

ury

private float ury

isType0

private boolean isType0

cjkMirror

private BaseFont cjkMirror

cjkNames

private static String[] cjkNames

cjkEncs

private static String[] cjkEncs

cjkNames2

private static String[] cjkNames2

cjkEncs2

private static String[] cjkEncs2

stdEnc

private static final int[] stdEnc
Constructor Detail

DocumentFont

DocumentFont(PRIndirectReference refFont)
Creates a new instance of DocumentFont

Method Detail

processType0

private void processType0(PdfDictionary font)

readWidths

private IntHashtable readWidths(PdfArray ws)

decodeString

private String decodeString(PdfString ps)

fillMetrics

private void fillMetrics(byte[] touni,
                         IntHashtable widths,
                         int dw)

doType1TT

private void doType1TT()

fillFontDesc

private void fillFontDesc(PdfDictionary fontDesc)

fillEncoding

private void fillEncoding(PdfName encoding)

getFamilyFontName

public String[][] getFamilyFontName()
Gets the family name of the font. If it is a True Type font each array element will have {Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"", "", "", font name}.

Specified by:
getFamilyFontName in class BaseFont
Returns:
the family name of the font

getFontDescriptor

public float getFontDescriptor(int key,
                               float fontSize)
Gets the font parameter identified by key. Valid values for key are ASCENT, CAPHEIGHT, DESCENT, ITALICANGLE, BBOXLLX, BBOXLLY, BBOXURX and BBOXURY.

Specified by:
getFontDescriptor in class BaseFont
Parameters:
key - the parameter to be extracted
fontSize - the font size in points
Returns:
the parameter in points

getFullFontName

public String[][] getFullFontName()
Gets the full name of the font. If it is a True Type font each array element will have {Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"", "", "", font name}.

Specified by:
getFullFontName in class BaseFont
Returns:
the full name of the font

getAllNameEntries

public String[][] getAllNameEntries()
Gets all the entries of the names-table. If it is a True Type font each array element will have {Name ID, Platform ID, Platform Encoding ID, Language ID, font name}. The interpretation of this values can be found in the Open Type specification, chapter 2, in the 'name' table.
For the other fonts the array has a single element with {"4", "", "", "", font name}.

Specified by:
getAllNameEntries in class BaseFont
Returns:
the full name of the font
Since:
2.0.8

getKerning

public int getKerning(int char1,
                      int char2)
Gets the kerning between two Unicode chars.

Specified by:
getKerning in class BaseFont
Parameters:
char1 - the first char
char2 - the second char
Returns:
the kerning to be applied

getPostscriptFontName

public String getPostscriptFontName()
Gets the postscript font name.

Specified by:
getPostscriptFontName in class BaseFont
Returns:
the postscript font name

getRawWidth

int getRawWidth(int c,
                String name)
Gets the width from the font according to the Unicode char c or the name. If the name is null it's a symbolic font.

Specified by:
getRawWidth in class BaseFont
Parameters:
c - the unicode char
name - the glyph name
Returns:
the width of the char

hasKernPairs

public boolean hasKernPairs()
Checks if the font has any kerning pairs.

Specified by:
hasKernPairs in class BaseFont
Returns:
true if the font has any kerning pairs

writeFont

void writeFont(PdfWriter writer,
               PdfIndirectReference ref,
               Object[] params)
         throws DocumentException,
                IOException
Outputs to the writer the font dictionaries and streams.

Specified by:
writeFont in class BaseFont
Parameters:
writer - the writer for this document
ref - the font indirect reference
params - several parameters that depend on the font type
Throws:
IOException - on error
DocumentException - error in generating the object

getFullFontStream

public PdfStream getFullFontStream()
Always returns null.

Specified by:
getFullFontStream in class BaseFont
Returns:
null
Since:
2.1.3

getWidth

public int getWidth(int char1)
Gets the width of a char in normalized 1000 units.

Overrides:
getWidth in class BaseFont
Parameters:
char1 - the unicode char to get the width of
Returns:
the width in normalized 1000 units

getWidth

public int getWidth(String text)
Description copied from class: BaseFont
Gets the width of a String in normalized 1000 units.

Overrides:
getWidth in class BaseFont
Parameters:
text - the String to get the width of
Returns:
the width in normalized 1000 units

convertToBytes

byte[] convertToBytes(String text)
Description copied from class: BaseFont
Converts a String to a byte array according to the font's encoding.

Overrides:
convertToBytes in class BaseFont
Parameters:
text - the String to be converted
Returns:
an array of byte representing the conversion according to the font's encoding

convertToBytes

byte[] convertToBytes(int char1)
Description copied from class: BaseFont
Converts a char to a byte array according to the font's encoding.

Overrides:
convertToBytes in class BaseFont
Parameters:
char1 - the char to be converted
Returns:
an array of byte representing the conversion according to the font's encoding

getIndirectReference

PdfIndirectReference getIndirectReference()

charExists

public boolean charExists(int c)
Description copied from class: BaseFont
Checks if a character exists in this font.

Overrides:
charExists in class BaseFont
Parameters:
c - the character to check
Returns:
true if the character has a glyph, false otherwise

setPostscriptFontName

public void setPostscriptFontName(String name)
Sets the font name that will appear in the pdf font dictionary. It does nothing in this case as the font is already in the document.

Specified by:
setPostscriptFontName in class BaseFont
Parameters:
name - the new font name

setKerning

public boolean setKerning(int char1,
                          int char2,
                          int kern)
Description copied from class: BaseFont
Sets the kerning between two Unicode chars.

Specified by:
setKerning in class BaseFont
Parameters:
char1 - the first char
char2 - the second char
kern - the kerning to apply in normalized 1000 units
Returns:
true if the kerning was applied, false otherwise

getCharBBox

public int[] getCharBBox(int c)
Description copied from class: BaseFont
Gets the smallest box enclosing the character contours. It will return null if the font has not the information or the character has no contours, as in the case of the space, for example. Characters with no contours may also return [0,0,0,0].

Overrides:
getCharBBox in class BaseFont
Parameters:
c - the character to get the contour bounding box from
Returns:
an array of four floats with the bounding box in the format [llx,lly,urx,ury] or null

getRawCharBBox

protected int[] getRawCharBBox(int c,
                               String name)
Specified by:
getRawCharBBox in class BaseFont

getUni2Byte

IntHashtable getUni2Byte()
Exposes the unicode - > CID map that is constructed from the font's encoding

Returns:
the unicode to CID map
Since:
2.1.7

Hosted by Hostbasket