Package com.itextpdf.io.font
Class TrueTypeFont
java.lang.Object
com.itextpdf.io.font.FontProgram
com.itextpdf.io.font.TrueTypeFont
- Direct Known Subclasses:
DocTrueTypeFont
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected int[][]
private OpenTypeParser
private byte[]
private OpenTypeGdefTableReader
private GlyphPositioningTableReader
private GlyphSubstitutionTableReader
protected boolean
protected IntHashtable
The map containing the kerning information.Fields inherited from class com.itextpdf.io.font.FontProgram
avgWidth, codeToGlyph, DEFAULT_WIDTH, encodingScheme, fontIdentification, fontMetrics, fontNames, HORIZONTAL_SCALING_FACTOR, isFontSpecific, registry, unicodeToGlyph, UNITS_NORMALIZATION
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
TrueTypeFont
(byte[] ttf) (package private)
TrueTypeFont
(byte[] ttc, int ttcIndex) private
TrueTypeFont
(OpenTypeParser fontParser) TrueTypeFont
(String path) (package private)
TrueTypeFont
(String ttcPath, int ttcIndex) -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
String[]
Gets the code pages supported by the font.int
The offset from the start of the file to the table directory.byte[]
int
getKerning
(Glyph first, Glyph second) Gets the kerning between two glyphs.int
byte[]
boolean
private void
boolean
isBuiltWith
(String fontProgram) Checks whether theFontProgram
was built with corresponding fontName.boolean
isCff()
mapGlyphsCidsToGids
(Set<Integer> glyphs) Maps a set of glyph CIDs (as used in PDF file) to corresponding GID values (as a glyph primary identifier in the font file).protected void
protected void
protected void
private static int[]
toCompactRange
(List<int[]> ranges) Normalizes given ranges by making sure that first values in pairs are lower than second values and merges overlapping ranges in one.void
updateUsedGlyphs
(SortedSet<Integer> usedGlyphs, boolean subset, List<int[]> subsetRanges) The method will update usedGlyphs with additional range or with all glyphs if there is no subset.Methods inherited from class com.itextpdf.io.font.FontProgram
convertGlyphSpaceToTextSpace, convertGlyphSpaceToTextSpace, convertGlyphSpaceToTextSpace, convertTextSpaceToGlyphSpace, countOfGlyphs, fixSpaceIssue, getAvgWidth, getCharBBox, getFontIdentification, getFontMetrics, getFontNames, getGlyph, getGlyphByCode, getKerning, getRegistry, getWidth, isFontSpecific, setBbox, setBold, setCapHeight, setFixedPitch, setFontFamily, setFontName, setFontStretch, setFontWeight, setItalicAngle, setRegistry, setStemH, setStemV, setTypoAscender, setTypoDescender, setXHeight, toString, trimFontStyle
-
Field Details
-
fontParser
-
bBoxes
protected int[][] bBoxes -
isVertical
protected boolean isVertical -
gsubTable
-
gposTable
-
gdefTable
-
kerning
The map containing the kerning information. It represents the content of table 'kern'. The key is anInteger
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 anInteger
. This value is usually negative. -
fontStreamBytes
private byte[] fontStreamBytes
-
-
Constructor Details
-
TrueTypeFont
- Throws:
IOException
-
TrueTypeFont
protected TrueTypeFont() -
TrueTypeFont
- Throws:
IOException
-
TrueTypeFont
- Throws:
IOException
-
TrueTypeFont
TrueTypeFont(String ttcPath, int ttcIndex) throws IOException - Throws:
IOException
-
TrueTypeFont
TrueTypeFont(byte[] ttc, int ttcIndex) throws IOException - Throws:
IOException
-
-
Method Details
-
hasKernPairs
public boolean hasKernPairs()- Overrides:
hasKernPairs
in classFontProgram
-
getKerning
Gets the kerning between two glyphs.- Specified by:
getKerning
in classFontProgram
- Parameters:
first
- the first glyphsecond
- the second glyph- Returns:
- the kerning to be applied
-
isCff
public boolean isCff() -
getActiveCmap
-
getFontStreamBytes
public byte[] getFontStreamBytes() -
getPdfFontFlags
public int getPdfFontFlags()- Specified by:
getPdfFontFlags
in classFontProgram
-
getDirectoryOffset
public int getDirectoryOffset()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.- Returns:
- directory Offset
-
getGsubTable
-
getGposTable
-
getGdefTable
-
getSubset
-
mapGlyphsCidsToGids
Maps a set of glyph CIDs (as used in PDF file) to corresponding GID values (as a glyph primary identifier in the font file). This call is only meaningful for fonts that return true forisCff()
. For other types of fonts, GID and CID are always the same, so that call would essentially return a set of the same values.- Parameters:
glyphs
- a set of glyph CIDs- Returns:
- a set of glyph ids corresponding to the passed glyph CIDs
-
readGdefTable
- Throws:
IOException
-
readGsubTable
- Throws:
IOException
-
readGposTable
- Throws:
IOException
-
initializeFontProperties
- Throws:
IOException
-
getCodePagesSupported
Gets the code pages supported by the font.- Returns:
- the code pages supported by the font
-
isBuiltWith
Description copied from class:FontProgram
Checks whether theFontProgram
was built with corresponding fontName. Default value is false unless overridden.- Overrides:
isBuiltWith
in classFontProgram
- Parameters:
fontProgram
- a font name or path to a font program- Returns:
- true, if the FontProgram was built with the fontProgram. Otherwise false.
-
close
- Throws:
IOException
-
updateUsedGlyphs
public void updateUsedGlyphs(SortedSet<Integer> usedGlyphs, boolean subset, List<int[]> subsetRanges) The method will update usedGlyphs with additional range or with all glyphs if there is no subset. This set of used glyphs can be used for building width array and ToUnicode CMAP.- Parameters:
usedGlyphs
- a set of integers, which are glyph ids that denote used glyphs. This set is updated inside of the method if needed.subset
- subset statussubsetRanges
- additional subset ranges
-
toCompactRange
Normalizes given ranges by making sure that first values in pairs are lower than second values and merges overlapping ranges in one.- Parameters:
ranges
- aList
of integer arrays, which are constituted by pairs of ints that denote each range limits. Each integer array size shall be a multiple of two.- Returns:
- single merged array consisting of pairs of integers, each of them denoting a range.
-