Revert of Refactor the avatar button/icon class (patchset #14 id:320001 of https...
[chromium-blink-merge.git] / third_party / ots / src / layout.h
blob3b94589e16d07606ab94f99ecdbb67e8d68f97b9
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 OpenTypeFile *file, 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 OpenTypeFile *file, const uint8_t *data,
27 const size_t length, const uint16_t lookup_type) const;
30 bool ParseScriptListTable(const ots::OpenTypeFile *file,
31 const uint8_t *data, const size_t length,
32 const uint16_t num_features);
34 bool ParseFeatureListTable(const ots::OpenTypeFile *file,
35 const uint8_t *data, const size_t length,
36 const uint16_t num_lookups,
37 uint16_t *num_features);
39 bool ParseLookupListTable(OpenTypeFile *file, const uint8_t *data,
40 const size_t length,
41 const LookupSubtableParser* parser,
42 uint16_t* num_lookups);
44 bool ParseClassDefTable(const ots::OpenTypeFile *file,
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::OpenTypeFile *file,
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::OpenTypeFile *file,
55 const uint8_t *data, size_t length);
57 // Parser for 'Contextual' subtable shared by GSUB/GPOS tables.
58 bool ParseContextSubtable(const ots::OpenTypeFile *file,
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::OpenTypeFile *file,
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 OpenTypeFile *file,
70 const uint8_t *data, const size_t length,
71 const LookupSubtableParser* parser);
73 } // namespace ots
75 #endif // OTS_LAYOUT_H_