OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef OTS_LAYOUT_H_ | 5 #ifndef OTS_LAYOUT_H_ |
6 #define OTS_LAYOUT_H_ | 6 #define OTS_LAYOUT_H_ |
7 | 7 |
8 #include "ots.h" | 8 #include "ots.h" |
9 | 9 |
10 // Utility functions for OpenType layout common table formats. | 10 // Utility functions for OpenType layout common table formats. |
11 // http://www.microsoft.com/typography/otspec/chapter2.htm | 11 // http://www.microsoft.com/typography/otspec/chapter2.htm |
12 | 12 |
13 namespace ots { | 13 namespace ots { |
14 | 14 |
15 | 15 |
16 struct LookupSubtableParser { | 16 struct LookupSubtableParser { |
17 struct TypeParser { | 17 struct TypeParser { |
18 uint16_t type; | 18 uint16_t type; |
19 bool (*parse)(const OpenTypeFile *file, const uint8_t *data, | 19 bool (*parse)(const OpenTypeFile *file, const uint8_t *data, |
20 const size_t length); | 20 const size_t length); |
21 }; | 21 }; |
22 size_t num_types; | 22 size_t num_types; |
23 uint16_t extension_type; | 23 uint16_t extension_type; |
24 const TypeParser *parsers; | 24 const TypeParser *parsers; |
25 | 25 |
26 bool Parse(const OpenTypeFile *file, const uint8_t *data, | 26 bool Parse(const OpenTypeFile *file, const uint8_t *data, |
27 const size_t length, const uint16_t lookup_type) const; | 27 const size_t length, const uint16_t lookup_type) const; |
28 }; | 28 }; |
29 | 29 |
30 bool ParseScriptListTable(const uint8_t *data, const size_t length, | 30 bool ParseScriptListTable(const ots::OpenTypeFile *file, |
| 31 const uint8_t *data, const size_t length, |
31 const uint16_t num_features); | 32 const uint16_t num_features); |
32 | 33 |
33 bool ParseFeatureListTable(const uint8_t *data, const size_t length, | 34 bool ParseFeatureListTable(const ots::OpenTypeFile *file, |
| 35 const uint8_t *data, const size_t length, |
34 const uint16_t num_lookups, | 36 const uint16_t num_lookups, |
35 uint16_t *num_features); | 37 uint16_t *num_features); |
36 | 38 |
37 bool ParseLookupListTable(OpenTypeFile *file, const uint8_t *data, | 39 bool ParseLookupListTable(OpenTypeFile *file, const uint8_t *data, |
38 const size_t length, | 40 const size_t length, |
39 const LookupSubtableParser* parser, | 41 const LookupSubtableParser* parser, |
40 uint16_t* num_lookups); | 42 uint16_t* num_lookups); |
41 | 43 |
42 bool ParseClassDefTable(const uint8_t *data, size_t length, | 44 bool ParseClassDefTable(const ots::OpenTypeFile *file, |
| 45 const uint8_t *data, size_t length, |
43 const uint16_t num_glyphs, | 46 const uint16_t num_glyphs, |
44 const uint16_t num_classes); | 47 const uint16_t num_classes); |
45 | 48 |
46 bool ParseCoverageTable(const uint8_t *data, size_t length, | 49 bool ParseCoverageTable(const ots::OpenTypeFile *file, |
| 50 const uint8_t *data, size_t length, |
47 const uint16_t num_glyphs, | 51 const uint16_t num_glyphs, |
48 const uint16_t expected_num_glyphs = 0); | 52 const uint16_t expected_num_glyphs = 0); |
49 | 53 |
50 bool ParseDeviceTable(const uint8_t *data, size_t length); | 54 bool ParseDeviceTable(const ots::OpenTypeFile *file, |
| 55 const uint8_t *data, size_t length); |
51 | 56 |
52 // Parser for 'Contextual' subtable shared by GSUB/GPOS tables. | 57 // Parser for 'Contextual' subtable shared by GSUB/GPOS tables. |
53 bool ParseContextSubtable(const uint8_t *data, const size_t length, | 58 bool ParseContextSubtable(const ots::OpenTypeFile *file, |
| 59 const uint8_t *data, const size_t length, |
54 const uint16_t num_glyphs, | 60 const uint16_t num_glyphs, |
55 const uint16_t num_lookups); | 61 const uint16_t num_lookups); |
56 | 62 |
57 // Parser for 'Chaining Contextual' subtable shared by GSUB/GPOS tables. | 63 // Parser for 'Chaining Contextual' subtable shared by GSUB/GPOS tables. |
58 bool ParseChainingContextSubtable(const uint8_t *data, const size_t length, | 64 bool ParseChainingContextSubtable(const ots::OpenTypeFile *file, |
| 65 const uint8_t *data, const size_t length, |
59 const uint16_t num_glyphs, | 66 const uint16_t num_glyphs, |
60 const uint16_t num_lookups); | 67 const uint16_t num_lookups); |
61 | 68 |
62 bool ParseExtensionSubtable(const OpenTypeFile *file, | 69 bool ParseExtensionSubtable(const OpenTypeFile *file, |
63 const uint8_t *data, const size_t length, | 70 const uint8_t *data, const size_t length, |
64 const LookupSubtableParser* parser); | 71 const LookupSubtableParser* parser); |
65 | 72 |
66 } // namespace ots | 73 } // namespace ots |
67 | 74 |
68 #endif // OTS_LAYOUT_H_ | 75 #endif // OTS_LAYOUT_H_ |
69 | 76 |
OLD | NEW |