diff options
Diffstat (limited to 'gfx/ots/src/hhea.cc')
-rw-r--r-- | gfx/ots/src/hhea.cc | 44 |
1 files changed, 9 insertions, 35 deletions
diff --git a/gfx/ots/src/hhea.cc b/gfx/ots/src/hhea.cc index 624287280..d024aaac4 100644 --- a/gfx/ots/src/hhea.cc +++ b/gfx/ots/src/hhea.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2009-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. @@ -10,49 +10,23 @@ // hhea - Horizontal Header // http://www.microsoft.com/typography/otspec/hhea.htm -#define TABLE_NAME "hhea" - namespace ots { -bool ots_hhea_parse(Font *font, const uint8_t *data, size_t length) { +bool OpenTypeHHEA::Parse(const uint8_t *data, size_t length) { Buffer table(data, length); - OpenTypeHHEA *hhea = new OpenTypeHHEA; - font->hhea = hhea; - if (!table.ReadU32(&hhea->header.version)) { - return OTS_FAILURE_MSG("Failed to read hhea version"); - } - if (hhea->header.version >> 16 != 1) { - return OTS_FAILURE_MSG("Bad hhea version of %d", hhea->header.version); + if (!table.ReadU32(&this->version)) { + return Error("Failed to read table version"); } - - if (!ParseMetricsHeader(font, &table, &hhea->header)) { - return OTS_FAILURE_MSG("Failed to parse horizontal metrics"); + if (this->version >> 16 != 1) { + return Error("Unsupported majorVersion: %d", this->version >> 16); } - return true; + return OpenTypeMetricsHeader::Parse(data, length); } -bool ots_hhea_should_serialise(Font *font) { - return font->hhea != NULL; -} - -bool ots_hhea_serialise(OTSStream *out, Font *font) { - if (!SerialiseMetricsHeader(font, out, &font->hhea->header)) { - return OTS_FAILURE_MSG("Failed to serialise horizontal metrics"); - } - return true; -} - -void ots_hhea_reuse(Font *font, Font *other) { - font->hhea = other->hhea; - font->hhea_reused = true; -} - -void ots_hhea_free(Font *font) { - delete font->hhea; +bool OpenTypeHHEA::Serialize(OTSStream *out) { + return OpenTypeMetricsHeader::Serialize(out); } } // namespace ots - -#undef TABLE_NAME |