Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD

## com.lowagie.text.pdf
Class TrueTypeFont

    java.lang.Object
      com.lowagie.text.pdf.BaseFont
          com.lowagie.text.pdf.TrueTypeFont

Direct Known Subclasses:
  EnumerateTTC, TrueTypeFontUnicode

     class TrueTypeFont

extends BaseFont

Reads a Truetype font

Author:
  Paulo Soares (psoares@consiste.pt)

Nested Class Summary
`protected static class` | `TrueTypeFont.FontHeader` The components of table 'head'.
`protected static class` | `TrueTypeFont.HorizontalHeader` The components of table 'hhea'.
`protected static class` | `TrueTypeFont.WindowsMetrics` The components of table 'OS/2'.

Nested classes/interfaces inherited from class com.lowagie.text.pdf.BaseFont
`BaseFont.StreamFont`

Field Summary
`protected int[][]` | `bboxes`
`protected boolean` | `cff`
`protected int` | `cffLength`
`protected int` | `cffOffset`
`protected HashMap` | `cmap10` The map containing the code information for the table 'cmap', encoding 1.0.
`protected HashMap` | `cmap31` The map containing the code information for the table 'cmap', encoding 3.1 in Unicode.
`(package private) static String[]` | `codePages` The code pages possible for a True Type font.
`protected int` | `directoryOffset` The offset from the start of the file to the table directory.
`protected String[][]` | `familyName` The family name of the font
`protected String` | `fileName` The file name.
`protected String` | `fontName` The font name.
`protected String[][]` | `fullName` The full name of the font
`protected int[]` | `GlyphWidths` The width of the glyphs.
`protected TrueTypeFont.FontHeader` | `head` The content of table 'head'.
`protected TrueTypeFont.HorizontalHeader` | `hhea` The content of table 'hhea'.
`protected boolean` | `isFixedPitch` `true` if all the glyphs have the same width.
`protected double` | `italicAngle` The italic angle.
`protected boolean` | `justNames`
`protected IntHashtable` | `kerning` The map containing the kerning information.
`protected TrueTypeFont.WindowsMetrics` | `os_2` The content of table 'OS/2'.
`protected RandomAccessFileOrArray` | `rf` The file in use.
`protected String` | `style` The style modifier
`protected HashMap` | `tables` Contains the location of the several tables.
`protected String` | `ttcIndex` The index for the TTC font.
`protected int` | `underlinePosition`
`protected int` | `underlineThickness`

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, 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
`protected` | `TrueTypeFont()` This constructor is present to allow extending the class.
`(package private)` | `TrueTypeFont(String ttFile, String enc, boolean emb, byte[] ttfAfm)`
`(package private)` | `TrueTypeFont(String ttFile, String enc, boolean emb, byte[] ttfAfm, boolean justNames)` Creates a new TrueType font.

