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.
10 // Utility functions for OpenType layout common table formats.
11 // http://www.microsoft.com/typography/otspec/chapter2.htm
16 struct LookupSubtableParser
{
19 bool (*parse
)(const Font
*font
, const uint8_t *data
,
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
,
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
);
75 #endif // OTS_LAYOUT_H_