Package org.apache.fontbox.ttf
Class GlyphSubstitutionTable
java.lang.Object
org.apache.fontbox.ttf.TTFTable
org.apache.fontbox.ttf.GlyphSubstitutionTable
A glyph substitution 'GSUB' table in a TrueType or OpenType font.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate FeatureListTableprivate GsubDataprivate Stringprivate static final org.apache.commons.logging.Logprivate LookupListTableprivate Map<String, ScriptTable> static final Stringprivate static final PatternThe regex represents 4 'word characters' [a-zA-Z_0-9], seeASCII.WORD.Fields inherited from class org.apache.fontbox.ttf.TTFTable
initialized -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate intapplyFeature(FeatureRecord featureRecord, int gid) private booleancontainsFeature(List<FeatureRecord> featureRecords, String featureTag) private intdoLookup(LookupTable lookupTable, int gid) private List<FeatureRecord> getFeatureRecords(Collection<LangSysTable> langSysTables, List<String> enabledFeatures) Get a list ofFeatureRecords from a collection ofLangSysTables.Returns a GsubData instance containing all scripts of the table.getGsubData(String scriptTag) Builds a newGsubDatainstance for given script tag.private Collection<LangSysTable> getLangSysTables(String scriptTag) intgetSubstitution(int gid, String[] scriptTags, List<String> enabledFeatures) Apply glyph substitutions to the supplied gid.intgetUnsubstitution(int sgid) For a substitute-gid (obtained fromgetSubstitution(int, String[], List)), retrieve the original gid.(package private) voidread(TrueTypeFont ttf, TTFDataStream data) This will read the required data from the stream.private LookupSubTablereadAlternateSubstitutionSubtable(TTFDataStream data, long offset) private CoverageTablereadCoverageTable(TTFDataStream data, long offset) private FeatureListTablereadFeatureList(TTFDataStream data, long offset) private FeatureTablereadFeatureTable(TTFDataStream data, long offset) private LangSysTablereadLangSysTable(TTFDataStream data, long offset) private LigatureSetTablereadLigatureSetTable(TTFDataStream data, long ligatureSetTableLocation, int coverageGlyphId) private LookupSubTablereadLigatureSubstitutionSubtable(TTFDataStream data, long offset) private LigatureTablereadLigatureTable(TTFDataStream data, long ligatureTableLocation, int coverageGlyphId) private LookupListTablereadLookupList(TTFDataStream data, long offset) private LookupSubTablereadLookupSubtable(TTFDataStream data, long offset, int lookupType) private LookupTablereadLookupTable(TTFDataStream data, long offset) private LookupSubTablereadMultipleSubstitutionSubtable(TTFDataStream data, long offset) private RangeRecordreadRangeRecord(TTFDataStream data) private Map<String, ScriptTable> readScriptList(TTFDataStream data, long offset) private ScriptTablereadScriptTable(TTFDataStream data, long offset) private LookupSubTablereadSingleLookupSubTable(TTFDataStream data, long offset) private voidremoveFeature(List<FeatureRecord> featureRecords, String featureTag) private StringselectScriptTag(String[] tags) Choose from one of the supplied OpenType script tags, depending on what the font supports and potentially on context.Methods inherited from class org.apache.fontbox.ttf.TTFTable
getCheckSum, getInitialized, getLength, getOffset, getTag, readHeaders, setCheckSum, setLength, setOffset, setTag
-
Field Details
-
LOG
private static final org.apache.commons.logging.Log LOG -
TAG
- See Also:
-
scriptList
-
featureListTable
-
lookupListTable
-
lookupCache
-
reverseLookup
-
lastUsedSupportedScript
-
gsubData
-
WORDPATTERN
The regex represents 4 'word characters' [a-zA-Z_0-9], seeASCII.WORD.Note: the ' '-character is not matched!
-
-
Constructor Details
-
GlyphSubstitutionTable
GlyphSubstitutionTable()
-
-
Method Details
-
read
Description copied from class:TTFTableThis will read the required data from the stream.- Overrides:
readin classTTFTable- Parameters:
ttf- The font that is being read.data- The stream to read the data from.- Throws:
IOException- If there is an error reading the data.
-
readScriptList
- Throws:
IOException
-
readScriptTable
- Throws:
IOException
-
readLangSysTable
- Throws:
IOException
-
readFeatureList
- Throws:
IOException
-
readFeatureTable
- Throws:
IOException
-
readLookupList
- Throws:
IOException
-
readLookupSubtable
private LookupSubTable readLookupSubtable(TTFDataStream data, long offset, int lookupType) throws IOException - Throws:
IOException
-
readLookupTable
- Throws:
IOException
-
readSingleLookupSubTable
- Throws:
IOException
-
readMultipleSubstitutionSubtable
private LookupSubTable readMultipleSubstitutionSubtable(TTFDataStream data, long offset) throws IOException - Throws:
IOException
-
readAlternateSubstitutionSubtable
private LookupSubTable readAlternateSubstitutionSubtable(TTFDataStream data, long offset) throws IOException - Throws:
IOException
-
readLigatureSubstitutionSubtable
private LookupSubTable readLigatureSubstitutionSubtable(TTFDataStream data, long offset) throws IOException - Throws:
IOException
-
readLigatureSetTable
private LigatureSetTable readLigatureSetTable(TTFDataStream data, long ligatureSetTableLocation, int coverageGlyphId) throws IOException - Throws:
IOException
-
readLigatureTable
private LigatureTable readLigatureTable(TTFDataStream data, long ligatureTableLocation, int coverageGlyphId) throws IOException - Throws:
IOException
-
readCoverageTable
- Throws:
IOException
-
selectScriptTag
Choose from one of the supplied OpenType script tags, depending on what the font supports and potentially on context.- Parameters:
tags-- Returns:
- The best OpenType script tag
-
getLangSysTables
-
getFeatureRecords
private List<FeatureRecord> getFeatureRecords(Collection<LangSysTable> langSysTables, List<String> enabledFeatures) Get a list ofFeatureRecords from a collection ofLangSysTables. Optionally filter the returned features by supplying a list of allowed feature tags inenabledFeatures. Note that features listed as required (LangSysTable#requiredFeatureIndex) will be included even if not explicitly enabled.- Parameters:
langSysTables- TheLangSysTables indicatingFeatureRecords to search forenabledFeatures- An optional list of feature tags (nullto allow all)- Returns:
- The indicated
FeatureRecords
-
containsFeature
-
removeFeature
-
applyFeature
-
doLookup
-
getSubstitution
Apply glyph substitutions to the supplied gid. The applicable substitutions are determined by thescriptTagswhich indicate the language of the gid, and by the list ofenabledFeatures. To ensure that a single gid isn't mapped to multiple substitutions, subsequent invocations with the same gid will return the same result as the first, regardless of script or enabled features.- Parameters:
gid- GIDscriptTags- Script tags applicable to the gid (seeOpenTypeScript)enabledFeatures- list of features to apply- Returns:
- the id of the glyph substitution
-
getUnsubstitution
public int getUnsubstitution(int sgid) For a substitute-gid (obtained fromgetSubstitution(int, String[], List)), retrieve the original gid.Only gids previously substituted by this instance can be un-substituted. If you are trying to unsubstitute before you substitute, something is wrong.
- Parameters:
sgid- Substitute GID- Returns:
- the original gid of a substitute-gid
-
getGsubData
Returns a GsubData instance containing all scripts of the table.- Returns:
- the GsubData instance representing the table
-
getGsubData
Builds a newGsubDatainstance for given script tag. In contrast to neighbourgetGsubData()method, this one does not try to find the first supported language and load GSUB data for it. Instead, it fetches the data for the givenscriptTag(if it's supported by the font) leaving the language unspecified. It means that even after successful reading of GSUB data, the actual glyph substitution may not work if there is no correspondingGsubWorkerimplementation for it. Note: This method performs searching on every invocation (no results are cached)- Parameters:
scriptTag- a script tag for which the data is needed- Returns:
- GSUB data for the given script or
nullif no such script in the font
-
getSupportedScriptTags
- Returns:
- a read-only view of the script tags for which this GSUB table has records
-
readRangeRecord
- Throws:
IOException
-