michael@0: // Copyright (c) 2011 The Chromium Authors. All rights reserved. michael@0: // Use of this source code is governed by a BSD-style license that can be michael@0: // found in the LICENSE file. michael@0: michael@0: #ifndef OTS_METRICS_H_ michael@0: #define OTS_METRICS_H_ michael@0: michael@0: #include michael@0: #include michael@0: #include michael@0: michael@0: #include "ots.h" michael@0: michael@0: namespace ots { michael@0: michael@0: struct OpenTypeMetricsHeader { michael@0: uint32_t version; michael@0: int16_t ascent; michael@0: int16_t descent; michael@0: int16_t linegap; michael@0: uint16_t adv_width_max; michael@0: int16_t min_sb1; michael@0: int16_t min_sb2; michael@0: int16_t max_extent; michael@0: int16_t caret_slope_rise; michael@0: int16_t caret_slope_run; michael@0: int16_t caret_offset; michael@0: uint16_t num_metrics; michael@0: }; michael@0: michael@0: struct OpenTypeMetricsTable { michael@0: std::vector > entries; michael@0: std::vector sbs; michael@0: }; michael@0: michael@0: bool ParseMetricsHeader(OpenTypeFile *file, Buffer *table, michael@0: OpenTypeMetricsHeader *header); michael@0: bool SerialiseMetricsHeader(const ots::OpenTypeFile *file, michael@0: OTSStream *out, michael@0: const OpenTypeMetricsHeader *header); michael@0: michael@0: bool ParseMetricsTable(const ots::OpenTypeFile *file, michael@0: Buffer *table, michael@0: const uint16_t num_glyphs, michael@0: const OpenTypeMetricsHeader *header, michael@0: OpenTypeMetricsTable *metrics); michael@0: bool SerialiseMetricsTable(const ots::OpenTypeFile *file, michael@0: OTSStream *out, michael@0: const OpenTypeMetricsTable *metrics); michael@0: michael@0: } // namespace ots michael@0: michael@0: #endif // OTS_METRICS_H_ michael@0: