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/cvt.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/cvt.cc')
-rw-r--r-- | gfx/ots/src/cvt.cc | 47 |
1 files changed, 14 insertions, 33 deletions
diff --git a/gfx/ots/src/cvt.cc b/gfx/ots/src/cvt.cc index 1402e7c06..2e0257889 100644 --- a/gfx/ots/src/cvt.cc +++ b/gfx/ots/src/cvt.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. @@ -7,59 +7,40 @@ // cvt - Control Value Table // http://www.microsoft.com/typography/otspec/cvt.htm -#define TABLE_NAME "cvt" - namespace ots { -bool ots_cvt_parse(Font *font, const uint8_t *data, size_t length) { +bool OpenTypeCVT::Parse(const uint8_t *data, size_t length) { Buffer table(data, length); - OpenTypeCVT *cvt = new OpenTypeCVT; - font->cvt = cvt; - if (length >= 128 * 1024u) { - return OTS_FAILURE_MSG("Length (%d) > 120K"); // almost all cvt tables are less than 4k bytes. + return Error("Length (%d) > 120K"); // almost all cvt tables are less than 4k bytes. } if (length % 2 != 0) { - return OTS_FAILURE_MSG("Uneven cvt length (%d)", length); + return Error("Uneven table length (%d)", length); } if (!table.Skip(length)) { - return OTS_FAILURE_MSG("Length too high"); + return Error("Table length too high"); } - cvt->data = data; - cvt->length = length; + this->data = data; + this->length = length; return true; } -bool ots_cvt_should_serialise(Font *font) { - if (!font->glyf) { - return false; // this table is not for CFF fonts. - } - return font->cvt != NULL; -} - -bool ots_cvt_serialise(OTSStream *out, Font *font) { - const OpenTypeCVT *cvt = font->cvt; - - if (!out->Write(cvt->data, cvt->length)) { - return OTS_FAILURE_MSG("Failed to write CVT table"); +bool OpenTypeCVT::Serialize(OTSStream *out) { + if (!out->Write(this->data, this->length)) { + return Error("Failed to write cvt table"); } return true; } -void ots_cvt_reuse(Font *font, Font *other) { - font->cvt = other->cvt; - font->cvt_reused = true; -} - -void ots_cvt_free(Font *font) { - delete font->cvt; +bool OpenTypeCVT::ShouldSerialize() { + return Table::ShouldSerialize() && + // this table is not for CFF fonts. + GetFont()->GetTable(OTS_TAG_GLYF) != NULL; } } // namespace ots - -#undef TABLE_NAME |