Merge "Use VariationPosition instead of Axis."
This commit is contained in:
@@ -125,22 +125,22 @@ const std::vector<minikin::FontVariation>& MinikinFontSkia::GetAxes() const {
|
||||
|
||||
std::shared_ptr<minikin::MinikinFont> MinikinFontSkia::createFontWithVariation(
|
||||
const std::vector<minikin::FontVariation>& variations) const {
|
||||
SkFontArguments params;
|
||||
SkFontArguments args;
|
||||
|
||||
int ttcIndex;
|
||||
std::unique_ptr<SkStreamAsset> stream(mTypeface->openStream(&ttcIndex));
|
||||
LOG_ALWAYS_FATAL_IF(stream == nullptr, "openStream failed");
|
||||
|
||||
params.setCollectionIndex(ttcIndex);
|
||||
std::vector<SkFontArguments::Axis> skAxes;
|
||||
skAxes.resize(variations.size());
|
||||
args.setCollectionIndex(ttcIndex);
|
||||
std::vector<SkFontArguments::VariationPosition::Coordinate> 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<int>(skVariation.size())});
|
||||
sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(stream), params));
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(stream), args));
|
||||
|
||||
return std::make_shared<MinikinFontSkia>(std::move(face), mFontData, mFontSize, mFilePath,
|
||||
ttcIndex, variations);
|
||||
|
||||
@@ -104,21 +104,21 @@ static jlong FontFamily_getFamilyReleaseFunc(CRITICAL_JNI_PARAMS) {
|
||||
|
||||
static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp<SkData>&& data, int ttcIndex,
|
||||
jint weight, jint italic) {
|
||||
FatVector<SkFontArguments::Axis, 2> skiaAxes;
|
||||
FatVector<SkFontArguments::VariationPosition::Coordinate, 2> 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<SkStreamAsset> 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<int>(skVariation.size())});
|
||||
|
||||
sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(fontData), params));
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(fontData), args));
|
||||
if (face == NULL) {
|
||||
ALOGE("addFont failed to create font, invalid request");
|
||||
builder->axes.clear();
|
||||
|
||||
@@ -93,19 +93,19 @@ static jlong Font_Builder_build(JNIEnv* env, jobject clazz, jlong builderPtr, jo
|
||||
sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize,
|
||||
release_global_ref, reinterpret_cast<void*>(fontRef)));
|
||||
|
||||
FatVector<SkFontArguments::Axis, 2> skiaAxes;
|
||||
FatVector<SkFontArguments::VariationPosition::Coordinate, 2> 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<SkStreamAsset> 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<int>(skVariation.size())});
|
||||
|
||||
sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(fontData), params));
|
||||
sk_sp<SkTypeface> face(fm->makeFromStream(std::move(fontData), args));
|
||||
if (face == nullptr) {
|
||||
jniThrowException(env, "java/lang/IllegalArgumentException",
|
||||
"Failed to create internal object. maybe invalid font data.");
|
||||
|
||||
Reference in New Issue
Block a user