Line | Count | Source |
1 | | // Copyright (c) 2009-2017 The OTS 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. |
4 | | |
5 | | #ifndef OTS_VDMX_H_ |
6 | | #define OTS_VDMX_H_ |
7 | | |
8 | | #include <vector> |
9 | | |
10 | | #include "ots.h" |
11 | | |
12 | | namespace ots { |
13 | | |
14 | | struct OpenTypeVDMXRatioRecord { |
15 | | uint8_t charset; |
16 | | uint8_t x_ratio; |
17 | | uint8_t y_start_ratio; |
18 | | uint8_t y_end_ratio; |
19 | | }; |
20 | | |
21 | | struct OpenTypeVDMXVTable { |
22 | | uint16_t y_pel_height; |
23 | | int16_t y_max; |
24 | | int16_t y_min; |
25 | | }; |
26 | | |
27 | | struct OpenTypeVDMXGroup { |
28 | | uint16_t recs; |
29 | | uint8_t startsz; |
30 | | uint8_t endsz; |
31 | | std::vector<OpenTypeVDMXVTable> entries; |
32 | | }; |
33 | | |
34 | | class OpenTypeVDMX : public Table { |
35 | | public: |
36 | | explicit OpenTypeVDMX(Font *font, uint32_t tag) |
37 | 1.86k | : Table(font, tag, tag) { } |
38 | | |
39 | | bool Parse(const uint8_t *data, size_t length); |
40 | | bool Serialize(OTSStream *out); |
41 | | bool ShouldSerialize(); |
42 | | |
43 | | private: |
44 | | uint16_t version; |
45 | | uint16_t num_recs; |
46 | | uint16_t num_ratios; |
47 | | std::vector<OpenTypeVDMXRatioRecord> rat_ranges; |
48 | | std::vector<uint16_t> offsets; |
49 | | std::vector<OpenTypeVDMXGroup> groups; |
50 | | }; |
51 | | |
52 | | } // namespace ots |
53 | | |
54 | | #endif // OTS_VDMX_H_ |