Package com.adobe.fontengine.font.cff
Class NameKeyedFont
- java.lang.Object
-
- com.adobe.fontengine.font.FontData
-
- com.adobe.fontengine.font.cff.CFFFont
-
- com.adobe.fontengine.font.cff.NameKeyedFont
-
public final class NameKeyedFont extends CFFFont
Represents a name-keyed font.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
NameKeyedFont.GlyphNameFetcher
-
Constructor Summary
Constructors Constructor Description NameKeyedFont(com.adobe.fontengine.font.cff.StringIndex stringIndex, CharStrings globalSubrs, java.lang.String name, Dict topDict, com.adobe.fontengine.font.cff.CFFByteArray data, byte[] digest)
Construct aNameKeyedFont
.NameKeyedFont(java.lang.String fontName, Dict topDict, CharStrings charStrings, Dict privateDict)
Create a somewhat lobotimized name keyed font for subsetting a type1 font to CFFNameKeyedFont(java.lang.String fontName, Dict topDict, CharStrings charStrings, Dict privateDict, CharStrings lSubrs, CharStrings gSubrs)
Create an extended lobotimized name keyed font for subsetting a TrueType font to CFF with subroutines
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
charCode2gid(int charCode)
Subset
createSubset()
Create a subset for this font.LineMetrics
getCoolTypeLineMetrics()
Emulates the CoolType API CTFontDict:GetHorizontalMetrics CoolType API.Rect
getCoolTypeRawFontBBox()
Permission
getEmbeddingPermission(boolean wasEmbedded)
int
getFirstChar()
Rect
getFontBBox()
Matrix
getFontMatrix()
int
getGlyphCid(int glyphID)
Get the CID associated with glyphglyphID
.int
getGlyphForChar(int usv)
Return the glyph to use to display a character.java.lang.String
getGlyphName(int gid)
Return the name of glyphgid
.void
getGlyphOutline(int gid, OutlineConsumer consumer)
Get the outline of glyphgid
.double
getHorizontalAdvance(int gid)
Get the horizontal advance of a glyph.int
getLastChar()
int
getNumGlyphs()
Return the number of glyphs in this font.void
getOutline(int gid, Type2OutlineParser parser, OutlineConsumer consumer)
Get the outline of glyphgid
, using a specified parser.PDFFontDescription
getPDFFontDescription(Font font)
ROS
getROS()
Get the ROS associated with this font.double
getStemVForGlyph(int gid)
XDCFontDescription
getXDCFontDescription(Font font)
int
glyphName2gid(java.lang.String glyphName)
void
stream(java.io.OutputStream out, java.lang.Integer fsType)
void
stream(java.io.OutputStream out, java.lang.Integer fsType, NameKeyedFont.GlyphNameFetcher fetcher)
void
subsetAndStream(Subset subset, java.io.OutputStream out, boolean preserveROS, java.lang.Integer fsType)
Subset and stream this font for PDF use.void
subsetAndStream(Subset subset, java.io.OutputStream out, boolean preserveROS, java.lang.Integer fsType, boolean enableSubrizer)
Added new subsetAndStream method as part of changes to force DF4 output to be Identity-CID always.void
subsetAndStream(Subset subset, java.io.OutputStream out, java.lang.Integer fsType, boolean rebuildCharstrings, NameKeyedFont.GlyphNameFetcher fetcher)
Create a subset name-keyed cff based on the given parametersvoid
subsetAndStream(Subset subset, java.io.OutputStream out, java.lang.Integer fsType, boolean rebuildCharstrings, NameKeyedFont.GlyphNameFetcher fetcher, boolean enableSubrizer)
-
Methods inherited from class com.adobe.fontengine.font.cff.CFFFont
getCacheSupportInfo, getCoolTypeIcfBox, getCoolTypeIdeoEmBox, getCoolTypeProportionalRomanFromFontProperties, getCoolTypeScript, getCoolTypeUnderlineMetrics, getCoolTypeUnderlineMetrics, getCSSFamilyNames, getCSSStretchValue, getCSSWeight, getFXGFontDescription, getGlyphBBox, getName, getPlatformFontDescription, getPostscriptFontDescription, getPreferredCSSFamilyName, getScaler, getSelectionDescription, getSWFFont4Description, getSWFFontDescription, getUnitsPerEmX, getUnitsPerEmY, isCSSStyleItalic, isCSSStyleNormal, isCSSStyleOblique, isCSSVariantNormal, isCSSVariantSmallCaps, isFixedPitch, subsetAndStream
-
Methods inherited from class com.adobe.fontengine.font.FontData
getContainerFingerprint, getCoolTypeCapHeight, getCoolTypeFontBBox, getCoolTypeGlyphBBox, getCoolTypeGlyphForChar, getCoolTypeUnitsPerEm, getCoolTypeXHeight, getCSS20FontDescription, getLineMetrics, getPointSizeRange, getPreferredCSS20FontDescription, getScaler, hasCoolTypeProportionalRoman, isSymbolic
-
-
-
-
Constructor Detail
-
NameKeyedFont
public NameKeyedFont(com.adobe.fontengine.font.cff.StringIndex stringIndex, CharStrings globalSubrs, java.lang.String name, Dict topDict, com.adobe.fontengine.font.cff.CFFByteArray data, byte[] digest) throws java.io.IOException, InvalidFontException, UnsupportedFontException
Construct aNameKeyedFont
.- Parameters:
stringIndex
- the StringIndex for this fontglobalSubrs
- the global subroutines for this fontname
- the name of this fonttopDict
- the topDict
of this font.data
- the underlying bytes from which the structures pointed by the top dict will be parseddigest
- the digest for the container of this font- Throws:
java.io.IOException
InvalidFontException
UnsupportedFontException
-
NameKeyedFont
public NameKeyedFont(java.lang.String fontName, Dict topDict, CharStrings charStrings, Dict privateDict) throws InvalidFontException, UnsupportedFontException
Create a somewhat lobotimized name keyed font for subsetting a type1 font to CFF
-
NameKeyedFont
public NameKeyedFont(java.lang.String fontName, Dict topDict, CharStrings charStrings, Dict privateDict, CharStrings lSubrs, CharStrings gSubrs) throws InvalidFontException, UnsupportedFontException
Create an extended lobotimized name keyed font for subsetting a TrueType font to CFF with subroutines
-
-
Method Detail
-
getNumGlyphs
public int getNumGlyphs()
Description copied from class:FontData
Return the number of glyphs in this font.- Specified by:
getNumGlyphs
in classFontData
-
glyphName2gid
public int glyphName2gid(java.lang.String glyphName) throws InvalidFontException, UnsupportedFontException
-
charCode2gid
public int charCode2gid(int charCode) throws InvalidFontException, UnsupportedFontException
-
getGlyphName
public java.lang.String getGlyphName(int gid) throws InvalidFontException, UnsupportedFontException
Return the name of glyphgid
.- Specified by:
getGlyphName
in classCFFFont
- Throws:
InvalidFontException
UnsupportedFontException
-
getROS
public ROS getROS()
Description copied from class:CFFFont
Get the ROS associated with this font. If the font does not have an ROS, return null.
-
getGlyphCid
public int getGlyphCid(int glyphID)
Description copied from class:CFFFont
Get the CID associated with glyphglyphID
. Returns -1 if getROS() returns null.- Specified by:
getGlyphCid
in classCFFFont
- Returns:
- the CID in the ROS associated with the font.
-
getGlyphOutline
public void getGlyphOutline(int gid, OutlineConsumer consumer) throws InvalidFontException, UnsupportedFontException
Get the outline of glyphgid
.- Specified by:
getGlyphOutline
in classCFFFont
- Parameters:
gid
- the glyph id of the glyphconsumer
- the OutlineConsumer to receive the outline- Throws:
InvalidFontException
UnsupportedFontException
-
getOutline
public void getOutline(int gid, Type2OutlineParser parser, OutlineConsumer consumer) throws InvalidFontException, UnsupportedFontException
Get the outline of glyphgid
, using a specified parser.- Specified by:
getOutline
in classCFFFont
- Parameters:
gid
- the glyph id of the glyphparser
- the Type2OutlineParser parser to useconsumer
- the OutlineConsumer to receive the outline- Throws:
InvalidFontException
UnsupportedFontException
-
getStemVForGlyph
public double getStemVForGlyph(int gid)
- Specified by:
getStemVForGlyph
in classCFFFont
-
getHorizontalAdvance
public double getHorizontalAdvance(int gid) throws InvalidFontException, UnsupportedFontException
Description copied from class:FontData
Get the horizontal advance of a glyph. The returned value is in metric space.- Specified by:
getHorizontalAdvance
in classCFFFont
- Throws:
InvalidFontException
UnsupportedFontException
-
getFontMatrix
public Matrix getFontMatrix()
- Specified by:
getFontMatrix
in classCFFFont
-
getFontBBox
public Rect getFontBBox() throws InvalidFontException, UnsupportedFontException
- Specified by:
getFontBBox
in classFontData
- Throws:
InvalidFontException
UnsupportedFontException
-
getCoolTypeRawFontBBox
public Rect getCoolTypeRawFontBBox() throws InvalidFontException, UnsupportedFontException
-
getCoolTypeLineMetrics
public LineMetrics getCoolTypeLineMetrics() throws UnsupportedFontException, InvalidFontException
Emulates the CoolType API CTFontDict:GetHorizontalMetrics CoolType API.The metrics are expressed in the design space of the font, i.e. they need to be converted through the metrics matrix.
This methods never returns null.
See also the
FontData.getLineMetrics()
method.- Specified by:
getCoolTypeLineMetrics
in classFontData
- Throws:
UnsupportedFontException
InvalidFontException
-
getFirstChar
public int getFirstChar() throws InvalidFontException, UnsupportedFontException
-
getLastChar
public int getLastChar() throws InvalidFontException, UnsupportedFontException
-
getGlyphForChar
public int getGlyphForChar(int usv) throws InvalidFontException, UnsupportedFontException
Return the glyph to use to display a character. Depending on the layout technology of the font, the returned gid may be further processed.- Specified by:
getGlyphForChar
in classCFFFont
- Parameters:
usv
- the Unicode scalar value of the character; (by definition, surrogate code points are not Unicode scalar values).- Returns:
- the gid of the glyph to use
- Throws:
InvalidFontException
UnsupportedFontException
-
getEmbeddingPermission
public Permission getEmbeddingPermission(boolean wasEmbedded)
- Specified by:
getEmbeddingPermission
in classFontData
-
subsetAndStream
public void subsetAndStream(Subset subset, java.io.OutputStream out, boolean preserveROS, java.lang.Integer fsType) throws InvalidFontException, UnsupportedFontException, java.io.IOException
Subset and stream this font for PDF use. The stream is a CID-keyed CFF stream.- Specified by:
subsetAndStream
in classCFFFont
- Parameters:
out
- the OutputStream to which the bytes are streamedfsType
- if non-null an integer as described in technote 5147 http://partners.adobe.com/public/developer/en/acrobat/sdk/FontPolicies.pdf "Font Embedding Guidelines for Adobe Third-party Developers".- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
subsetAndStream
public void subsetAndStream(Subset subset, java.io.OutputStream out, boolean preserveROS, java.lang.Integer fsType, boolean enableSubrizer) throws InvalidFontException, UnsupportedFontException, java.io.IOException
Added new subsetAndStream method as part of changes to force DF4 output to be Identity-CID always.- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
stream
public void stream(java.io.OutputStream out, java.lang.Integer fsType) throws InvalidFontException, UnsupportedFontException, java.io.IOException
- Specified by:
stream
in classCFFFont
- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
stream
public void stream(java.io.OutputStream out, java.lang.Integer fsType, NameKeyedFont.GlyphNameFetcher fetcher) throws InvalidFontException, UnsupportedFontException, java.io.IOException
- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
subsetAndStream
public void subsetAndStream(Subset subset, java.io.OutputStream out, java.lang.Integer fsType, boolean rebuildCharstrings, NameKeyedFont.GlyphNameFetcher fetcher) throws InvalidFontException, UnsupportedFontException, java.io.IOException
Create a subset name-keyed cff based on the given parameters- Parameters:
subset
- The set of glyphs to include in the subsetout
- The OutputStream to which we will write the new fontfsType
- The fsType to include in the new fontrebuildCharstrings
- Tells if the charstrings in the current font already take into account the Subset. If they do, then we don't need to recreate the charstrings. Otherwise, we do.fetcher
- Provides a way to get from gid to glyphName for cases where there is no charset (for example, because this NameKeyedFont is a temporary font converted from Type1). Can be null if this's charset and string index are valid.- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
subsetAndStream
public void subsetAndStream(Subset subset, java.io.OutputStream out, java.lang.Integer fsType, boolean rebuildCharstrings, NameKeyedFont.GlyphNameFetcher fetcher, boolean enableSubrizer) throws InvalidFontException, UnsupportedFontException, java.io.IOException
- Throws:
InvalidFontException
UnsupportedFontException
java.io.IOException
-
getPDFFontDescription
public PDFFontDescription getPDFFontDescription(Font font) throws UnsupportedFontException, InvalidFontException
- Specified by:
getPDFFontDescription
in classFontData
- Throws:
UnsupportedFontException
InvalidFontException
-
getXDCFontDescription
public XDCFontDescription getXDCFontDescription(Font font) throws UnsupportedFontException, InvalidFontException
- Specified by:
getXDCFontDescription
in classFontData
- Throws:
UnsupportedFontException
InvalidFontException
-
createSubset
public Subset createSubset() throws InvalidFontException, UnsupportedFontException
Create a subset for this font.- Specified by:
createSubset
in classFontData
- Throws:
InvalidFontException
UnsupportedFontException
-
-