// Copyright (c) 2011-2017 The OTS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "vhea.h"

#include "head.h"
#include "maxp.h"

// vhea - Vertical Header Table
// http://www.microsoft.com/typography/otspec/vhea.htm

namespace ots {

bool OpenTypeVHEA::Parse(const uint8_t *data, size_t length) {
  Buffer table(data, length);

  if (!table.ReadU32(&this->version)) {
    return Error("Failed to read version");
  }
  if (this->version != 0x00010000 &&
      this->version != 0x00011000) {
    return Error("Unsupported table version: 0x%x", this->version);
  }

  return OpenTypeMetricsHeader::Parse(data, length);
}

}  // namespace ots
