| #ifndef RiveFont_DEFINED |
| #define RiveFont_DEFINED |
| |
| #include "include/core/SkData.h" |
| #include "include/core/SkPath.h" |
| #include "include/core/SkTypeface.h" |
| #include <vector> |
| |
| class RiveFont { |
| struct Pair { |
| uint16_t fChar; |
| uint16_t fGlyph; |
| }; |
| std::vector<Pair> fCMap; |
| |
| struct Glyph { |
| SkPath fPath; |
| float fAdvance; |
| }; |
| std::vector<Glyph> fGlyphs; |
| |
| public: |
| uint16_t charToGlyph(SkUnichar) const; |
| float advance(uint16_t glyph) const; |
| const SkPath* path(uint16_t glyph) const; |
| |
| void clear() { |
| fCMap.clear(); |
| fGlyphs.clear(); |
| } |
| |
| void load(sk_sp<SkTypeface>, const char text[], size_t length); |
| |
| sk_sp<SkData> encode() const; |
| bool decode(const void*, size_t); |
| }; |
| |
| #endif |