| Index: third_party/woff2/src/glyph.h
|
| diff --git a/third_party/woff2/src/glyph.h b/third_party/woff2/src/glyph.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0ee755c2f5af0d67687f55fbf8b72d08633487d2
|
| --- /dev/null
|
| +++ b/third_party/woff2/src/glyph.h
|
| @@ -0,0 +1,71 @@
|
| +// Copyright 2013 Google Inc. All Rights Reserved.
|
| +//
|
| +// Licensed under the Apache License, Version 2.0 (the "License");
|
| +// you may not use this file except in compliance with the License.
|
| +// You may obtain a copy of the License at
|
| +//
|
| +// http://www.apache.org/licenses/LICENSE-2.0
|
| +//
|
| +// Unless required by applicable law or agreed to in writing, software
|
| +// distributed under the License is distributed on an "AS IS" BASIS,
|
| +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| +// See the License for the specific language governing permissions and
|
| +// limitations under the License.
|
| +//
|
| +// Data model and I/O for glyph data within sfnt format files for the purpose of
|
| +// performing the preprocessing step of the WOFF 2.0 conversion.
|
| +
|
| +#ifndef WOFF2_GLYPH_H_
|
| +#define WOFF2_GLYPH_H_
|
| +
|
| +#include <stddef.h>
|
| +#include <inttypes.h>
|
| +#include <vector>
|
| +
|
| +namespace woff2 {
|
| +
|
| +// Represents a parsed simple or composite glyph. The composite glyph data and
|
| +// instructions are un-parsed and we keep only pointers to the raw data,
|
| +// therefore the glyph is valid only so long the data from which it was parsed
|
| +// is around.
|
| +class Glyph {
|
| + public:
|
| + Glyph() : instructions_size(0), composite_data_size(0) {}
|
| +
|
| + // Bounding box.
|
| + int16_t x_min;
|
| + int16_t x_max;
|
| + int16_t y_min;
|
| + int16_t y_max;
|
| +
|
| + // Instructions.
|
| + uint16_t instructions_size;
|
| + const uint8_t* instructions_data;
|
| +
|
| + // Data model for simple glyphs.
|
| + struct Point {
|
| + int x;
|
| + int y;
|
| + bool on_curve;
|
| + };
|
| + std::vector<std::vector<Point> > contours;
|
| +
|
| + // Data for composite glyphs.
|
| + const uint8_t* composite_data;
|
| + uint32_t composite_data_size;
|
| + bool have_instructions;
|
| +};
|
| +
|
| +// Parses the glyph from the given data. Returns false on parsing failure or
|
| +// buffer overflow. The glyph is valid only so long the input data pointer is
|
| +// valid.
|
| +bool ReadGlyph(const uint8_t* data, size_t len, Glyph* glyph);
|
| +
|
| +// Stores the glyph into the specified dst buffer. The *dst_size is the buffer
|
| +// size on entry and is set to the actual (unpadded) stored size on exit.
|
| +// Returns false on buffer overflow.
|
| +bool StoreGlyph(const Glyph& glyph, uint8_t* dst, size_t* dst_size);
|
| +
|
| +} // namespace woff2
|
| +
|
| +#endif // WOFF2_GLYPH_H_
|
|
|