diff options
author | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-14 10:07:01 +0100 |
---|---|---|
committer | wolfbeast <mcwerewolf@wolfbeast.com> | 2019-11-14 10:07:01 +0100 |
commit | 0f8691a48869932cd3de5195f5211c25e4691b21 (patch) | |
tree | 829675d64c457be0b447dfbcf9534cc22f83d392 /gfx/ots/src/vhea.cc | |
parent | 36975f3865948f3faa959fe386e58b22783bd379 (diff) | |
download | UXP-0f8691a48869932cd3de5195f5211c25e4691b21.tar UXP-0f8691a48869932cd3de5195f5211c25e4691b21.tar.gz UXP-0f8691a48869932cd3de5195f5211c25e4691b21.tar.lz UXP-0f8691a48869932cd3de5195f5211c25e4691b21.tar.xz UXP-0f8691a48869932cd3de5195f5211c25e4691b21.zip |
Issue #1288 - Part 4: Update the OpenType Sanitizer component to 8.0.0
Diffstat (limited to 'gfx/ots/src/vhea.cc')
-rw-r--r-- | gfx/ots/src/vhea.cc | 49 |
1 files changed, 14 insertions, 35 deletions
diff --git a/gfx/ots/src/vhea.cc b/gfx/ots/src/vhea.cc index e721b971e..e44bedf20 100644 --- a/gfx/ots/src/vhea.cc +++ b/gfx/ots/src/vhea.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// 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. @@ -10,51 +10,30 @@ // vhea - Vertical Header Table // http://www.microsoft.com/typography/otspec/vhea.htm -#define TABLE_NAME "vhea" - namespace ots { -bool ots_vhea_parse(Font *font, const uint8_t *data, size_t length) { +bool OpenTypeVHEA::Parse(const uint8_t *data, size_t length) { Buffer table(data, length); - OpenTypeVHEA *vhea = new OpenTypeVHEA; - font->vhea = vhea; - if (!table.ReadU32(&vhea->header.version)) { - return OTS_FAILURE_MSG("Failed to read version"); - } - if (vhea->header.version != 0x00010000 && - vhea->header.version != 0x00011000) { - return OTS_FAILURE_MSG("Bad vhea version %x", vhea->header.version); + if (!table.ReadU32(&this->version)) { + return Error("Failed to read version"); } - - if (!ParseMetricsHeader(font, &table, &vhea->header)) { - return OTS_FAILURE_MSG("Failed to parse metrics in vhea"); + if (this->version != 0x00010000 && + this->version != 0x00011000) { + return Error("Unsupported table version: 0x%x", this->version); } - return true; + return OpenTypeMetricsHeader::Parse(data, length); } -bool ots_vhea_should_serialise(Font *font) { - // vhea should'nt serialise when vmtx doesn't exist. - return font->vhea != NULL && font->vmtx != NULL; +bool OpenTypeVHEA::Serialize(OTSStream *out) { + return OpenTypeMetricsHeader::Serialize(out); } -bool ots_vhea_serialise(OTSStream *out, Font *font) { - if (!SerialiseMetricsHeader(font, out, &font->vhea->header)) { - return OTS_FAILURE_MSG("Failed to write vhea metrics"); - } - return true; -} - -void ots_vhea_reuse(Font *font, Font *other) { - font->vhea = other->vhea; - font->vhea_reused = true; -} - -void ots_vhea_free(Font *font) { - delete font->vhea; +bool OpenTypeVHEA::ShouldSerialize() { + return OpenTypeMetricsHeader::ShouldSerialize() && + // vhea shouldn't serialise when vmtx doesn't exist. + GetFont()->GetTable(OTS_TAG_VMTX) != NULL; } } // namespace ots - -#undef TABLE_NAME |