Current File : /home/tradevaly/www/node_modules/fontkit/src/tables/EBLC.js |
import r from 'restructure';
import {BigMetrics} from './EBDT';
let SBitLineMetrics = new r.Struct({
ascender: r.int8,
descender: r.int8,
widthMax: r.uint8,
caretSlopeNumerator: r.int8,
caretSlopeDenominator: r.int8,
caretOffset: r.int8,
minOriginSB: r.int8,
minAdvanceSB: r.int8,
maxBeforeBL: r.int8,
minAfterBL: r.int8,
pad: new r.Reserved(r.int8, 2)
});
let CodeOffsetPair = new r.Struct({
glyphCode: r.uint16,
offset: r.uint16
});
let IndexSubtable = new r.VersionedStruct(r.uint16, {
header: {
imageFormat: r.uint16,
imageDataOffset: r.uint32
},
1: {
offsetArray: new r.Array(r.uint32, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)
},
2: {
imageSize: r.uint32,
bigMetrics: BigMetrics
},
3: {
offsetArray: new r.Array(r.uint16, t => t.parent.lastGlyphIndex - t.parent.firstGlyphIndex + 1)
},
4: {
numGlyphs: r.uint32,
glyphArray: new r.Array(CodeOffsetPair, t => t.numGlyphs + 1)
},
5: {
imageSize: r.uint32,
bigMetrics: BigMetrics,
numGlyphs: r.uint32,
glyphCodeArray: new r.Array(r.uint16, 'numGlyphs')
}
});
let IndexSubtableArray = new r.Struct({
firstGlyphIndex: r.uint16,
lastGlyphIndex: r.uint16,
subtable: new r.Pointer(r.uint32, IndexSubtable)
});
let BitmapSizeTable = new r.Struct({
indexSubTableArray: new r.Pointer(r.uint32, new r.Array(IndexSubtableArray, 1), { type: 'parent' }),
indexTablesSize: r.uint32,
numberOfIndexSubTables: r.uint32,
colorRef: r.uint32,
hori: SBitLineMetrics,
vert: SBitLineMetrics,
startGlyphIndex: r.uint16,
endGlyphIndex: r.uint16,
ppemX: r.uint8,
ppemY: r.uint8,
bitDepth: r.uint8,
flags: new r.Bitfield(r.uint8, ['horizontal', 'vertical'])
});
export default new r.Struct({
version: r.uint32, // 0x00020000
numSizes: r.uint32,
sizes: new r.Array(BitmapSizeTable, 'numSizes')
});