提交 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: ...@@ -126,6 +126,8 @@ public:
return 0; return 0;
} }
virtual const std::vector<minikin::FontVariation>& GetAxes() const = 0;
virtual MinikinFont* createFontWithVariation(const std::vector<FontVariation>&) const { virtual MinikinFont* createFontWithVariation(const std::vector<FontVariation>&) const {
return nullptr; return nullptr;
} }
......
...@@ -50,6 +50,10 @@ public: ...@@ -50,6 +50,10 @@ public:
const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy); 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. // TODO: provide access to raw data, as an optimization.
// Not a virtual method, as the protocol to access rendered // Not a virtual method, as the protocol to access rendered
...@@ -63,6 +67,7 @@ public: ...@@ -63,6 +67,7 @@ public:
private: private:
FT_Face mTypeface; FT_Face mTypeface;
static int32_t sIdCounter; static int32_t sIdCounter;
std::vector<minikin::FontVariation> mAxes;
}; };
} // namespace minikin } // namespace minikin
......
...@@ -117,6 +117,11 @@ hb_font_t* getHbFontLocked(MinikinFont* minikinFont) { ...@@ -117,6 +117,11 @@ hb_font_t* getHbFontLocked(MinikinFont* minikinFont) {
hb_font_set_scale(parent_font, upem, upem); hb_font_set_scale(parent_font, upem, upem);
font = hb_font_create_sub_font(parent_font); 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_font_destroy(parent_font);
hb_face_destroy(face); hb_face_destroy(face);
fontCache->put(fontId, font); fontCache->put(fontId, font);
......
...@@ -26,12 +26,15 @@ public: ...@@ -26,12 +26,15 @@ public:
const MinikinPaint& paint) const; const MinikinPaint& paint) const;
const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy); const void* GetTable(uint32_t tag, size_t* size, MinikinDestroyFunc* destroy);
const std::vector<minikin::FontVariation>& GetAxes() const {
return mAxes;
}
SkTypeface *GetSkTypeface(); SkTypeface *GetSkTypeface();
private: private:
sk_sp<SkTypeface> mTypeface; sk_sp<SkTypeface> mTypeface;
std::vector<minikin::FontVariation> mAxes;
}; };
} // namespace minikin } // namespace minikin
...@@ -38,11 +38,11 @@ public: ...@@ -38,11 +38,11 @@ public:
const MinikinPaint& paint) const; const MinikinPaint& paint) const;
const std::string& fontPath() const { return mFontPath; } const std::string& fontPath() const { return mFontPath; }
const std::vector<FontVariation>& variations() const { return mVariations; }
const void* GetFontData() const { return mFontData; } const void* GetFontData() const { return mFontData; }
size_t GetFontSize() const { return mFontSize; } size_t GetFontSize() const { return mFontSize; }
int GetFontIndex() const { return mFontIndex; } int GetFontIndex() const { return mFontIndex; }
const std::vector<minikin::FontVariation>& GetAxes() const { return mVariations; }
MinikinFont* createFontWithVariation(const std::vector<FontVariation>& variations) const; MinikinFont* createFontWithVariation(const std::vector<FontVariation>& variations) const;
private: private:
MinikinFontForTest() = delete; MinikinFontForTest() = delete;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册