提交 39654bb6 编写于 作者: S Seigo Nonaka

Call hb_font_set_variation if font variations are provided.

Test: None
Change-Id: I203d9ba7e1a1fcfdb10cd6a711d9a35136cbddd6
上级 22462be7
......@@ -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;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册