Method Summary
`protected void` | `addRangeUni(HashMap longTag, boolean includeMetrics, boolean subsetp)`
`(package private) void` | `checkCff()`
`protected static int[]` | `compactRanges(ArrayList ranges)`
`(package private) void` | `fillTables()` Reads the tables 'head', 'hhea', 'OS/2' and 'post' filling several variables.
`(package private) String` | `getBaseFont()` Gets the Postscript font name.
`String[]` | `getCodePagesSupported()` Gets the code pages supported by the font.
`String[][]` | `getFamilyFontName()` Gets the family name of the font.
`protected PdfDictionary` | `getFontBaseType(PdfIndirectReference fontDescriptor, String subsetPrefix, int firstChar, int lastChar, byte[] shortTag)` Generates the font dictionary for this font.
`float` | `getFontDescriptor(int key, float fontSize)` Gets the font parameter identified by `key`.
`protected PdfDictionary` | `getFontDescriptor(PdfIndirectReference fontStream, String subsetPrefix, PdfIndirectReference cidset)` Generates the font descriptor for this font.
`protected byte[]` | `getFullFont()`
`String[][]` | `getFullFontName()` Gets the full name of the font.
`protected int` | `getGlyphWidth(int glyph)` Gets a glyph width.
`int` | `getKerning(char char1, char char2)` Gets the kerning between two Unicode chars.
`int[]` | `getMetricsTT(int c)` Gets the glyph index and metrics for a character.
`(package private) String[][]` | `getNames(int id)` Extracts the names of the font in all the languages available.
`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`.
`protected static String` | `getTTCName(String name)` Gets the name from a composed TTC file name.
`boolean` | `hasKernPairs()` Checks if the font has any kerning pairs.
`(package private) void` | `process(byte[] ttfAfm)` Reads the font data.
`private void` | `readBbox()`
`(package private) void` | `readCMaps()` Reads the several maps from the table 'cmap'.
`(package private) HashMap` | `readFormat0()` The information in the maps of the table 'cmap' is coded in several formats.
`(package private) HashMap` | `readFormat4()` The information in the maps of the table 'cmap' is coded in several formats.
`(package private) HashMap` | `readFormat6()` The information in the maps of the table 'cmap' is coded in several formats.
`protected void` | `readGlyphWidths()` Reads the glyphs widths.
`(package private) void` | `readKerning()` Reads the kerning information from the 'kern' table.
`protected String` | `readStandardString(int length)` Reads a `String` from the font file as bytes using the Cp1252 encoding.
`protected String` | `readUnicodeString(int length)` Reads a Unicode `String` from the font file.
`boolean` | `setKerning(char char1, char 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.lowagie.text.pdf.BaseFont
`addSubsetRange, charExists, convertToBytes, convertToBytes, correctArabicAdvance, createEncoding, createFont, createFont, createFont, createFont, createSubsetPrefix, enumerateTTCNames, enumerateTTCNames, getAllFontNames, getAscent, getAscentPoint, getBaseName, getCharBBox, getCidCode, getDescent, getDescentPoint, getDifferences, getDocumentFonts, getDocumentFonts, getEncoding, getFontType, getFullFontName, getResourceStream, getResourceStream, getUnicodeDifferences, getUnicodeDifferences, getUnicodeEquivalent, getWidth, getWidth, getWidthPoint, getWidthPoint, getWidthPointKerned, getWidths, isDirectTextToByte, isEmbedded, isFontSpecific, isForceWidthsOutput, isSubset, normalizeEncoding, setCharAdvance, setDirectTextToByte, setForceWidthsOutput, setSubset`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### codePages

    static final String[] codePages

  The code pages possible for a True Type font.

### justNames

    protected boolean justNames

### tables

    protected HashMap tables

  Contains the location of the several tables. The key is the name of the table and the value is an `int[2]` where position 0 is the offset from the start of the file and position 1 is the length of the table.

### rf

    protected RandomAccessFileOrArray rf

  The file in use.

### fileName

    protected String fileName

  The file name.

### cff

    protected boolean cff

### cffOffset

    protected int cffOffset

### cffLength

    protected int cffLength

### directoryOffset

    protected int directoryOffset

  The offset from the start of the file to the table directory. It is 0 for TTF and may vary for TTC depending on the chosen font.

### ttcIndex

    protected String ttcIndex

  The index for the TTC font. It is an empty `String` for a TTF file.

### style

    protected String style

  The style modifier

### head

    protected TrueTypeFont.FontHeader head

  The content of table 'head'.

### hhea

    protected TrueTypeFont.HorizontalHeader hhea

  The content of table 'hhea'.

### os_2

    protected TrueTypeFont.WindowsMetrics os_2

  The content of table 'OS/2'.

### GlyphWidths

    protected int[] GlyphWidths

  The width of the glyphs. This is essentially the content of table 'hmtx' normalized to 1000 units.

### bboxes

    protected int[][] bboxes

### cmap10

    protected HashMap cmap10

  The map containing the code information for the table 'cmap', encoding 1.0. The key is the code and the value is an `int[2]` where position 0 is the glyph number and position 1 is the glyph width normalized to 1000 units.

### cmap31

    protected HashMap cmap31

  The map containing the code information for the table 'cmap', encoding 3.1 in Unicode.

  The key is the code and the value is an `int`[2] where position 0 is the glyph number and position 1 is the glyph width normalized to 1000 units.

### kerning

    protected IntHashtable kerning

  The map containing the kerning information. It represents the content of table 'kern'. The key is an `Integer` where the top 16 bits are the glyph number for the first character and the lower 16 bits are the glyph number for the second character. The value is the amount of kerning in normalized 1000 units as an `Integer`. This value is usually negative.

### fontName

    protected String fontName

  The font name. This name is usually extracted from the table 'name' with the 'Name ID' 6.

### fullName

    protected String[][] fullName

  The full name of the font

### familyName

    protected String[][] familyName

  The family name of the font

### italicAngle

    protected double italicAngle

  The italic angle. It is usually extracted from the 'post' table or in it's absence with the code:

       -Math.atan2(hhea.caretSlopeRun, hhea.caretSlopeRise) * 180 / Math.PI

### isFixedPitch

    protected boolean isFixedPitch

  `true` if all the glyphs have the same width.

### underlinePosition

    protected int underlinePosition

### underlineThickness

    protected int underlineThickness

Constructor Detail

### TrueTypeFont

    protected TrueTypeFont()

  This constructor is present to allow extending the class.

### TrueTypeFont

    TrueTypeFont(String ttFile,
                 String enc,
                 boolean emb,
                 byte[] ttfAfm)
           throws DocumentException,
                  IOException

Throws:
  `DocumentException`
  `IOException`

### TrueTypeFont

    TrueTypeFont(String ttFile,
                 String enc,
                 boolean emb,
                 byte[] ttfAfm,
                 boolean justNames)
           throws DocumentException,
                  IOException

  Creates a new TrueType font.

  Parameters:
    `ttFile` - the location of the font on file. The file must end in '.ttf' or '.ttc' but can have modifiers after the name
    `enc` - the encoding to be applied to this font
    `emb` - true if the font is to be embedded in the PDF
    `ttfAfm` - the font as a `byte` array
  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

Method Detail

### getTTCName

    protected static String getTTCName(String name)

  Gets the name from a composed TTC file name. If I have for input "myfont.ttc,2" the return will be "myfont.ttc".

  Parameters:
    `name` - the full name
  Returns:
    the simple file name

### fillTables

    void fillTables()
              throws DocumentException,
                     IOException

  Reads the tables 'head', 'hhea', 'OS/2' and 'post' filling several variables.

  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

### getBaseFont

    String getBaseFont()
                 throws DocumentException,
                        IOException

  Gets the Postscript font name.

  Returns:
    the Postscript font name
  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

### getNames

    String[][] getNames(int id)
                  throws DocumentException,
                         IOException

  Extracts the names of the font in all the languages available.

  Parameters:
    `id` - the name id to retrieve
  Throws:
    `DocumentException` - on error
    `IOException` - on error

### checkCff

    void checkCff()

### process

    void process(byte[] ttfAfm)
           throws DocumentException,
                  IOException

  Reads the font data.

  Parameters:
    `ttfAfm` - the font as a `byte` array, possibly `null`
  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

### readStandardString

    protected String readStandardString(int length)
                                 throws IOException

  Reads a `String` from the font file as bytes using the Cp1252 encoding.

  Parameters:
    `length` - the length of bytes to read
  Returns:
    the `String` read
  Throws:
    `IOException` - the font file could not be read

### readUnicodeString

    protected String readUnicodeString(int length)
                                throws IOException

  Reads a Unicode `String` from the font file. Each character is represented by two bytes.

  Parameters:
    `length` - the length of bytes to read. The `String` will have `length`/2 characters
  Returns:
    the `String` read
  Throws:
    `IOException` - the font file could not be read

### readGlyphWidths

    protected void readGlyphWidths()
                            throws DocumentException,
                                   IOException

  Reads the glyphs widths. The widths are extracted from the table 'hmtx'. The glyphs are normalized to 1000 units.

  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

### getGlyphWidth

    protected int getGlyphWidth(int glyph)

  Gets a glyph width.

  Parameters:
    `glyph` - the glyph to get the width of
  Returns:
    the width of the glyph in normalized 1000 units

### readBbox

    private void readBbox()
                   throws DocumentException,
                          IOException

  Throws:
    `DocumentException`
    `IOException`

### readCMaps

    void readCMaps()
             throws DocumentException,
                    IOException

  Reads the several maps from the table 'cmap'. The maps of interest are 1.0 for symbolic fonts and 3.1 for all others. A symbolic font is defined as having the map 3.0.

  Throws:
    `DocumentException` - the font is invalid
    `IOException` - the font file could not be read

### readFormat0

    HashMap readFormat0()
                  throws IOException

  The information in the maps of the table 'cmap' is coded in several formats. Format 0 is the Apple standard character to glyph index mapping table.

  Returns:
    a `HashMap` representing this map
  Throws:
    `IOException` - the font file could not be read

### readFormat4

    HashMap readFormat4()
                  throws IOException

  The information in the maps of the table 'cmap' is coded in several formats. Format 4 is the Microsoft standard character to glyph index mapping table.

  Returns:
    a `HashMap` representing this map
  Throws:
    `IOException` - the font file could not be read

### readFormat6

    HashMap readFormat6()
                  throws IOException

  The information in the maps of the table 'cmap' is coded in several formats. Format 6 is a trimmed table mapping. It is similar to format 0 but can have less than 256 entries.

  Returns:
    a `HashMap` representing this map
  Throws:
    `IOException` - the font file could not be read

### readKerning

    void readKerning()
               throws IOException

  Reads the kerning information from the 'kern' table.

  Throws:
    `IOException` - the font file could not be read

### getKerning

    public int getKerning(char char1,
                          char 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

### getRawWidth

    int getRawWidth(int c,
                    String name)

  Gets the width from the font according to the unicode char `c`. 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

### getFontDescriptor

    protected PdfDictionary getFontDescriptor(PdfIndirectReference fontStream,
                                              String subsetPrefix,
                                              PdfIndirectReference cidset)

  Generates the font descriptor for this font.

  Parameters:
    `subsetPrefix` - the subset prefix
    `fontStream` - the indirect reference to a PdfStream containing the font or `null`
  Returns:
    the PdfDictionary containing the font descriptor or `null`
  Throws:
    `DocumentException` - if there is an error

### getFontBaseType

    protected PdfDictionary getFontBaseType(PdfIndirectReference fontDescriptor,
                                            String subsetPrefix,
                                            int firstChar,
                                            int lastChar,
                                            byte[] shortTag)

  Generates the font dictionary for this font.

  Parameters:
    `subsetPrefix` - the subset prefx
    `firstChar` - the first valid character
    `lastChar` - the last valid character
    `shortTag` - a 256 bytes long `byte` array where each unused byte is represented by 0
    `fontDescriptor` - the indirect reference to a PdfDictionary containing the font descriptor or `null`
  Returns:
    the PdfDictionary containing the font dictionary
  Throws:
    `DocumentException` - if there is an error

### getFullFont

    protected byte[] getFullFont()
                          throws IOException

  Throws:
    `IOException`

### compactRanges

    protected static int[] compactRanges(ArrayList ranges)

### addRangeUni

    protected void addRangeUni(HashMap longTag,
                               boolean includeMetrics,
                               boolean subsetp)

### 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

### getFontDescriptor

    public float getFontDescriptor(int key,
                                   float fontSize)

  Gets the font parameter identified by `key`. Valid values for `key` are `ASCENT`, `CAPHEIGHT`, `DESCENT` and `ITALICANGLE`.

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

### getMetricsTT

    public int[] getMetricsTT(int c)

  Gets the glyph index and metrics for a character.

  Parameters:
    `c` - the character
  Returns:
    an `int` array with {glyph index, width}

### getPostscriptFontName

    public String getPostscriptFontName()

  Gets the postscript font name.

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

### getCodePagesSupported

    public String[] getCodePagesSupported()

  Gets the code pages supported by the font.

  Overrides:
    `getCodePagesSupported` in class `BaseFont`
  Returns:
    the code pages supported by the font

### 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

### 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

### 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

### setPostscriptFontName

    public void setPostscriptFontName(String name)

  Sets the font name that will appear in the pdf font dictionary. Use with care as it can easily make a font unreadable if not embedded.

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

### setKerning

    public boolean setKerning(char char1,
                              char char2,
                              int kern)

  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

### getRawCharBBox

    protected int[] getRawCharBBox(int c,
                                   String name)

  Specified by:
    `getRawCharBBox` in class `BaseFont`

Overview | Package | Class | Tree | Deprecated | Index | Help
PREV CLASS NEXT CLASS | FRAMES NO FRAMES
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD