14dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org// Copyright (c) 2011 The Chromium Authors. All rights reserved. 24dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org// Use of this source code is governed by a BSD-style license that can be 34dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org// found in the LICENSE file. 44dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 54dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#ifndef OTS_METRICS_H_ 64dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#define OTS_METRICS_H_ 74dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 84dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#include <utility> // std::pair 94dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#include <vector> 104dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 114dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#include "ots.h" 124dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 134dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgnamespace ots { 144dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 154dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgstruct OpenTypeMetricsHeader { 164dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org uint32_t version; 174dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t ascent; 184dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t descent; 194dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t linegap; 204dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org uint16_t adv_width_max; 214dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t min_sb1; 224dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t min_sb2; 234dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t max_extent; 244dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t caret_slope_rise; 254dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t caret_slope_run; 264dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org int16_t caret_offset; 274dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org uint16_t num_metrics; 284dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org}; 294dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 304dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgstruct OpenTypeMetricsTable { 314dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org std::vector<std::pair<uint16_t, int16_t> > entries; 324dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org std::vector<int16_t> sbs; 334dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org}; 344dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 354dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgbool ParseMetricsHeader(OpenTypeFile *file, Buffer *table, 364dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org OpenTypeMetricsHeader *header); 374dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgbool SerialiseMetricsHeader(OTSStream *out, 384dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org const OpenTypeMetricsHeader *header); 394dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 404dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgbool ParseMetricsTable(Buffer *table, 414dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org const uint16_t num_glyphs, 424dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org const OpenTypeMetricsHeader *header, 434dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org OpenTypeMetricsTable *metrics); 444dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.orgbool SerialiseMetricsTable(OTSStream *out, 454dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org const OpenTypeMetricsTable *metrics); 464dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 474dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org} // namespace ots 484dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 494dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org#endif // OTS_METRICS_H_ 504dcad600f99d85201d9db3cb8bee166ec2aaca85bashi@chromium.org 51