r = require 'restructure'
{LookupTable} = require './aat'
GlyphIdentifier = new r.VersionedStruct r.uint8,
0:
data: new r.String(null, 'utf8')
64:
data: r.uint16
127:
data: r.uint16
for i in [1..63]
GlyphIdentifier.versions[i] = GlyphIdentifier.versions[0]
for i in [65..126]
GlyphIdentifier.versions[i] = GlyphIdentifier.versions[64]
GlyphSubgroup = new r.Struct
nameIndex: r.uint16
glyphs: new r.Array r.uint16, r.uint16
GlyphGroup = new r.Array GlyphSubgroup, r.uint16
GlyphGroupOffsetArray = new r.Struct
numGroups: r.uint16
padding: new r.Reserved(r.uint16)
# groups: new r.Pointer
GlyphInfo = new r.Struct
groupOffset: new r.Pointer(r.uint32, GlyphGroup, nullValue: 0xFFFFFFFF, relativeTo: 'parent.extraInfo')
featOffset: r.uint32
flags: r.uint8
numUnicodes: r.uint8
unicodes: new r.Array r.uint16, 'numUnicodes'
glyphIDs: new r.Array GlyphIdentifier, r.uint16
padding: new r.Reserved r.uint8, -> if n = @_currentOffset % 4 then 4 - n else 0
module.exports = new r.VersionedStruct r.uint16,
header:
reserved: new r.Reserved r.uint16
extraInfo: r.uint32
1:
offsets: new r.Array new r.Pointer(r.uint32, GlyphInfo), -> @parent.numGlyphs
2:
lookupTable: new LookupTable new r.Pointer(r.uint32, GlyphInfo)
|