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

## org.apache.fop.fonts.truetype
Class TTFSubSetFile

    java.lang.Object
      org.apache.fop.fonts.truetype.OpenFont
          org.apache.fop.fonts.truetype.TTFFile
              org.apache.fop.fonts.truetype.TTFSubSetFile

    public class TTFSubSetFile

extends TTFFile

Reads a TrueType file and generates a subset that can be used to embed a TrueType CID font. TrueType tables needed for embedded CID fonts are: "head", "hhea", "loca", "maxp", "cvt ", "prep", "glyf", "hmtx" and "fpgm". The TrueType spec can be found at the Microsoft Typography site: http://www.microsoft.com/truetype/

Nested Class Summary

Nested classes/interfaces inherited from class org.apache.fop.fonts.truetype.OpenFont
`OpenFont.PostScriptVersion`

Field Summary
`protected int` | `currentPos`
`protected int[]` | `glyphOffsets` Stores the glyph offsets so that we can end strings at glyph boundaries
`protected int` | `locaOffset`
`protected java.util.Map<OFTableName,OFDirTabEntry>` | `newDirTabs` The dir tab entries in the new subset font.
`protected java.util.Map<OFTableName,java.lang.Integer>` | `offsets`
`protected byte[]` | `output`
`protected int` | `realSize`

Fields inherited from class org.apache.fop.fonts.truetype.OpenFont
`advancedTableReader, cid, dirTabs, familyNames, fontFile, fullName, lastLoca, locaFormat, log, mtxTab, nhmtx, notice, numberOfGlyphs, postScriptName, subFamilyName, TRACE_ENABLED, unicodeMappings, useAdvanced, useKerning`

Constructor Summary
`TTFSubSetFile()` Default Constructor
`TTFSubSetFile(boolean useKerning, boolean useAdvanced)` Constructor

Method Summary
`protected int[]` | `buildSubsetIndexToOrigIndexMap(java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)`
`protected void` | `createCheckSumAdjustment()`
`protected boolean` | `createCvt(FontFileReader in)` Copy the cvt table as is from original font to subset font
`protected void` | `createDirectory()` Create the directory table
`protected boolean` | `createFpgm(FontFileReader in)` Copy the fpgm table as is from original font to subset font
`protected void` | `createHead(FontFileReader in)` Copy the head table as is from original font to subset font and set indexToLocaFormat to long and set checkSumAdjustment to 0, store offset to checkSumAdjustment in checkSumAdjustmentOffset
`protected void` | `createHhea(FontFileReader in, int size)` Copy the hhea table as is from original font to subset font and fill in size of hmtx table
`protected void` | `createHmtx(FontFileReader in, java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)` Create the hmtx table by copying metrics from original font to subset font.
`protected void` | `createLoca(int size)` Create an empty loca table without updating checksum
`protected void` | `createMaxp(FontFileReader in, int size)` Copy the maxp table as is from original font to subset font and set num glyphs to size
`protected boolean` | `createName(FontFileReader in)` Copy the name table as is from the original.
`protected boolean` | `createOS2(FontFileReader in)` Copy the OS/2 table as is from the original.
`protected void` | `createPost(FontFileReader in)`
`protected boolean` | `createPrep(FontFileReader in)` Copy the prep table as is from original font to subset font
`protected static int` | `getCheckSum(byte[] data, int start, int size)`
`byte[]` | `getFontSubset()` Returns a subset of the fonts (readFont() MUST be called first in order to create the subset).
`protected void` | `pad4()` Create a padding in the fontfile to align on a 4-byte boundary
`void` | `readFont(FontFileReader in, java.lang.String name, java.lang.String header, java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)` Reads a font and creates a subset of the font.
`protected void` | `scanGlyphs(FontFileReader in, java.util.Map<java.lang.Integer,java.lang.Integer> subsetGlyphs)`
`void` | `stream(TTFOutputStream ttfOut)` Streams a font.
`protected void` | `updateCheckSum(int tableStart, int tableSize, OFTableName tableName)`
`protected void` | `writeBytes(byte[] b)`
`protected void` | `writeULong(int pos, int s)` Appends a ULONG to the output array, at the given position without changing currentPos
`protected void` | `writeUShort(int s)` Appends a USHORT to the output array, updates currentPost but not realSize
`protected void` | `writeUShort(int pos, int s)` Appends a USHORT to the output array, at the given position without changing currentPos

Methods inherited from class org.apache.fop.fonts.truetype.TTFFile
`initializeFont, readIndexToLocation, readName, updateBBoxAndOffset`

Methods inherited from class org.apache.fop.fonts.truetype.OpenFont
`checkTTC, convertTTFUnit2PDFUnit, createCMaps, determineAscDesc, getAnsiKerning, getBBox, getBoundingBoxes, getCapHeight, getCharSetName, getCharWidth, getCMaps, getDirectoryEntry, getFamilyNames, getFirstChar, getFlags, getFontBBox, getFullName, getGDEF, getGPOS, getGSUB, getItalicAngle, getKerning, getLastChar, getLowerCaseAscent, getLowerCaseDescent, getMtx, getNumGlyphs, getPadSize, getPostScriptName, getStemV, getStrikeoutPosition, getStrikeoutThickness, getSubFamilyName, getTTCnames, getUnderlinePosition, getUnderlineThickness, getWeightClass, getWidths, getXHeight, guessVerticalMetricsFromGlyphBBox, handleCharacterSpacing, hasAdvancedTable, initAnsiWidths, isCFF, isEmbeddable, main, printStuff, readCMAP, readDirTabs, readFont, readFont, readFont, readFontHeader, readHorizontalHeader, readHorizontalMetrics, readKerning, readOS2, readPCLT, readPostScript, seekTab`

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

