public abstract class PdfFont extends PdfObjectWrapper<PdfDictionary>
Modifier and Type | Field and Description |
---|---|
protected boolean |
embedded
true if the font is to be embedded in the PDF.
|
protected static byte[] |
emptyBytes |
protected FontProgram |
fontProgram |
protected boolean |
newFont
false, if the font comes from PdfDocument.
|
protected Map<Integer,Glyph> |
notdefGlyphs |
protected boolean |
subset
Indicates if all the glyphs and widths for that particular encoding should be included in the document.
|
protected List |
subsetRanges |
Modifier | Constructor and Description |
---|---|
protected |
PdfFont() |
protected |
PdfFont(PdfDictionary fontDictionary) |
Modifier and Type | Method and Description |
---|---|
void |
addSubsetRange(int[] range)
Adds a character range when subsetting.
|
int |
appendAnyGlyph(String text, int from, List<Glyph> glyphs)
Append any single glyph, even notdef.
|
int |
appendGlyphs(String text, int from, int to, List<Glyph> glyphs)
Append all supported glyphs and return number of processed chars.
|
protected boolean |
checkFontDictionary(PdfDictionary fontDic, PdfName fontType) |
protected boolean |
checkTrueTypeFontDictionary(PdfDictionary fontDic)
Deprecated.
Will be removed in 7.1
|
protected boolean |
checkTrueTypeFontDictionary(PdfDictionary fontDic, boolean isException)
Deprecated.
Will be removed in 7.1
|
protected static int[] |
compactRanges(List |
boolean |
containsGlyph(char unicode)
Deprecated.
Use
containsGlyph(int) instead.
|
boolean |
containsGlyph(int unicode)
Check whether font contains glyph with specified unicode.
|
boolean |
containsGlyph(String text, int from)
Check whether font contains glyph with specified unicode.
|
abstract byte[] |
convertToBytes(Glyph glyph) |
abstract byte[] |
convertToBytes(GlyphLine glyphLine) |
abstract byte[] |
convertToBytes(String text)
Converts the text into bytes to be placed in the document.
|
abstract GlyphLine |
createGlyphLine(String content) |
protected static String |
createSubsetPrefix()
Deprecated.
|
abstract String |
decode(PdfString content) |
GlyphLine |
decodeIntoGlyphLine(PdfString content)
Decodes a given PdfString containing encoded string (e.g.
|
void |
flush()
To manually flush a PdfObject behind this wrapper, you have to ensure that this object is added to the document, i.e.
|
int |
getAscent(int unicode, float fontSize)
Gets the ascent of a char code in normalized 1000 units.
|
int |
getAscent(String text, float fontSize)
Gets the ascent of a String in points.
|
abstract float |
getContentWidth(PdfString content) |
int |
getDescent(int unicode, float fontSize)
Gets the descent of a char code in points.
|
int |
getDescent(String text, float fontSize)
Gets the descent of a String in points.
|
protected abstract PdfDictionary |
getFontDescriptor(String fontName) |
double[] |
getFontMatrix() |
FontProgram |
getFontProgram() |
abstract Glyph |
getGlyph(int unicode)
Get glyph by unicode
|
protected PdfStream |
getPdfFontStream(byte[] fontStreamBytes, int[] fontStreamLengths)
Create PdfStream based on fontStreamBytes .
|
int |
getWidth(int unicode)
Returns the width of a certain character of this font in 1000 normalized units.
|
float |
getWidth(int unicode, float fontSize)
Returns the width of a certain character of this font in points.
|
int |
getWidth(String text)
Returns the width of a string of this font in 1000 normalized units.
|
float |
getWidth(String text, float fontSize)
Gets the width of a String in points.
|
boolean |
isEmbedded() |
boolean |
isSubset()
Indicates if all the glyphs and widths for that particular encoding should be included in the document.
|
protected boolean |
isWrappedObjectMustBeIndirect()
Defines if the object behind this wrapper must be an indirect object in the resultant document.
|
void |
setSubset(boolean subset)
Indicates if all the glyphs and widths for that particular encoding should be included in the document.
|
List<String> |
splitString(String text, float fontSize, float maxWidth) |
List<String> |
splitString(String text, int fontSize, float maxWidth)
Deprecated.
Will be removed in 7.1. Use
splitString(String, float, float) instead
|
String |
toString() |
protected static String |
updateSubsetPrefix(String fontName, boolean isSubset, boolean isEmbedded)
Adds a unique subset prefix to be added to the font name when the font is embedded and subset.
|
abstract void |
writeText(GlyphLine text, int from, int to, PdfOutputStream stream) |
void |
writeText(GlyphLine text, PdfOutputStream stream)
Deprecated.
|
abstract void |
writeText(String text, PdfOutputStream stream) |
ensureObjectIsAddedToDocument, ensureUnderlyingObjectHasIndirectReference, getPdfObject, isFlushed, makeIndirect, makeIndirect, markObjectAsIndirect, setForbidRelease, setModified, setPdfObject, unsetForbidRelease
protected FontProgram fontProgram
protected static final byte[] emptyBytes
protected boolean newFont
protected boolean embedded
protected boolean subset
protected ListsubsetRanges
protected PdfFont(PdfDictionary fontDictionary)
protected PdfFont()
public abstract Glyph getGlyph(int unicode)
unicode
- a unicode code point
Glyph
if it exists or .NOTDEF if supported, otherwise null
.
@Deprecated public boolean containsGlyph(char unicode)
containsGlyph(int)
instead.
unicode
- a unicode code point
public boolean containsGlyph(int unicode)
unicode
- a unicode code point
public boolean containsGlyph(String text, int from)
text
- a java unicode string
from
- start index. one or two char may be used.
public int appendGlyphs(String text, int from, int to, List<Glyph> glyphs)
text
- String to convert to glyphs.
from
- from index of the text.
to
- to index of the text.
glyphs
- array for a new glyphs, shall not be null.
public int appendAnyGlyph(String text, int from, List<Glyph> glyphs)
text
- String to convert to glyphs.
from
- from index of the text.
glyphs
- array for a new glyph, shall not be null.
public abstract byte[] convertToBytes(String text)
text
- the text to convert
public abstract byte[] convertToBytes(GlyphLine glyphLine)
public GlyphLine decodeIntoGlyphLine(PdfString content)
content
- the encoded string
GlyphLine
containing the glyphs encoded by the passed string
public abstract float getContentWidth(PdfString content)
public abstract byte[] convertToBytes(Glyph glyph)
public abstract void writeText(GlyphLine text, int from, int to, PdfOutputStream stream)
public abstract void writeText(String text, PdfOutputStream stream)
@Deprecated public void writeText(GlyphLine text, PdfOutputStream stream)
public double[] getFontMatrix()
public int getWidth(int unicode)
unicode
- a certain character.
public float getWidth(int unicode, float fontSize)
unicode
- a certain character.
fontSize
- the font size.
public int getWidth(String text)
text
- a string content.
public float getWidth(String text, float fontSize)
String
in points.
text
- the String
to get the width of
fontSize
- the font size
public int getDescent(String text, float fontSize)
String
in points. The descent will always be less than or equal to zero even if all the characters have an higher descent.
text
- the String
to get the descent of
fontSize
- the font size
public int getDescent(int unicode, float fontSize)
unicode
- the char code to get the descent of
fontSize
- the font size
public int getAscent(String text, float fontSize)
String
in points. The ascent will always be greater than or equal to zero even if all the characters have a lower ascent.
text
- the String
to get the ascent of
fontSize
- the font size
public int getAscent(int unicode, float fontSize)
unicode
- the char code to get the ascent of
fontSize
- the font size
public FontProgram getFontProgram()
public boolean isEmbedded()
public boolean isSubset()
false
to include all the glyphs and widths.
public void setSubset(boolean subset)
true
only the glyphs used will be included in the font. When set to false
and addSubsetRange(int[])
was not called the full font will be included otherwise just the characters ranges will be included.
subset
- new value of property subset
public void addSubsetRange(int[] range)
int
array where the first element is the start range inclusive and the second element is the end range inclusive. Several ranges are allowed in the same array.
range
- the character range
@Deprecated public List<String> splitString(String text, int fontSize, float maxWidth)
splitString(String, float, float)
instead
public void flush()
PdfObject
behind this wrapper, you have to ensure that this object is added to the document, i.e. it has an indirect reference. Basically this means that before flushing you need to explicitly call PdfObjectWrapper.makeIndirect(PdfDocument)
. For example: wrapperInstance.makeIndirect(document).flush(); Note that not every wrapper require this, only those that have such warning in documentation.
flush
in class PdfObjectWrapper<PdfDictionary>
protected abstract PdfDictionary getFontDescriptor(String fontName)
protected boolean isWrappedObjectMustBeIndirect()
PdfObjectWrapper
isWrappedObjectMustBeIndirect
in class PdfObjectWrapper<PdfDictionary>
protected boolean checkFontDictionary(PdfDictionary fontDic, PdfName fontType)
@Deprecated protected boolean checkTrueTypeFontDictionary(PdfDictionary fontDic)
@Deprecated protected boolean checkTrueTypeFontDictionary(PdfDictionary fontDic, boolean isException)
@Deprecated protected static String createSubsetPrefix()
protected static String updateSubsetPrefix(String fontName, boolean isSubset, boolean isEmbedded)
protected PdfStream getPdfFontStream(byte[] fontStreamBytes, int[] fontStreamLengths)
PdfStream
based on fontStreamBytes
.
fontStreamBytes
- original font data, must be not null.
fontStreamLengths
- array to generate Length*
keys, must be not null.
null
, if there is an error reading the font.
PdfException
- Method will throw exception if fontStreamBytes
is null
.
protected static int[] compactRanges(Listranges)
Copyright © 1998–2018 iText Group NV. All rights reserved.