From e346b1eea442065261c14f92b304031e1330e491 Mon Sep 17 00:00:00 2001 From: Ben Wagner Date: Tue, 26 Jun 2018 11:22:37 -0400 Subject: Add SkTypeface::getVariationDesignParameters This adds a way for users to query the axis parameters for a typeface. Change-Id: Idc2ac0d84bc7ae2ca484ae410cba5b01883418e5 Reviewed-on: https://skia-review.googlesource.com/137706 Commit-Queue: Ben Wagner Reviewed-by: Mike Reed --- tests/TypefaceTest.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) (limited to 'tests') diff --git a/tests/TypefaceTest.cpp b/tests/TypefaceTest.cpp index 757f3a5e44..cc04fa24ce 100644 --- a/tests/TypefaceTest.cpp +++ b/tests/TypefaceTest.cpp @@ -226,6 +226,43 @@ DEF_TEST(Typeface, reporter) { REPORTER_ASSERT(reporter, SkTypeface::Equal(t2.get(), nullptr)); } +DEF_TEST(TypefaceAxesParameters, reporter) { + std::unique_ptr distortable(GetResourceAsStream("fonts/Distortable.ttf")); + if (!distortable) { + REPORT_FAILURE(reporter, "distortable", SkString()); + return; + } + constexpr int numberOfAxesInDistortable = 1; + constexpr SkScalar minAxisInDistortable = 0.5; + constexpr SkScalar defAxisInDistortable = 1; + constexpr SkScalar maxAxisInDistortable = 2; + constexpr bool axisIsHiddenInDistortable = false; + + sk_sp fm = SkFontMgr::RefDefault(); + + SkFontArguments params; + sk_sp typeface = fm->makeFromStream(std::move(distortable), params); + + if (!typeface) { + // Not all SkFontMgr can makeFromStream(). + return; + } + + SkFontParameters::Variation::Axis parameter[numberOfAxesInDistortable]; + int count = typeface->getVariationDesignParameters(parameter, SK_ARRAY_COUNT(parameter)); + if (count == -1) { + return; + } + + REPORTER_ASSERT(reporter, count == SK_ARRAY_COUNT(parameter)); + REPORTER_ASSERT(reporter, parameter[0].min == minAxisInDistortable); + REPORTER_ASSERT(reporter, parameter[0].def == defAxisInDistortable); + REPORTER_ASSERT(reporter, parameter[0].max == maxAxisInDistortable); + REPORTER_ASSERT(reporter, parameter[0].tag == SkSetFourByteTag('w','g','h','t')); + REPORTER_ASSERT(reporter, parameter[0].isHidden() == axisIsHiddenInDistortable); + +} + namespace { class EmptyTypeface : public SkTypeface { @@ -264,6 +301,11 @@ protected: { return 0; } + int onGetVariationDesignParameters(SkFontParameters::Variation::Axis parameters[], + int parameterCount) const override + { + return 0; + } int onGetTableTags(SkFontTableTag tags[]) const override { return 0; } size_t onGetTableData(SkFontTableTag, size_t, size_t, void*) const override { return 0; } }; -- cgit v1.2.3