| // Copyright (c) 2014-2017 The OTS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef OTS_MATH_H_ |
| #define OTS_MATH_H_ |
| |
| #include "ots.h" |
| |
| namespace ots { |
| |
| class OpenTypeMATH : public Table { |
| public: |
| explicit OpenTypeMATH(Font *font, uint32_t tag) |
| : Table(font, tag, tag), |
| m_data(NULL), |
| m_length(0) { } |
| |
| bool Parse(const uint8_t *data, size_t length); |
| bool Serialize(OTSStream *out); |
| bool ShouldSerialize(); |
| |
| private: |
| bool ParseMathValueRecord(ots::Buffer* subtable, |
| const uint8_t *data, |
| const size_t length); |
| bool ParseMathConstantsTable(const uint8_t *data, size_t length); |
| bool ParseMathValueRecordSequenceForGlyphs(ots::Buffer* subtable, |
| const uint8_t *data, |
| const size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathItalicsCorrectionInfoTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathTopAccentAttachmentTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathKernTable(const uint8_t *data, size_t length); |
| bool ParseMathKernInfoTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathGlyphInfoTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseGlyphAssemblyTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathGlyphConstructionTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| bool ParseMathGlyphConstructionSequence(ots::Buffer* subtable, |
| const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs, |
| uint16_t offset_coverage, |
| uint16_t glyph_count, |
| const unsigned sequence_end); |
| bool ParseMathVariantsTable(const uint8_t *data, |
| size_t length, |
| const uint16_t num_glyphs); |
| |
| const uint8_t *m_data; |
| size_t m_length; |
| }; |
| |
| } // namespace ots |
| |
| #endif |
| |