Call hb_font_set_variation if font variations are provided.
Test: None Change-Id: I203d9ba7e1a1fcfdb10cd6a711d9a35136cbddd6
This commit is contained in:
@@ -126,6 +126,8 @@ public:
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual const std::vector<minikin::FontVariation>& GetAxes() const = 0;
|
||||
|
||||
virtual MinikinFont* createFontWithVariation(const std::vector<FontVariation>&) const {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
@@ -50,6 +50,10 @@ public:
|
||||
|
||||
const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy);
|
||||
|
||||
const std::vector<minikin::FontVariation>& GetAxes() const {
|
||||
return mAxes;
|
||||
}
|
||||
|
||||
// TODO: provide access to raw data, as an optimization.
|
||||
|
||||
// Not a virtual method, as the protocol to access rendered
|
||||
@@ -63,6 +67,7 @@ public:
|
||||
private:
|
||||
FT_Face mTypeface;
|
||||
static int32_t sIdCounter;
|
||||
std::vector<minikin::FontVariation> mAxes;
|
||||
};
|
||||
|
||||
} // namespace minikin
|
||||
|
||||
@@ -117,6 +117,11 @@ hb_font_t* getHbFontLocked(MinikinFont* minikinFont) {
|
||||
hb_font_set_scale(parent_font, upem, upem);
|
||||
|
||||
font = hb_font_create_sub_font(parent_font);
|
||||
std::vector<hb_variation_t> variations;
|
||||
for (const FontVariation& variation : minikinFont->GetAxes()) {
|
||||
variations.push_back({variation.axisTag, variation.value});
|
||||
}
|
||||
hb_font_set_variations(font, variations.data(), variations.size());
|
||||
hb_font_destroy(parent_font);
|
||||
hb_face_destroy(face);
|
||||
fontCache->put(fontId, font);
|
||||
|
||||
@@ -26,12 +26,15 @@ public:
|
||||
const MinikinPaint& paint) const;
|
||||
|
||||
const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy);
|
||||
const std::vector<minikin::FontVariation>& GetAxes() const {
|
||||
return mAxes;
|
||||
}
|
||||
|
||||
SkTypeface *GetSkTypeface();
|
||||
|
||||
private:
|
||||
sk_sp<SkTypeface> mTypeface;
|
||||
|
||||
std::vector<minikin::FontVariation> mAxes;
|
||||
};
|
||||
|
||||
} // namespace minikin
|
||||
|
||||
@@ -38,11 +38,11 @@ public:
|
||||
const MinikinPaint& paint) const;
|
||||
|
||||
const std::string& fontPath() const { return mFontPath; }
|
||||
const std::vector<FontVariation>& variations() const { return mVariations; }
|
||||
|
||||
const void* GetFontData() const { return mFontData; }
|
||||
size_t GetFontSize() const { return mFontSize; }
|
||||
int GetFontIndex() const { return mFontIndex; }
|
||||
const std::vector<minikin::FontVariation>& GetAxes() const { return mVariations; }
|
||||
MinikinFont* createFontWithVariation(const std::vector<FontVariation>& variations) const;
|
||||
private:
|
||||
MinikinFontForTest() = delete;
|
||||
|
||||
Reference in New Issue
Block a user