From 78d58fd0347dcce8556a982f54c7069020d0bcdc Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Tue, 14 Jul 2020 16:52:13 +0000 Subject: [PATCH] Use VariationPosition instead of Axis. Skia's SkFontArguments started out with an 'Axis' type to provide variation position. This is an unfortunate name as the values are actually positions on the axis (do not describe the axis itself) and the collection of them is commonly known as the variation. Skia would like to remove this long deprecated type, so move to the new interface. Change-Id: I460ca8cb938f078d25f41b4cd1dfc4db3a4e824f --- libs/hwui/hwui/MinikinSkia.cpp | 16 ++++++++-------- libs/hwui/jni/FontFamily.cpp | 12 ++++++------ libs/hwui/jni/fonts/Font.cpp | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libs/hwui/hwui/MinikinSkia.cpp b/libs/hwui/hwui/MinikinSkia.cpp index 6a12a203b9f8b..a6137b073d5a9 100644 --- a/libs/hwui/hwui/MinikinSkia.cpp +++ b/libs/hwui/hwui/MinikinSkia.cpp @@ -125,22 +125,22 @@ const std::vector& MinikinFontSkia::GetAxes() const { std::shared_ptr MinikinFontSkia::createFontWithVariation( const std::vector& variations) const { - SkFontArguments params; + SkFontArguments args; int ttcIndex; std::unique_ptr stream(mTypeface->openStream(&ttcIndex)); LOG_ALWAYS_FATAL_IF(stream == nullptr, "openStream failed"); - params.setCollectionIndex(ttcIndex); - std::vector skAxes; - skAxes.resize(variations.size()); + args.setCollectionIndex(ttcIndex); + std::vector skVariation; + skVariation.resize(variations.size()); for (size_t i = 0; i < variations.size(); i++) { - skAxes[i].fTag = variations[i].axisTag; - skAxes[i].fStyleValue = SkFloatToScalar(variations[i].value); + skVariation[i].axis = variations[i].axisTag; + skVariation[i].value = SkFloatToScalar(variations[i].value); } - params.setAxes(skAxes.data(), skAxes.size()); + args.setVariationDesignPosition({skVariation.data(), static_cast(skVariation.size())}); sk_sp fm(SkFontMgr::RefDefault()); - sk_sp face(fm->makeFromStream(std::move(stream), params)); + sk_sp face(fm->makeFromStream(std::move(stream), args)); return std::make_shared(std::move(face), mFontData, mFontSize, mFilePath, ttcIndex, variations); diff --git a/libs/hwui/jni/FontFamily.cpp b/libs/hwui/jni/FontFamily.cpp index a2fef1e19328f..68eaa0a3ca54f 100644 --- a/libs/hwui/jni/FontFamily.cpp +++ b/libs/hwui/jni/FontFamily.cpp @@ -104,21 +104,21 @@ static jlong FontFamily_getFamilyReleaseFunc(CRITICAL_JNI_PARAMS) { static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp&& data, int ttcIndex, jint weight, jint italic) { - FatVector skiaAxes; + FatVector skVariation; for (const auto& axis : builder->axes) { - skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value}); + skVariation.push_back({axis.axisTag, axis.value}); } const size_t fontSize = data->size(); const void* fontPtr = data->data(); std::unique_ptr fontData(new SkMemoryStream(std::move(data))); - SkFontArguments params; - params.setCollectionIndex(ttcIndex); - params.setAxes(skiaAxes.data(), skiaAxes.size()); + SkFontArguments args; + args.setCollectionIndex(ttcIndex); + args.setVariationDesignPosition({skVariation.data(), static_cast(skVariation.size())}); sk_sp fm(SkFontMgr::RefDefault()); - sk_sp face(fm->makeFromStream(std::move(fontData), params)); + sk_sp face(fm->makeFromStream(std::move(fontData), args)); if (face == NULL) { ALOGE("addFont failed to create font, invalid request"); builder->axes.clear(); diff --git a/libs/hwui/jni/fonts/Font.cpp b/libs/hwui/jni/fonts/Font.cpp index 5714cd1d03902..996cdceed8a7e 100644 --- a/libs/hwui/jni/fonts/Font.cpp +++ b/libs/hwui/jni/fonts/Font.cpp @@ -93,19 +93,19 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo sk_sp data(SkData::MakeWithProc(fontPtr, fontSize, release_global_ref, reinterpret_cast(fontRef))); - FatVector skiaAxes; + FatVector skVariation; for (const auto& axis : builder->axes) { - skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value}); + skVariation.push_back({axis.axisTag, axis.value}); } std::unique_ptr fontData(new SkMemoryStream(std::move(data))); - SkFontArguments params; - params.setCollectionIndex(ttcIndex); - params.setAxes(skiaAxes.data(), skiaAxes.size()); + SkFontArguments args; + args.setCollectionIndex(ttcIndex); + args.setVariationDesignPosition({skVariation.data(), static_cast(skVariation.size())}); sk_sp fm(SkFontMgr::RefDefault()); - sk_sp face(fm->makeFromStream(std::move(fontData), params)); + sk_sp face(fm->makeFromStream(std::move(fontData), args)); if (face == nullptr) { jniThrowException(env, "java/lang/IllegalArgumentException", "Failed to create internal object. maybe invalid font data.");