Current File : /home/tradevaly/www/node_modules/fontkit/src/tables/variations.js |
import {Feature} from './opentype';
import r from 'restructure';
/*******************
* Variation Store *
*******************/
let F2DOT14 = new r.Fixed(16, 'BE', 14);
let RegionAxisCoordinates = new r.Struct({
startCoord: F2DOT14,
peakCoord: F2DOT14,
endCoord: F2DOT14
});
let VariationRegionList = new r.Struct({
axisCount: r.uint16,
regionCount: r.uint16,
variationRegions: new r.Array(new r.Array(RegionAxisCoordinates, 'axisCount'), 'regionCount')
});
let DeltaSet = new r.Struct({
shortDeltas: new r.Array(r.int16, t => t.parent.shortDeltaCount),
regionDeltas: new r.Array(r.int8, t => t.parent.regionIndexCount - t.parent.shortDeltaCount),
deltas: t => t.shortDeltas.concat(t.regionDeltas)
});
let ItemVariationData = new r.Struct({
itemCount: r.uint16,
shortDeltaCount: r.uint16,
regionIndexCount: r.uint16,
regionIndexes: new r.Array(r.uint16, 'regionIndexCount'),
deltaSets: new r.Array(DeltaSet, 'itemCount')
});
export let ItemVariationStore = new r.Struct({
format: r.uint16,
variationRegionList: new r.Pointer(r.uint32, VariationRegionList),
variationDataCount: r.uint16,
itemVariationData: new r.Array(new r.Pointer(r.uint32, ItemVariationData), 'variationDataCount')
});
/**********************
* Feature Variations *
**********************/
let ConditionTable = new r.VersionedStruct(r.uint16, {
1: {
axisIndex: r.uint16,
axisIndex: r.uint16,
filterRangeMinValue: F2DOT14,
filterRangeMaxValue: F2DOT14
}
});
let ConditionSet = new r.Struct({
conditionCount: r.uint16,
conditionTable: new r.Array(new r.Pointer(r.uint32, ConditionTable), 'conditionCount')
});
let FeatureTableSubstitutionRecord = new r.Struct({
featureIndex: r.uint16,
alternateFeatureTable: new r.Pointer(r.uint32, Feature, {type: 'parent'})
});
let FeatureTableSubstitution = new r.Struct({
version: r.fixed32,
substitutionCount: r.uint16,
substitutions: new r.Array(FeatureTableSubstitutionRecord, 'substitutionCount')
});
let FeatureVariationRecord = new r.Struct({
conditionSet: new r.Pointer(r.uint32, ConditionSet, {type: 'parent'}),
featureTableSubstitution: new r.Pointer(r.uint32, FeatureTableSubstitution, {type: 'parent'})
});
export let FeatureVariations = new r.Struct({
majorVersion: r.uint16,
minorVersion: r.uint16,
featureVariationRecordCount: r.uint32,
featureVariationRecords: new r.Array(FeatureVariationRecord, 'featureVariationRecordCount')
});