Merge "Implement getAxes() method."
This commit is contained in:
committed by
Android (Google) Code Review
commit
a231eb1410
@@ -83,7 +83,8 @@ static void FontFamily_unref(jlong familyPtr) {
|
||||
static void addSkTypeface(jlong builderPtr, sk_sp<SkTypeface> face, const void* fontData,
|
||||
size_t fontSize, int ttcIndex, jint givenWeight, jboolean givenItalic) {
|
||||
minikin::MinikinFont* minikinFont =
|
||||
new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex);
|
||||
new MinikinFontSkia(std::move(face), fontData, fontSize, ttcIndex,
|
||||
std::vector<minikin::FontVariation>());
|
||||
NativeFamilyBuilder* builder = reinterpret_cast<NativeFamilyBuilder*>(builderPtr);
|
||||
int weight = givenWeight / 100;
|
||||
bool italic = givenItalic;
|
||||
@@ -208,7 +209,8 @@ static jboolean FontFamily_addFontWeightStyle(JNIEnv* env, jobject clazz, jlong
|
||||
return false;
|
||||
}
|
||||
minikin::MinikinFont* minikinFont =
|
||||
new MinikinFontSkia(std::move(face), fontPtr, fontSize, ttcIndex);
|
||||
new MinikinFontSkia(std::move(face), fontPtr, fontSize, ttcIndex,
|
||||
std::vector<minikin::FontVariation>());
|
||||
NativeFamilyBuilder* builder = reinterpret_cast<NativeFamilyBuilder*>(builderPtr);
|
||||
builder->fonts.push_back(minikin::Font(minikinFont,
|
||||
minikin::FontStyle(weight / 100, isItalic)));
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
namespace android {
|
||||
|
||||
MinikinFontSkia::MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize,
|
||||
int ttcIndex) :
|
||||
int ttcIndex, const std::vector<minikin::FontVariation>& axes) :
|
||||
minikin::MinikinFont(typeface->uniqueID()), mTypeface(std::move(typeface)), mFontData(fontData),
|
||||
mFontSize(fontSize), mTtcIndex(ttcIndex) {
|
||||
mFontSize(fontSize), mTtcIndex(ttcIndex), mAxes(axes) {
|
||||
}
|
||||
|
||||
static void MinikinFontSkia_SetSkiaPaint(const minikin::MinikinFont* font, SkPaint* skPaint,
|
||||
@@ -87,6 +87,10 @@ int MinikinFontSkia::GetFontIndex() const {
|
||||
return mTtcIndex;
|
||||
}
|
||||
|
||||
const std::vector<minikin::FontVariation>& MinikinFontSkia::GetAxes() const {
|
||||
return mAxes;
|
||||
}
|
||||
|
||||
minikin::MinikinFont* MinikinFontSkia::createFontWithVariation(
|
||||
const std::vector<minikin::FontVariation>& variations) const {
|
||||
SkFontMgr::FontParameters params;
|
||||
@@ -106,7 +110,7 @@ minikin::MinikinFont* MinikinFontSkia::createFontWithVariation(
|
||||
sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
|
||||
sk_sp<SkTypeface> face(fm->createFromStream(stream, params));
|
||||
|
||||
return new MinikinFontSkia(std::move(face), mFontData, mFontSize, ttcIndex);
|
||||
return new MinikinFontSkia(std::move(face), mFontData, mFontSize, ttcIndex, variations);
|
||||
}
|
||||
|
||||
uint32_t MinikinFontSkia::packPaintFlags(const SkPaint* paint) {
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace android {
|
||||
class ANDROID_API MinikinFontSkia : public minikin::MinikinFont {
|
||||
public:
|
||||
explicit MinikinFontSkia(sk_sp<SkTypeface> typeface, const void* fontData, size_t fontSize,
|
||||
int ttcIndex);
|
||||
int ttcIndex, const std::vector<minikin::FontVariation>& axes);
|
||||
|
||||
float GetHorizontalAdvance(uint32_t glyph_id,
|
||||
const minikin::MinikinPaint &paint) const;
|
||||
@@ -44,6 +44,7 @@ public:
|
||||
const void* GetFontData() const;
|
||||
size_t GetFontSize() const;
|
||||
int GetFontIndex() const;
|
||||
const std::vector<minikin::FontVariation>& GetAxes() const;
|
||||
minikin::MinikinFont* createFontWithVariation(
|
||||
const std::vector<minikin::FontVariation>&) const;
|
||||
|
||||
@@ -61,6 +62,7 @@ private:
|
||||
const void* mFontData;
|
||||
size_t mFontSize;
|
||||
int mTtcIndex;
|
||||
std::vector<minikin::FontVariation> mAxes;
|
||||
};
|
||||
|
||||
} // namespace android
|
||||
|
||||
@@ -150,7 +150,8 @@ void Typeface::setRobotoTypefaceForTest() {
|
||||
sk_sp<SkTypeface> typeface = SkTypeface::MakeFromStream(fontData.release());
|
||||
LOG_ALWAYS_FATAL_IF(typeface == nullptr, "Failed to make typeface from %s", kRobotoFont);
|
||||
|
||||
minikin::MinikinFont* font = new MinikinFontSkia(std::move(typeface), data, st.st_size, 0);
|
||||
minikin::MinikinFont* font = new MinikinFontSkia(std::move(typeface), data, st.st_size, 0,
|
||||
std::vector<minikin::FontVariation>());
|
||||
minikin::FontFamily* family = new minikin::FontFamily(
|
||||
std::vector<minikin::Font>({ minikin::Font(font, minikin::FontStyle()) }));
|
||||
font->Unref();
|
||||
|
||||
Reference in New Issue
Block a user