aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2018-06-26 11:22:37 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2018-07-12 17:30:20 +0000
commite346b1eea442065261c14f92b304031e1330e491 (patch)
treeac71ca13242dad662d3bf157370c943596ce4dd0 /tests
parenta4704078b9d7f6c86cdd29c80840bfc4f15bea1a (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.cpp42
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; }
};