Show More
Commit Description:
merge
Commit Description:
merge
References:
File last commit:
Show/Diff file:
Action:
node_modules/fontkit/src/tables/GSUB.js
| 84 lines
| 2.8 KiB
| application/javascript
| JavascriptLexer
|
r789 | import r from 'restructure'; | |||
import {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device, Context, ChainingContext} from './opentype'; | ||||
import {FeatureVariations} from './variations'; | ||||
let Sequence = new r.Array(r.uint16, r.uint16); | ||||
let AlternateSet = Sequence; | ||||
let Ligature = new r.Struct({ | ||||
glyph: r.uint16, | ||||
compCount: r.uint16, | ||||
components: new r.Array(r.uint16, t => t.compCount - 1) | ||||
}); | ||||
let LigatureSet = new r.Array(new r.Pointer(r.uint16, Ligature), r.uint16); | ||||
let GSUBLookup = new r.VersionedStruct('lookupType', { | ||||
1: new r.VersionedStruct(r.uint16, {// Single Substitution | ||||
1: { | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
deltaGlyphID: r.int16 | ||||
}, | ||||
2: { | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
glyphCount: r.uint16, | ||||
substitute: new r.LazyArray(r.uint16, 'glyphCount') | ||||
} | ||||
}), | ||||
2: { // Multiple Substitution | ||||
substFormat: r.uint16, | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
count: r.uint16, | ||||
sequences: new r.LazyArray(new r.Pointer(r.uint16, Sequence), 'count') | ||||
}, | ||||
3: { // Alternate Substitution | ||||
substFormat: r.uint16, | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
count: r.uint16, | ||||
alternateSet: new r.LazyArray(new r.Pointer(r.uint16, AlternateSet), 'count') | ||||
}, | ||||
4: { // Ligature Substitution | ||||
substFormat: r.uint16, | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
count: r.uint16, | ||||
ligatureSets: new r.LazyArray(new r.Pointer(r.uint16, LigatureSet), 'count') | ||||
}, | ||||
5: Context, // Contextual Substitution | ||||
6: ChainingContext, // Chaining Contextual Substitution | ||||
7: { // Extension Substitution | ||||
substFormat: r.uint16, | ||||
lookupType: r.uint16, // cannot also be 7 | ||||
extension: new r.Pointer(r.uint32, GSUBLookup) | ||||
}, | ||||
8: { // Reverse Chaining Contextual Single Substitution | ||||
substFormat: r.uint16, | ||||
coverage: new r.Pointer(r.uint16, Coverage), | ||||
backtrackCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'backtrackGlyphCount'), | ||||
lookaheadGlyphCount: r.uint16, | ||||
lookaheadCoverage: new r.Array(new r.Pointer(r.uint16, Coverage), 'lookaheadGlyphCount'), | ||||
glyphCount: r.uint16, | ||||
substitutes: new r.Array(r.uint16, 'glyphCount') | ||||
} | ||||
}); | ||||
// Fix circular reference | ||||
GSUBLookup.versions[7].extension.type = GSUBLookup; | ||||
export default new r.VersionedStruct(r.uint32, { | ||||
header: { | ||||
scriptList: new r.Pointer(r.uint16, ScriptList), | ||||
featureList: new r.Pointer(r.uint16, FeatureList), | ||||
lookupList: new r.Pointer(r.uint16, new LookupList(GSUBLookup)) | ||||
}, | ||||
0x00010000: {}, | ||||
0x00010001: { | ||||
featureVariations: new r.Pointer(r.uint32, FeatureVariations) | ||||
} | ||||
}); | ||||