Current File : /home/tradevaly/www/node_modules/fontkit/src/tables/BASE.js |
import r from 'restructure';
import {ScriptList, FeatureList, LookupList, Coverage, ClassDef, Device} from './opentype';
import {ItemVariationStore} from './variations';
let BaseCoord = new r.VersionedStruct(r.uint16, {
1: { // Design units only
coordinate: r.int16 // X or Y value, in design units
},
2: { // Design units plus contour point
coordinate: r.int16, // X or Y value, in design units
referenceGlyph: r.uint16, // GlyphID of control glyph
baseCoordPoint: r.uint16 // Index of contour point on the referenceGlyph
},
3: { // Design units plus Device table
coordinate: r.int16, // X or Y value, in design units
deviceTable: new r.Pointer(r.uint16, Device) // Device table for X or Y value
}
});
let BaseValues = new r.Struct({
defaultIndex: r.uint16, // Index of default baseline for this script-same index in the BaseTagList
baseCoordCount: r.uint16,
baseCoords: new r.Array(new r.Pointer(r.uint16, BaseCoord), 'baseCoordCount')
});
let FeatMinMaxRecord = new r.Struct({
tag: new r.String(4), // 4-byte feature identification tag-must match FeatureTag in FeatureList
minCoord: new r.Pointer(r.uint16, BaseCoord, {type: 'parent'}), // May be NULL
maxCoord: new r.Pointer(r.uint16, BaseCoord, {type: 'parent'}) // May be NULL
});
let MinMax = new r.Struct({
minCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
maxCoord: new r.Pointer(r.uint16, BaseCoord), // May be NULL
featMinMaxCount: r.uint16, // May be 0
featMinMaxRecords: new r.Array(FeatMinMaxRecord, 'featMinMaxCount') // In alphabetical order
});
let BaseLangSysRecord = new r.Struct({
tag: new r.String(4), // 4-byte language system identification tag
minMax: new r.Pointer(r.uint16, MinMax, {type: 'parent'})
});
let BaseScript = new r.Struct({
baseValues: new r.Pointer(r.uint16, BaseValues), // May be NULL
defaultMinMax: new r.Pointer(r.uint16, MinMax), // May be NULL
baseLangSysCount: r.uint16, // May be 0
baseLangSysRecords: new r.Array(BaseLangSysRecord, 'baseLangSysCount') // in alphabetical order by BaseLangSysTag
});
let BaseScriptRecord = new r.Struct({
tag: new r.String(4), // 4-byte script identification tag
script: new r.Pointer(r.uint16, BaseScript, {type: 'parent'})
});
let BaseScriptList = new r.Array(BaseScriptRecord, r.uint16);
// Array of 4-byte baseline identification tags-must be in alphabetical order
let BaseTagList = new r.Array(new r.String(4), r.uint16);
let Axis = new r.Struct({
baseTagList: new r.Pointer(r.uint16, BaseTagList), // May be NULL
baseScriptList: new r.Pointer(r.uint16, BaseScriptList)
});
export default new r.VersionedStruct(r.uint32, {
header: {
horizAxis: new r.Pointer(r.uint16, Axis), // May be NULL
vertAxis: new r.Pointer(r.uint16, Axis) // May be NULL
},
0x00010000: {},
0x00010001: {
itemVariationStore: new r.Pointer(r.uint32, ItemVariationStore)
}
});