// Copyright (c) 2011 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. #ifndef OTS_METRICS_H_ #define OTS_METRICS_H_ #include #include #include #include "ots.h" namespace ots { struct OpenTypeMetricsHeader { uint32_t version; int16_t ascent; int16_t descent; int16_t linegap; uint16_t adv_width_max; int16_t min_sb1; int16_t min_sb2; int16_t max_extent; int16_t caret_slope_rise; int16_t caret_slope_run; int16_t caret_offset; uint16_t num_metrics; }; struct OpenTypeMetricsTable { std::vector > entries; std::vector sbs; }; bool ParseMetricsHeader(Font *font, Buffer *table, OpenTypeMetricsHeader *header); bool SerialiseMetricsHeader(const ots::Font *font, OTSStream *out, const OpenTypeMetricsHeader *header); bool ParseMetricsTable(const ots::Font *font, Buffer *table, const uint16_t num_glyphs, const OpenTypeMetricsHeader *header, OpenTypeMetricsTable *metrics); bool SerialiseMetricsTable(const ots::Font *font, OTSStream *out, const OpenTypeMetricsTable *metrics); } // namespace ots #endif // OTS_METRICS_H_