diff options
author | Ben Wagner <bungeman@google.com> | 2018-06-26 11:22:37 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-07-12 17:30:20 +0000 |
commit | e346b1eea442065261c14f92b304031e1330e491 (patch) | |
tree | ac71ca13242dad662d3bf157370c943596ce4dd0 /tests | |
parent | a4704078b9d7f6c86cdd29c80840bfc4f15bea1a (diff) |
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 <bungeman@google.com>
Reviewed-by: Mike Reed <reed@google.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/TypefaceTest.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
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<SkStreamAsset> 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<SkFontMgr> fm = SkFontMgr::RefDefault(); + + SkFontArguments params; + sk_sp<SkTypeface> 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; } }; |