Field Detail

### output

    protected byte[] output

### realSize

    protected int realSize

### currentPos

    protected int currentPos

### offsets

    protected java.util.Map<OFTableName,java.lang.Integer> offsets

### locaOffset

    protected int locaOffset

### glyphOffsets

    protected int[] glyphOffsets

  Stores the glyph offsets so that we can end strings at glyph boundaries

### newDirTabs

    protected java.util.Map<OFTableName,OFDirTabEntry> newDirTabs

  The dir tab entries in the new subset font.

Constructor Detail

### TTFSubSetFile

    public TTFSubSetFile()

  Default Constructor

### TTFSubSetFile

    public TTFSubSetFile(boolean useKerning,
                         boolean useAdvanced)

  Constructor

  Parameters:
    `useKerning` - true if kerning data should be loaded
    `useAdvanced` - true if advanced typographic tables should be loaded

Method Detail

### createDirectory

    protected void createDirectory()

  Create the directory table

### createLoca

    protected void createLoca(int size)
                       throws java.io.IOException

  Create an empty loca table without updating checksum

  Throws:
    `java.io.IOException`

### createCvt

    protected boolean createCvt(FontFileReader in)
                         throws java.io.IOException

  Copy the cvt table as is from original font to subset font

  Throws:
    `java.io.IOException`

### createFpgm

    protected boolean createFpgm(FontFileReader in)
                          throws java.io.IOException

  Copy the fpgm table as is from original font to subset font

  Throws:
    `java.io.IOException`

### createName

    protected boolean createName(FontFileReader in)
                          throws java.io.IOException

  Copy the name table as is from the original.

  Throws:
    `java.io.IOException`

### createOS2

    protected boolean createOS2(FontFileReader in)
                         throws java.io.IOException

  Copy the OS/2 table as is from the original.

  Throws:
    `java.io.IOException`

### createMaxp

    protected void createMaxp(FontFileReader in,
                              int size)
                       throws java.io.IOException

  Copy the maxp table as is from original font to subset font and set num glyphs to size

  Throws:
    `java.io.IOException`

### createPost

    protected void createPost(FontFileReader in)
                       throws java.io.IOException

  Throws:
    `java.io.IOException`

### createPrep

    protected boolean createPrep(FontFileReader in)
                          throws java.io.IOException

  Copy the prep table as is from original font to subset font

  Throws:
    `java.io.IOException`

### createHhea

    protected void createHhea(FontFileReader in,
                              int size)
                       throws java.io.IOException

  Copy the hhea table as is from original font to subset font and fill in size of hmtx table

  Throws:
    `java.io.IOException`

### createHead

    protected void createHead(FontFileReader in)
                       throws java.io.IOException

  Copy the head table as is from original font to subset font and set indexToLocaFormat to long and set checkSumAdjustment to 0, store offset to checkSumAdjustment in checkSumAdjustmentOffset

  Throws:
    `java.io.IOException`

### buildSubsetIndexToOrigIndexMap

    protected int[] buildSubsetIndexToOrigIndexMap(java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)

### createHmtx

    protected void createHmtx(FontFileReader in,
                              java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)
                       throws java.io.IOException

  Create the hmtx table by copying metrics from original font to subset font. The glyphs Map contains an Integer key and Integer value that maps the original metric (key) to the subset metric (value)

  Throws:
    `java.io.IOException`

### readFont

    public void readFont(FontFileReader in,
                         java.lang.String name,
                         java.lang.String header,
                         java.util.Map<java.lang.Integer,java.lang.Integer> glyphs)
                  throws java.io.IOException

  Reads a font and creates a subset of the font.

  Parameters:
    `in` - FontFileReader to read from
    `name` - Name to be checked for in the font file
    `glyphs` - Map of glyphs (glyphs has old index as (Integer) key and new index as (Integer) value)
  Throws:
    `java.io.IOException` - in case of an I/O problem

### getFontSubset

    public byte[] getFontSubset()

  Returns a subset of the fonts (readFont() MUST be called first in order to create the subset).

  Returns:
    byte array

### stream

    public void stream(TTFOutputStream ttfOut)
                throws java.io.IOException

  Description copied from class: `OpenFont`
  Streams a font.

  Overrides:
    `stream` in class `OpenFont`
  Parameters:
    `ttfOut` - The interface for streaming TrueType tables.
  Throws:
    `java.io.IOException` - file write error

### scanGlyphs

    protected void scanGlyphs(FontFileReader in,
                              java.util.Map<java.lang.Integer,java.lang.Integer> subsetGlyphs)
                       throws java.io.IOException

  Throws:
    `java.io.IOException`

### writeBytes

    protected void writeBytes(byte[] b)

### writeUShort

    protected void writeUShort(int s)

  Appends a USHORT to the output array, updates currentPost but not realSize

### writeUShort

    protected void writeUShort(int pos,
                               int s)

  Appends a USHORT to the output array, at the given position without changing currentPos

### writeULong

    protected void writeULong(int pos,
                              int s)

  Appends a ULONG to the output array, at the given position without changing currentPos

### pad4

    protected void pad4()

  Create a padding in the fontfile to align on a 4-byte boundary

### updateCheckSum

    protected void updateCheckSum(int tableStart,
                                  int tableSize,
                                  OFTableName tableName)

### getCheckSum

    protected static int getCheckSum(byte[] data,
                                     int start,
                                     int size)

### createCheckSumAdjustment

    protected void createCheckSumAdjustment()

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

Copyright 1999-2015 The Apache Software Foundation. All Rights Reserved.