Roll src/third_party/WebKit 06cb9e9:a978ee5 (svn 202558:202559)
[chromium-blink-merge.git] / third_party / ots / src / layout.h
blobd195646d41904d3bb884aa67fe5ae019ef696a03
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.
5 #ifndef OTS_LAYOUT_H_
6 #define OTS_LAYOUT_H_
8 #include "ots.h"
10 // Utility functions for OpenType layout common table formats.
11 // http://www.microsoft.com/typography/otspec/chapter2.htm
13 namespace ots {
16 struct LookupSubtableParser {
17 struct TypeParser {
18 uint16_t type;
19 bool (*parse)(const Font *font, const uint8_t *data,
20 const size_t length);
22 size_t num_types;
23 uint16_t extension_type;
24 const TypeParser *parsers;
26 bool Parse(const Font *font, const uint8_t *data,
27 const size_t length, const uint16_t lookup_type) const;
30 bool ParseScriptListTable(const ots::Font *font,
31 const uint8_t *data, const size_t length,
32 const uint16_t num_features);
34 bool ParseFeatureListTable(const ots::Font *font,
35 const uint8_t *data, const size_t length,
36 const uint16_t num_lookups,
37 uint16_t *num_features);
39 bool ParseLookupListTable(Font *font, const uint8_t *data,
40 const size_t length,
41 const LookupSubtableParser* parser,
42 uint16_t* num_lookups);
44 bool ParseClassDefTable(const ots::Font *font,
45 const uint8_t *data, size_t length,
46 const uint16_t num_glyphs,
47 const uint16_t num_classes);
49 bool ParseCoverageTable(const ots::Font *font,
50 const uint8_t *data, size_t length,
51 const uint16_t num_glyphs,
52 const uint16_t expected_num_glyphs = 0);
54 bool ParseDeviceTable(const ots::Font *font,
55 const uint8_t *data, size_t length);
57 // Parser for 'Contextual' subtable shared by GSUB/GPOS tables.
58 bool ParseContextSubtable(const ots::Font *font,
59 const uint8_t *data, const size_t length,
60 const uint16_t num_glyphs,
61 const uint16_t num_lookups);
63 // Parser for 'Chaining Contextual' subtable shared by GSUB/GPOS tables.
64 bool ParseChainingContextSubtable(const ots::Font *font,
65 const uint8_t *data, const size_t length,
66 const uint16_t num_glyphs,
67 const uint16_t num_lookups);
69 bool ParseExtensionSubtable(const Font *font,
70 const uint8_t *data, const size_t length,
71 const LookupSubtableParser* parser);
73 } // namespace ots
75 #endif // OTS_LAYOUT_H_