| // Copyright (c) 2009 The Chromium 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 "hhea.h" |
| |
| #include "head.h" |
| #include "maxp.h" |
| |
| // hhea - Horizontal Header |
| // http://www.microsoft.com/opentype/otspec/hhea.htm |
| |
| namespace ots { |
| |
| bool ots_hhea_parse(OpenTypeFile *file, const uint8_t *data, size_t length) { |
| Buffer table(data, length); |
| OpenTypeHHEA *hhea = new OpenTypeHHEA; |
| file->hhea = hhea; |
| |
| if (!table.ReadU32(&hhea->header.version)) { |
| return OTS_FAILURE(); |
| } |
| if (hhea->header.version >> 16 != 1) { |
| return OTS_FAILURE(); |
| } |
| |
| if (!ParseMetricsHeader(file, &table, &hhea->header)) { |
| return OTS_FAILURE(); |
| } |
| |
| return true; |
| } |
| |
| bool ots_hhea_should_serialise(OpenTypeFile *file) { |
| return file->hhea != NULL; |
| } |
| |
| bool ots_hhea_serialise(OTSStream *out, OpenTypeFile *file) { |
| if (!SerialiseMetricsHeader(out, &file->hhea->header)) { |
| return OTS_FAILURE(); |
| } |
| return true; |
| } |
| |
| void ots_hhea_free(OpenTypeFile *file) { |
| delete file->hhea; |
| } |
| |
| } // namespace ots |