parseOS2Table function

dynamic parseOS2Table(
  1. dynamic data,
  2. dynamic start
)

Implementation

parseOS2Table(data, start) {
    var os2 = {};
    var p = new Parser(data, start);
    os2["version"] = p.parseUShort();
    os2["xAvgCharWidth"] = p.parseShort();
    os2["usWeightClass"] = p.parseUShort();
    os2["usWidthClass"] = p.parseUShort();
    os2["fsType"] = p.parseUShort();
    os2["ySubscriptXSize"] = p.parseShort();
    os2["ySubscriptYSize"] = p.parseShort();
    os2["ySubscriptXOffset"] = p.parseShort();
    os2["ySubscriptYOffset"] = p.parseShort();
    os2["ySuperscriptXSize"] = p.parseShort();
    os2["ySuperscriptYSize"] = p.parseShort();
    os2["ySuperscriptXOffset"] = p.parseShort();
    os2["ySuperscriptYOffset"] = p.parseShort();
    os2["yStrikeoutSize"] = p.parseShort();
    os2["yStrikeoutPosition"] = p.parseShort();
    os2["sFamilyClass"] = p.parseShort();
    os2["panose"] = [];
    for (var i = 0; i < 10; i++) {
        os2["panose"].add( p.parseByte() );
    }

    os2["ulUnicodeRange1"] = p.parseULong();
    os2["ulUnicodeRange2"] = p.parseULong();
    os2["ulUnicodeRange3"] = p.parseULong();
    os2["ulUnicodeRange4"] = p.parseULong();
    os2["achVendID"] = String.fromCharCodes([p.parseByte(), p.parseByte(), p.parseByte(), p.parseByte()]);
    os2["fsSelection"] = p.parseUShort();
    os2["usFirstCharIndex"] = p.parseUShort();
    os2["usLastCharIndex"] = p.parseUShort();
    os2["sTypoAscender"] = p.parseShort();
    os2["sTypoDescender"] = p.parseShort();
    os2["sTypoLineGap"] = p.parseShort();
    os2["usWinAscent"] = p.parseUShort();
    os2["usWinDescent"] = p.parseUShort();
    if (os2["version"] >= 1) {
        os2["ulCodePageRange1"] = p.parseULong();
        os2["ulCodePageRange2"] = p.parseULong();
    }

    if (os2["version"] >= 2) {
        os2["sxHeight"] = p.parseShort();
        os2["sCapHeight"] = p.parseShort();
        os2["usDefaultChar"] = p.parseUShort();
        os2["usBreakChar"] = p.parseUShort();
        os2["usMaxContent"] = p.parseUShort();
    }

    return os2;
}