diff options
| -rw-r--r-- | libs/hwui/hwui/MinikinSkia.cpp | 17 | ||||
| -rw-r--r-- | libs/hwui/hwui/MinikinSkia.h | 2 |
2 files changed, 19 insertions, 0 deletions
diff --git a/libs/hwui/hwui/MinikinSkia.cpp b/libs/hwui/hwui/MinikinSkia.cpp index f172473d1652..a52abfc9888a 100644 --- a/libs/hwui/hwui/MinikinSkia.cpp +++ b/libs/hwui/hwui/MinikinSkia.cpp @@ -65,6 +65,23 @@ void MinikinFontSkia::GetBounds(minikin::MinikinRect* bounds, uint32_t glyph_id, bounds->mBottom = skBounds.fBottom; } +const void* MinikinFontSkia::GetTable(uint32_t tag, size_t* size, + minikin::MinikinDestroyFunc* destroy) { + // we don't have a buffer to the font data, copy to own buffer + const size_t tableSize = mTypeface->getTableSize(tag); + *size = tableSize; + if (tableSize == 0) { + return nullptr; + } + void* buf = malloc(tableSize); + if (buf == nullptr) { + return nullptr; + } + mTypeface->getTableData(tag, 0, tableSize, buf); + *destroy = free; + return buf; +} + SkTypeface *MinikinFontSkia::GetSkTypeface() const { return mTypeface.get(); } diff --git a/libs/hwui/hwui/MinikinSkia.h b/libs/hwui/hwui/MinikinSkia.h index 3ee916c6e8b1..1ea99fd899a9 100644 --- a/libs/hwui/hwui/MinikinSkia.h +++ b/libs/hwui/hwui/MinikinSkia.h @@ -37,6 +37,8 @@ public: void GetBounds(minikin::MinikinRect* bounds, uint32_t glyph_id, const minikin::MinikinPaint &paint) const; + const void* GetTable(uint32_t tag, size_t* size, minikin::MinikinDestroyFunc* destroy); + SkTypeface* GetSkTypeface() const; sk_sp<SkTypeface> RefSkTypeface() const; |