|
|
import r from 'restructure';
|
|
|
|
|
|
var OS2 = new r.VersionedStruct(r.uint16, {
|
|
|
header: {
|
|
|
xAvgCharWidth: r.int16, // average weighted advance width of lower case letters and space
|
|
|
usWeightClass: r.uint16, // visual weight of stroke in glyphs
|
|
|
usWidthClass: r.uint16, // relative change from the normal aspect ratio (width to height ratio)
|
|
|
fsType: new r.Bitfield(r.uint16, [ // Indicates font embedding licensing rights
|
|
|
null, 'noEmbedding', 'viewOnly', 'editable', null,
|
|
|
null, null, null, 'noSubsetting', 'bitmapOnly'
|
|
|
]),
|
|
|
ySubscriptXSize: r.int16, // recommended horizontal size in pixels for subscripts
|
|
|
ySubscriptYSize: r.int16, // recommended vertical size in pixels for subscripts
|
|
|
ySubscriptXOffset: r.int16, // recommended horizontal offset for subscripts
|
|
|
ySubscriptYOffset: r.int16, // recommended vertical offset form the baseline for subscripts
|
|
|
ySuperscriptXSize: r.int16, // recommended horizontal size in pixels for superscripts
|
|
|
ySuperscriptYSize: r.int16, // recommended vertical size in pixels for superscripts
|
|
|
ySuperscriptXOffset: r.int16, // recommended horizontal offset for superscripts
|
|
|
ySuperscriptYOffset: r.int16, // recommended vertical offset from the baseline for superscripts
|
|
|
yStrikeoutSize: r.int16, // width of the strikeout stroke
|
|
|
yStrikeoutPosition: r.int16, // position of the strikeout stroke relative to the baseline
|
|
|
sFamilyClass: r.int16, // classification of font-family design
|
|
|
panose: new r.Array(r.uint8, 10), // describe the visual characteristics of a given typeface
|
|
|
ulCharRange: new r.Array(r.uint32, 4),
|
|
|
vendorID: new r.String(4), // four character identifier for the font vendor
|
|
|
fsSelection: new r.Bitfield(r.uint16, [ // bit field containing information about the font
|
|
|
'italic', 'underscore', 'negative', 'outlined', 'strikeout',
|
|
|
'bold', 'regular', 'useTypoMetrics', 'wws', 'oblique'
|
|
|
]),
|
|
|
usFirstCharIndex: r.uint16, // The minimum Unicode index in this font
|
|
|
usLastCharIndex: r.uint16 // The maximum Unicode index in this font
|
|
|
},
|
|
|
|
|
|
// The Apple version of this table ends here, but the Microsoft one continues on...
|
|
|
0: {},
|
|
|
|
|
|
1: {
|
|
|
typoAscender: r.int16,
|
|
|
typoDescender: r.int16,
|
|
|
typoLineGap: r.int16,
|
|
|
winAscent: r.uint16,
|
|
|
winDescent: r.uint16,
|
|
|
codePageRange: new r.Array(r.uint32, 2)
|
|
|
},
|
|
|
|
|
|
2: {
|
|
|
// these should be common with version 1 somehow
|
|
|
typoAscender: r.int16,
|
|
|
typoDescender: r.int16,
|
|
|
typoLineGap: r.int16,
|
|
|
winAscent: r.uint16,
|
|
|
winDescent: r.uint16,
|
|
|
codePageRange: new r.Array(r.uint32, 2),
|
|
|
|
|
|
xHeight: r.int16,
|
|
|
capHeight: r.int16,
|
|
|
defaultChar: r.uint16,
|
|
|
breakChar: r.uint16,
|
|
|
maxContent: r.uint16
|
|
|
},
|
|
|
|
|
|
5: {
|
|
|
typoAscender: r.int16,
|
|
|
typoDescender: r.int16,
|
|
|
typoLineGap: r.int16,
|
|
|
winAscent: r.uint16,
|
|
|
winDescent: r.uint16,
|
|
|
codePageRange: new r.Array(r.uint32, 2),
|
|
|
|
|
|
xHeight: r.int16,
|
|
|
capHeight: r.int16,
|
|
|
defaultChar: r.uint16,
|
|
|
breakChar: r.uint16,
|
|
|
maxContent: r.uint16,
|
|
|
|
|
|
usLowerOpticalPointSize: r.uint16,
|
|
|
usUpperOpticalPointSize: r.uint16
|
|
|
}
|
|
|
});
|
|
|
|
|
|
let versions = OS2.versions;
|
|
|
versions[3] = versions[4] = versions[2];
|
|
|
|
|
|
export default OS2;
|
|
|
|