com.lowagie.text.pdf

## Class DocumentFont

- java.lang.Object
- - com.lowagie.text.pdf.BaseFont
  - - com.lowagie.text.pdf.DocumentFont

- Direct Known Subclasses:
    CMapAwareDocumentFont

      public class DocumentFont
      extends BaseFont

  Author:
    psoares

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from class com.lowagie.text.pdf.BaseFont

      `BaseFont.StreamFont`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `private float` | `Ascender`
    `private float` | `CapHeight`
    `private static java.lang.String[]` | `cjkEncs`
    `private static java.lang.String[]` | `cjkEncs2`
    `private BaseFont` | `cjkMirror`
    `private static java.lang.String[]` | `cjkNames`
    `private static java.lang.String[]` | `cjkNames2`
    `private float` | `Descender`
    `private IntHashtable` | `diffmap`
    `private PdfDictionary` | `font`
    `private java.lang.String` | `fontName`
    `private boolean` | `isType0`
    `private float` | `ItalicAngle`
    `private float` | `llx`
    `private float` | `lly`
    `private java.util.HashMap` | `metrics`
    `private PRIndirectReference` | `refFont`
    `private static int[]` | `stdEnc`
    `private IntHashtable` | `uni2byte`
    `private float` | `urx`
    `private float` | `ury`

    - ### Fields inherited from class com.lowagie.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

    Constructors
    Constructor and Description
    `DocumentFont(PRIndirectReference refFont)` Creates a new instance of DocumentFont

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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(java.lang.String text)` Converts a `String` to a byte array according to the font's encoding.
    `private java.lang.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)`
    `java.lang.String[][]` | `getAllNameEntries()` Gets all the entries of the names-table.
    `int[]` | `getCharBBox(int c)` Gets the smallest box enclosing the character contours.
    `java.lang.String[][]` | `getFamilyFontName()` Gets the family name of the font.
    `float` | `getFontDescriptor(int key, float fontSize)` Gets the font parameter identified by `key`.
    `java.lang.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.
    `java.lang.String` | `getPostscriptFontName()` Gets the postscript font name.
    `protected int[]` | `getRawCharBBox(int c, java.lang.String name)`
    `(package private) int` | `getRawWidth(int c, java.lang.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(java.lang.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(java.lang.String name)` Sets the font name that will appear in the pdf font dictionary.
    `(package private) void` | `writeFont(PdfWriter writer, PdfIndirectReference ref, java.lang.Object[] params)` Outputs to the writer the font dictionaries and streams.

    - ### Methods inherited from class com.lowagie.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 java.util.HashMap metrics

    - #### fontName

          private java.lang.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 java.lang.String[] cjkNames

    - #### cjkEncs

          private static java.lang.String[] cjkEncs

    - #### cjkNames2

          private static java.lang.String[] cjkNames2

    - #### cjkEncs2

          private static java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.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 java.lang.String getPostscriptFontName()

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

    - #### getRawWidth

          int getRawWidth(int c,
                        java.lang.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,
                       java.lang.Object[] params)
                   throws DocumentException,
                          java.io.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:
        `java.io.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(java.lang.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(java.lang.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(java.lang.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,
                             java.lang.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