blob: 46559e1772a29f3297108559c8c44fae608fa92d [file] [log] [blame]
// 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 <utility> // std::pair
#include <vector>
#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<std::pair<uint16_t, int16_t> > entries;
std::vector<int16_t> sbs;
};
bool ParseMetricsHeader(OpenTypeFile *file, Buffer *table,
OpenTypeMetricsHeader *header);
bool SerialiseMetricsHeader(OTSStream *out,
const OpenTypeMetricsHeader *header);
bool ParseMetricsTable(Buffer *table,
const uint16_t num_glyphs,
const OpenTypeMetricsHeader *header,
OpenTypeMetricsTable *metrics);
bool SerialiseMetricsTable(OTSStream *out,
const OpenTypeMetricsTable *metrics);
} // namespace ots
#endif // OTS_METRICS_H_