blob: 52069bdbea53a2acb9400f5ba3ff2c190819d948 [file] [log] [blame]
#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