1// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef OTS_METRICS_H_ 6#define OTS_METRICS_H_ 7 8#include <utility> // std::pair 9#include <vector> 10 11#include "ots.h" 12 13namespace ots { 14 15struct OpenTypeMetricsHeader { 16 uint32_t version; 17 int16_t ascent; 18 int16_t descent; 19 int16_t linegap; 20 uint16_t adv_width_max; 21 int16_t min_sb1; 22 int16_t min_sb2; 23 int16_t max_extent; 24 int16_t caret_slope_rise; 25 int16_t caret_slope_run; 26 int16_t caret_offset; 27 uint16_t num_metrics; 28}; 29 30struct OpenTypeMetricsTable { 31 std::vector<std::pair<uint16_t, int16_t> > entries; 32 std::vector<int16_t> sbs; 33}; 34 35bool ParseMetricsHeader(OpenTypeFile *file, Buffer *table, 36 OpenTypeMetricsHeader *header); 37bool SerialiseMetricsHeader(OTSStream *out, 38 const OpenTypeMetricsHeader *header); 39 40bool ParseMetricsTable(Buffer *table, 41 const uint16_t num_glyphs, 42 const OpenTypeMetricsHeader *header, 43 OpenTypeMetricsTable *metrics); 44bool SerialiseMetricsTable(OTSStream *out, 45 const OpenTypeMetricsTable *metrics); 46 47} // namespace ots 48 49#endif // OTS_METRICS_H_ 50 51