| // 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); |
| } |
| |
| bool OpenTypeVHEA::Serialize(OTSStream *out) { |
| return OpenTypeMetricsHeader::Serialize(out); |
| } |
| |
| bool OpenTypeVHEA::ShouldSerialize() { |
| return OpenTypeMetricsHeader::ShouldSerialize() && |
| // vhea shouldn't serialise when vmtx doesn't exist. |
| GetFont()->GetTable(OTS_TAG_VMTX) != NULL; |
| } |
| |
| } // namespace ots |