1f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// Copyright (c) 2009 The Chromium Authors. All rights reserved.
2f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// Use of this source code is governed by a BSD-style license that can be
3f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// found in the LICENSE file.
4f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
5f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org#ifndef OTS_KERN_H_
6f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org#define OTS_KERN_H_
7f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
8f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org#include <vector>
9f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
10f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org#include "ots.h"
11f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
12f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.orgnamespace ots {
13f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
14f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.orgstruct OpenTypeKERNFormat0Pair {
15f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t left;
16f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t right;
17f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  int16_t value;
18f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org};
19f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
20f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.orgstruct OpenTypeKERNFormat0 {
21f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t version;
22f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t coverage;
23f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t search_range;
24f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t entry_selector;
25f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t range_shift;
26f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  std::vector<OpenTypeKERNFormat0Pair> pairs;
27f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org};
28f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
29f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// Format 2 is not supported. Since the format is not supported by Windows,
30f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// WebFonts unlikely use it. I've checked thousands of proprietary fonts and
31f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org// free fonts, and found no font uses the format.
32f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
33f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.orgstruct OpenTypeKERN {
34f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  uint16_t version;
35f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org  std::vector<OpenTypeKERNFormat0> subtables;
36f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org};
37f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
38f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org}  // namespace ots
39f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org
40f12575f6e5a4b053188d4e205ae6ceb95a60fb2cyusukes@chromium.org#endif  // OTS_KERN_H_
41