Class OpenTypeParser
java.lang.Object
com.itextpdf.io.font.OpenTypeParser
- All Implemented Interfaces:
Closeable, AutoCloseable
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class(package private) static classThe components of table 'head'.(package private) static classThe components of table 'hhea'.(package private) static class(package private) static classThe components of table 'OS/2'. -
Field Summary
FieldsModifier and TypeFieldDescriptionAll the names of the Names-Table.protected booleanIndicate, that the font contains 'CFF ' table.protected intLength of 'CFF ' table.protected intOffset to 'CFF ' table.protected OpenTypeParser.CmapTableprotected intThe offset from the start of the file to the table directory.protected StringThe file name.protected StringThe font name.private int[]protected OpenTypeParser.HeaderTableprivate static final intprotected OpenTypeParser.HorizontalHeaderprotected OpenTypeParser.WindowsMetricsprotected OpenTypeParser.PostTableprotected RandomAccessFileOrArrayThe file in use.Contains the location of the several tables.protected intThe index for the TTC font. -
Constructor Summary
ConstructorsConstructorDescriptionOpenTypeParser(byte[] ttf) OpenTypeParser(byte[] ttc, int ttcIndex) OpenTypeParser(String name) OpenTypeParser(String ttcPath, int ttcIndex) -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckCff()voidclose()byte[]protected intgetGlyphWidth(int glyph) Gets a glyph width.int[]Gets the Postscript font name.(package private) byte[]protected static StringgetTTCName(String name) Gets the name from a composed TTC file name.private voidbooleanisCff()protected voidloadTables(boolean all) Reads the font data.protected int[][]readBbox(int unitsPerEm) Read the glyf bboxes from 'glyf' table.byte[]If this font file is using the Compact Font File Format, then this method will return the raw bytes needed for the font stream.private voidReads the several maps from the table 'cmap'.The information in the maps of the table 'cmap' is coded in several formats.readFormat4(boolean fontSpecific) The information in the maps of the table 'cmap' is coded in several formats.The information in the maps of the table 'cmap' is coded in several formats.protected voidReads the glyphs widths.private voidRead font header, table 'head'.private voidRead horizontal header, table 'hhea'.protected IntHashtablereadKerning(int unitsPerEm) Reads the kerning information from the 'kern' table.private voidExtracts the names of the font in all the languages available.protected intprivate voidReads the windows metrics table.private voidprivate StringreadStandardString(int length) Reads aStringfrom the font file as bytes using the Cp1252 encoding.private StringreadUnicodeString(int length) Reads a UnicodeStringfrom the font file.
-
Field Details
-
HEAD_LOCA_FORMAT_OFFSET
private static final int HEAD_LOCA_FORMAT_OFFSET- See Also:
-
fileName
The file name. -
raf
The file in use. -
ttcIndex
protected int ttcIndexThe index for the TTC font. It is -1intfor a TTF file. -
directoryOffset
protected int directoryOffsetThe 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. -
fontName
The font name. This name is usually extracted from the table 'name' with the 'Name ID' 6. -
allNameEntries
-
cff
protected boolean cffIndicate, that the font contains 'CFF ' table. -
cffOffset
protected int cffOffsetOffset to 'CFF ' table. -
cffLength
protected int cffLengthLength of 'CFF ' table. -
glyphWidthsByIndex
private int[] glyphWidthsByIndex -
head
-
hhea
-
os_2
-
post
-
cmaps
-
tables
-
-
Constructor Details
-
OpenTypeParser
- Throws:
IOException
-
OpenTypeParser
- Throws:
IOException
-
OpenTypeParser
- Throws:
IOException
-
OpenTypeParser
- Throws:
IOException
-
-
Method Details
-
getPsFontName
Gets the Postscript font name. -
getAllNameEntries
-
getPostTable
-
getOs_2Table
-
getHheaTable
-
getHeadTable
-
getCmapTable
-
getGlyphWidthsByIndex
public int[] getGlyphWidthsByIndex() -
getFontNames
-
isCff
public boolean isCff() -
getFullFont
- Throws:
IOException
-
readCffFont
If this font file is using the Compact Font File Format, then this method will return the raw bytes needed for the font stream. If this method is ever made public: make sure to add a test if (cff == true).- Returns:
- a byte array
- Throws:
IOException
-
getSubset
- Throws:
IOException
-
close
- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Throws:
IOException
-
initializeSfntTables
- Throws:
IOException
-
loadTables
Reads the font data.- Parameters:
all- iftrue, all tables will be read, otherwise only 'head', 'name', and 'os/2'- Throws:
IOException
-
getTTCName
-
checkCff
protected void checkCff() -
readGlyphWidths
Reads the glyphs widths. The widths are extracted from the table 'hmtx'. The glyphs are normalized to 1000 units (TrueTypeFont.UNITS_NORMALIZATION). Depends onOpenTypeParser.HorizontalHeader.numberOfHMetricsandOpenTypeParser.HeaderTable.unitsPerEm.- Throws:
IOException- the font file could not be read.
-
readKerning
Reads the kerning information from the 'kern' table.- Parameters:
unitsPerEm-OpenTypeParser.HeaderTable.unitsPerEm.- Throws:
IOException- the font file could not be read
-
readBbox
Read the glyf bboxes from 'glyf' table.- Parameters:
unitsPerEm-OpenTypeParser.HeaderTable.unitsPerEm- Throws:
IOException- the font is invalidIOException- the font file could not be read
-
readNumGlyphs
- Throws:
IOException
-
readNameTable
Extracts the names of the font in all the languages available.- Throws:
IOException- on errorIOException- on error
-
readHheaTable
Read horizontal header, table 'hhea'.- Throws:
IOException- the font is invalid.IOException- the font file could not be read.
-
readHeadTable
Read font header, table 'head'.- Throws:
IOException- the font is invalid.IOException- the font file could not be read.
-
readOs_2Table
Reads the windows metrics table. The metrics are extracted from the table 'OS/2'. Depends onOpenTypeParser.HeaderTable.unitsPerEmproperty.- Throws:
IOException- the font is invalid.IOException- the font file could not be read.
-
readPostTable
- Throws:
IOException
-
readCmapTable
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. Depends fromreadGlyphWidths().- Throws:
IOException- the font file could not be read
-
readStandardString
Reads aStringfrom the font file as bytes using the Cp1252 encoding.- Parameters:
length- the length of bytes to read- Returns:
- the
Stringread - Throws:
IOException- the font file could not be read
-
readUnicodeString
Reads a UnicodeStringfrom the font file. Each character is represented by two bytes.- Parameters:
length- the length of bytes to read. TheStringwill havelength/2 characters.- Returns:
- the
Stringread. - Throws:
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 (TrueTypeFont.UNITS_NORMALIZATION)
-
readFormat0
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
HashMaprepresenting this map - Throws:
IOException- the font file could not be read
-
readFormat4
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
HashMaprepresenting this map - Throws:
IOException- the font file could not be read
-
readFormat6
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
HashMaprepresenting this map - Throws:
IOException- the font file could not be read
-
readFormat12
- Throws:
IOException
-