123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723 |
- /*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #include "include/core/SkFont.h"
- #include "include/core/SkFontMgr.h"
- #include "include/core/SkPaint.h"
- #include "include/core/SkStream.h"
- #include "include/core/SkTypeface.h"
- #include "src/core/SkAdvancedTypefaceMetrics.h"
- #include "tests/Test.h"
- #include "tools/flags/CommandLineFlags.h"
- #include <initializer_list>
- #include <limits>
- #include <vector>
- static void test_font(skiatest::Reporter* reporter) {
- SkFont font(nullptr, 24);
- //REPORTER_ASSERT(reporter, SkTypeface::GetDefaultTypeface() == font.getTypeface());
- REPORTER_ASSERT(reporter, 24 == font.getSize());
- REPORTER_ASSERT(reporter, 1 == font.getScaleX());
- REPORTER_ASSERT(reporter, 0 == font.getSkewX());
- uint16_t glyphs[5];
- sk_bzero(glyphs, sizeof(glyphs));
- // Check that no glyphs are copied with insufficient storage.
- int count = font.textToGlyphs("Hello", 5, SkTextEncoding::kUTF8, glyphs, 2);
- REPORTER_ASSERT(reporter, 5 == count);
- for (const auto glyph : glyphs) { REPORTER_ASSERT(reporter, glyph == 0); }
- SkAssertResult(font.textToGlyphs("Hello", 5, SkTextEncoding::kUTF8, glyphs,
- SK_ARRAY_COUNT(glyphs)) == count);
- for (int i = 0; i < count; ++i) {
- REPORTER_ASSERT(reporter, 0 != glyphs[i]);
- }
- REPORTER_ASSERT(reporter, glyphs[0] != glyphs[1]); // 'h' != 'e'
- REPORTER_ASSERT(reporter, glyphs[2] == glyphs[3]); // 'l' == 'l'
- const SkFont newFont(font.makeWithSize(36));
- REPORTER_ASSERT(reporter, font.getTypefaceOrDefault() == newFont.getTypefaceOrDefault());
- REPORTER_ASSERT(reporter, 36 == newFont.getSize()); // double check we haven't changed
- REPORTER_ASSERT(reporter, 24 == font.getSize()); // double check we haven't changed
- }
- /*
- * If the font backend is going to "alias" some font names to other fonts
- * (e.g. sans -> Arial) then we want to at least get the same typeface back
- * if we request the alias name multiple times.
- */
- static void test_alias_names(skiatest::Reporter* reporter) {
- const char* inNames[] = {
- "sans", "sans-serif", "serif", "monospace", "times", "helvetica"
- };
- for (size_t i = 0; i < SK_ARRAY_COUNT(inNames); ++i) {
- sk_sp<SkTypeface> first(SkTypeface::MakeFromName(inNames[i], SkFontStyle()));
- if (nullptr == first.get()) {
- continue;
- }
- for (int j = 0; j < 10; ++j) {
- sk_sp<SkTypeface> face(SkTypeface::MakeFromName(inNames[i], SkFontStyle()));
- #if 0
- SkString name;
- face->getFamilyName(&name);
- printf("request %s, received %s, first id %x received %x\n",
- inNames[i], name.c_str(), first->uniqueID(), face->uniqueID());
- #endif
- REPORTER_ASSERT(reporter, first->uniqueID() == face->uniqueID());
- }
- }
- }
- static void test_fontiter(skiatest::Reporter* reporter, bool verbose) {
- sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
- int count = fm->countFamilies();
- for (int i = 0; i < count; ++i) {
- SkString fname;
- fm->getFamilyName(i, &fname);
- sk_sp<SkFontStyleSet> fnset(fm->matchFamily(fname.c_str()));
- sk_sp<SkFontStyleSet> set(fm->createStyleSet(i));
- REPORTER_ASSERT(reporter, fnset->count() == set->count());
- if (verbose) {
- SkDebugf("[%2d] %s\n", i, fname.c_str());
- }
- for (int j = 0; j < set->count(); ++j) {
- SkString sname;
- SkFontStyle fs;
- set->getStyle(j, &fs, &sname);
- // REPORTER_ASSERT(reporter, sname.size() > 0);
- sk_sp<SkTypeface> face(set->createTypeface(j));
- // REPORTER_ASSERT(reporter, face.get());
- if (verbose) {
- SkDebugf("\t[%d] %s [%3d %d %d]\n", j, sname.c_str(),
- fs.weight(), fs.width(), fs.slant());
- }
- }
- }
- }
- static void test_match(skiatest::Reporter* reporter) {
- sk_sp<SkFontMgr> fm(SkFontMgr::RefDefault());
- sk_sp<SkFontStyleSet> styleSet(fm->matchFamily(nullptr));
- REPORTER_ASSERT(reporter, styleSet);
- }
- static void test_matchStyleCSS3(skiatest::Reporter* reporter) {
- static const SkFontStyle invalidFontStyle(101, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- class TestTypeface : public SkTypeface {
- public:
- TestTypeface(const SkFontStyle& fontStyle) : SkTypeface(fontStyle, false){}
- protected:
- std::unique_ptr<SkStreamAsset> onOpenStream(int* ttcIndex) const override { return nullptr; }
- sk_sp<SkTypeface> onMakeClone(const SkFontArguments& args) const override {
- return sk_ref_sp(this);
- }
- SkScalerContext* onCreateScalerContext(const SkScalerContextEffects&,
- const SkDescriptor*) const override {
- return nullptr;
- }
- void onFilterRec(SkScalerContextRec*) const override { }
- std::unique_ptr<SkAdvancedTypefaceMetrics> onGetAdvancedMetrics() const override {
- return nullptr;
- }
- void onGetFontDescriptor(SkFontDescriptor*, bool*) const override { }
- void onCharsToGlyphs(const SkUnichar* chars, int count, SkGlyphID glyphs[]) const override {
- sk_bzero(glyphs, count * sizeof(glyphs[0]));
- }
- int onCountGlyphs() const override { return 0; }
- void getPostScriptGlyphNames(SkString*) const override {}
- void getGlyphToUnicodeMap(SkUnichar*) const override {}
- int onGetUPEM() const override { return 0; }
- class EmptyLocalizedStrings : public SkTypeface::LocalizedStrings {
- public:
- bool next(SkTypeface::LocalizedString*) override { return false; }
- };
- void onGetFamilyName(SkString* familyName) const override {
- familyName->reset();
- }
- SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const override {
- return new EmptyLocalizedStrings;
- }
- int onGetVariationDesignPosition(
- SkFontArguments::VariationPosition::Coordinate coordinates[],
- int coordinateCount) const override
- {
- return 0;
- }
- int onGetVariationDesignParameters(SkFontParameters::Variation::Axis parameters[],
- int parameterCount) const override
- {
- return -1;
- }
- int onGetTableTags(SkFontTableTag tags[]) const override { return 0; }
- size_t onGetTableData(SkFontTableTag, size_t, size_t, void*) const override {
- return 0;
- }
- };
- class TestFontStyleSet : public SkFontStyleSet {
- public:
- TestFontStyleSet(std::initializer_list<SkFontStyle> styles) : fStyles(styles) {}
- int count() override { return static_cast<int>(fStyles.size()); }
- void getStyle(int index, SkFontStyle* style, SkString*) override {
- if (style) {
- *style = fStyles[index];
- }
- }
- SkTypeface* createTypeface(int index) override {
- if (index < 0 || this->count() <= index) {
- return new TestTypeface(invalidFontStyle);
- }
- return new TestTypeface(fStyles[index]);
- }
- SkTypeface* matchStyle(const SkFontStyle& pattern) override {
- return this->matchStyleCSS3(pattern);
- }
- private:
- std::vector<SkFontStyle> fStyles;
- };
- SkFontStyle condensed_normal_100(SkFontStyle::kThin_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle condensed_normal_900(SkFontStyle::kBlack_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle condensed_italic_100(SkFontStyle::kThin_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kItalic_Slant);
- SkFontStyle condensed_italic_900(SkFontStyle::kBlack_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kItalic_Slant);
- SkFontStyle condensed_obliqu_100(SkFontStyle::kThin_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kOblique_Slant);
- SkFontStyle condensed_obliqu_900(SkFontStyle::kBlack_Weight, SkFontStyle::kCondensed_Width, SkFontStyle::kOblique_Slant);
- SkFontStyle expanded_normal_100(SkFontStyle::kThin_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle expanded_normal_900(SkFontStyle::kBlack_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle expanded_italic_100(SkFontStyle::kThin_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kItalic_Slant);
- SkFontStyle expanded_italic_900(SkFontStyle::kBlack_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kItalic_Slant);
- SkFontStyle expanded_obliqu_100(SkFontStyle::kThin_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kOblique_Slant);
- SkFontStyle expanded_obliqu_900(SkFontStyle::kBlack_Weight, SkFontStyle::kExpanded_Width, SkFontStyle::kOblique_Slant);
- SkFontStyle normal_normal_100(SkFontStyle::kThin_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle normal_normal_300(SkFontStyle::kLight_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle normal_normal_400(SkFontStyle::kNormal_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle normal_normal_500(SkFontStyle::kMedium_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle normal_normal_600(SkFontStyle::kSemiBold_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- SkFontStyle normal_normal_900(SkFontStyle::kBlack_Weight, SkFontStyle::kNormal_Width, SkFontStyle::kUpright_Slant);
- struct StyleSetTest {
- TestFontStyleSet styleSet;
- struct Case {
- SkFontStyle pattern;
- SkFontStyle expectedResult;
- };
- std::vector<Case> cases;
- } tests[] = {
- {
- { condensed_normal_100,condensed_normal_900,condensed_italic_100,condensed_italic_900,
- expanded_normal_100, expanded_normal_900, expanded_italic_100, expanded_italic_900 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { condensed_normal_100,condensed_italic_100,expanded_normal_100,expanded_italic_100 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_100 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_100 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_100 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_100 },
- },
- },
- {
- { condensed_normal_900,condensed_italic_900,expanded_normal_900,expanded_italic_900 },
- {
- { condensed_normal_100, condensed_normal_900 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_italic_900 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, expanded_normal_900 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_italic_900 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { condensed_normal_100,condensed_normal_900,expanded_normal_100,expanded_normal_900 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_normal_100 },
- { condensed_italic_900, condensed_normal_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_normal_100 },
- { expanded_italic_900, expanded_normal_900 },
- },
- },
- {
- { condensed_normal_100,expanded_normal_100 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_100 },
- { condensed_italic_100, condensed_normal_100 },
- { condensed_italic_900, condensed_normal_100 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_100 },
- { expanded_italic_100, expanded_normal_100 },
- { expanded_italic_900, expanded_normal_100 },
- },
- },
- {
- { condensed_normal_900,expanded_normal_900 },
- {
- { condensed_normal_100, condensed_normal_900 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_normal_900 },
- { condensed_italic_900, condensed_normal_900 },
- { expanded_normal_100, expanded_normal_900 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_normal_900 },
- { expanded_italic_900, expanded_normal_900 },
- },
- },
- {
- { condensed_italic_100,condensed_italic_900,expanded_italic_100,expanded_italic_900 },
- {
- { condensed_normal_100, condensed_italic_100 },
- { condensed_normal_900, condensed_italic_900 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, expanded_italic_100 },
- { expanded_normal_900, expanded_italic_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { condensed_italic_100,expanded_italic_100 },
- {
- { condensed_normal_100, condensed_italic_100 },
- { condensed_normal_900, condensed_italic_100 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_100 },
- { expanded_normal_100, expanded_italic_100 },
- { expanded_normal_900, expanded_italic_100 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_100 },
- },
- },
- {
- { condensed_italic_900,expanded_italic_900 },
- {
- { condensed_normal_100, condensed_italic_900 },
- { condensed_normal_900, condensed_italic_900 },
- { condensed_italic_100, condensed_italic_900 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, expanded_italic_900 },
- { expanded_normal_900, expanded_italic_900 },
- { expanded_italic_100, expanded_italic_900 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { condensed_normal_100,condensed_normal_900,condensed_italic_100,condensed_italic_900 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, condensed_normal_100 },
- { expanded_normal_900, condensed_normal_900 },
- { expanded_italic_100, condensed_italic_100 },
- { expanded_italic_900, condensed_italic_900 },
- },
- },
- {
- { condensed_normal_100,condensed_italic_100 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_100 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_100 },
- { expanded_normal_100, condensed_normal_100 },
- { expanded_normal_900, condensed_normal_100 },
- { expanded_italic_100, condensed_italic_100 },
- { expanded_italic_900, condensed_italic_100 },
- },
- },
- {
- { condensed_normal_900,condensed_italic_900 },
- {
- { condensed_normal_100, condensed_normal_900 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_italic_900 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, condensed_normal_900 },
- { expanded_normal_900, condensed_normal_900 },
- { expanded_italic_100, condensed_italic_900 },
- { expanded_italic_900, condensed_italic_900 },
- },
- },
- {
- { condensed_normal_100,condensed_normal_900 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_normal_100 },
- { condensed_italic_900, condensed_normal_900 },
- { expanded_normal_100, condensed_normal_100 },
- { expanded_normal_900, condensed_normal_900 },
- { expanded_italic_100, condensed_normal_100 },
- { expanded_italic_900, condensed_normal_900 },
- },
- },
- {
- { condensed_normal_100 },
- {
- { condensed_normal_100, condensed_normal_100 },
- { condensed_normal_900, condensed_normal_100 },
- { condensed_italic_100, condensed_normal_100 },
- { condensed_italic_900, condensed_normal_100 },
- { expanded_normal_100, condensed_normal_100 },
- { expanded_normal_900, condensed_normal_100 },
- { expanded_italic_100, condensed_normal_100 },
- { expanded_italic_900, condensed_normal_100 },
- },
- },
- {
- { condensed_normal_900 },
- {
- { condensed_normal_100, condensed_normal_900 },
- { condensed_normal_900, condensed_normal_900 },
- { condensed_italic_100, condensed_normal_900 },
- { condensed_italic_900, condensed_normal_900 },
- { expanded_normal_100, condensed_normal_900 },
- { expanded_normal_900, condensed_normal_900 },
- { expanded_italic_100, condensed_normal_900 },
- { expanded_italic_900, condensed_normal_900 },
- },
- },
- {
- { condensed_italic_100,condensed_italic_900 },
- {
- { condensed_normal_100, condensed_italic_100 },
- { condensed_normal_900, condensed_italic_900 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, condensed_italic_100 },
- { expanded_normal_900, condensed_italic_900 },
- { expanded_italic_100, condensed_italic_100 },
- { expanded_italic_900, condensed_italic_900 },
- },
- },
- {
- { condensed_italic_100 },
- {
- { condensed_normal_100, condensed_italic_100 },
- { condensed_normal_900, condensed_italic_100 },
- { condensed_italic_100, condensed_italic_100 },
- { condensed_italic_900, condensed_italic_100 },
- { expanded_normal_100, condensed_italic_100 },
- { expanded_normal_900, condensed_italic_100 },
- { expanded_italic_100, condensed_italic_100 },
- { expanded_italic_900, condensed_italic_100 },
- },
- },
- {
- { condensed_italic_900 },
- {
- { condensed_normal_100, condensed_italic_900 },
- { condensed_normal_900, condensed_italic_900 },
- { condensed_italic_100, condensed_italic_900 },
- { condensed_italic_900, condensed_italic_900 },
- { expanded_normal_100, condensed_italic_900 },
- { expanded_normal_900, condensed_italic_900 },
- { expanded_italic_100, condensed_italic_900 },
- { expanded_italic_900, condensed_italic_900 },
- },
- },
- {
- { expanded_normal_100,expanded_normal_900,
- expanded_italic_100,expanded_italic_900 },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_900 },
- { condensed_obliqu_100, expanded_italic_100 },
- { condensed_obliqu_900, expanded_italic_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- { expanded_obliqu_100, expanded_italic_100 },
- { expanded_obliqu_900, expanded_italic_900 },
- },
- },
- {
- { expanded_normal_100,expanded_italic_100 },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_100 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_100 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_100 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_100 },
- },
- },
- {
- { expanded_normal_900,expanded_italic_900 },
- {
- { condensed_normal_100, expanded_normal_900 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_italic_900 },
- { condensed_italic_900, expanded_italic_900 },
- { expanded_normal_100, expanded_normal_900 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_italic_900 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { expanded_normal_100,expanded_normal_900 },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_normal_100 },
- { condensed_italic_900, expanded_normal_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_normal_100 },
- { expanded_italic_900, expanded_normal_900 },
- },
- },
- {
- { expanded_normal_100 },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_100 },
- { condensed_italic_100, expanded_normal_100 },
- { condensed_italic_900, expanded_normal_100 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_100 },
- { expanded_italic_100, expanded_normal_100 },
- { expanded_italic_900, expanded_normal_100 },
- },
- },
- {
- { expanded_normal_900 },
- {
- { condensed_normal_100, expanded_normal_900 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_normal_900 },
- { condensed_italic_900, expanded_normal_900 },
- { expanded_normal_100, expanded_normal_900 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_normal_900 },
- { expanded_italic_900, expanded_normal_900 },
- },
- },
- {
- { expanded_italic_100,expanded_italic_900 },
- {
- { condensed_normal_100, expanded_italic_100 },
- { condensed_normal_900, expanded_italic_900 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_900 },
- { expanded_normal_100, expanded_italic_100 },
- { expanded_normal_900, expanded_italic_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { expanded_italic_100 },
- {
- { condensed_normal_100, expanded_italic_100 },
- { condensed_normal_900, expanded_italic_100 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_100 },
- { expanded_normal_100, expanded_italic_100 },
- { expanded_normal_900, expanded_italic_100 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_100 },
- },
- },
- {
- { expanded_italic_900 },
- {
- { condensed_normal_100, expanded_italic_900 },
- { condensed_normal_900, expanded_italic_900 },
- { condensed_italic_100, expanded_italic_900 },
- { condensed_italic_900, expanded_italic_900 },
- { expanded_normal_100, expanded_italic_900 },
- { expanded_normal_900, expanded_italic_900 },
- { expanded_italic_100, expanded_italic_900 },
- { expanded_italic_900, expanded_italic_900 },
- },
- },
- {
- { normal_normal_100, normal_normal_900 },
- {
- { normal_normal_300, normal_normal_100 },
- { normal_normal_400, normal_normal_100 },
- { normal_normal_500, normal_normal_100 },
- { normal_normal_600, normal_normal_900 },
- },
- },
- {
- { normal_normal_100, normal_normal_400, normal_normal_900 },
- {
- { normal_normal_300, normal_normal_100 },
- { normal_normal_400, normal_normal_400 },
- { normal_normal_500, normal_normal_400 },
- { normal_normal_600, normal_normal_900 },
- },
- },
- {
- { normal_normal_100, normal_normal_500, normal_normal_900 },
- {
- { normal_normal_300, normal_normal_100 },
- { normal_normal_400, normal_normal_500 },
- { normal_normal_500, normal_normal_500 },
- { normal_normal_600, normal_normal_900 },
- },
- },
- {
- { },
- {
- { normal_normal_300, invalidFontStyle },
- { normal_normal_400, invalidFontStyle },
- { normal_normal_500, invalidFontStyle },
- { normal_normal_600, invalidFontStyle },
- },
- },
- {
- { expanded_normal_100,expanded_normal_900,
- expanded_italic_100,expanded_italic_900,
- expanded_obliqu_100,expanded_obliqu_900, },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_900 },
- { condensed_obliqu_100, expanded_obliqu_100 },
- { condensed_obliqu_900, expanded_obliqu_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- { expanded_obliqu_100, expanded_obliqu_100 },
- { expanded_obliqu_900, expanded_obliqu_900 },
- },
- },
- {
- { expanded_normal_100,expanded_normal_900,
- expanded_obliqu_100,expanded_obliqu_900, },
- {
- { condensed_normal_100, expanded_normal_100 },
- { condensed_normal_900, expanded_normal_900 },
- { condensed_italic_100, expanded_obliqu_100 },
- { condensed_italic_900, expanded_obliqu_900 },
- { condensed_obliqu_100, expanded_obliqu_100 },
- { condensed_obliqu_900, expanded_obliqu_900 },
- { expanded_normal_100, expanded_normal_100 },
- { expanded_normal_900, expanded_normal_900 },
- { expanded_italic_100, expanded_obliqu_100 },
- { expanded_italic_900, expanded_obliqu_900 },
- { expanded_obliqu_100, expanded_obliqu_100 },
- { expanded_obliqu_900, expanded_obliqu_900 },
- },
- },
- {
- { expanded_italic_100,expanded_italic_900,
- expanded_obliqu_100,expanded_obliqu_900, },
- {
- { condensed_normal_100, expanded_obliqu_100 },
- { condensed_normal_900, expanded_obliqu_900 },
- { condensed_italic_100, expanded_italic_100 },
- { condensed_italic_900, expanded_italic_900 },
- { condensed_obliqu_100, expanded_obliqu_100 },
- { condensed_obliqu_900, expanded_obliqu_900 },
- { expanded_normal_100, expanded_obliqu_100 },
- { expanded_normal_900, expanded_obliqu_900 },
- { expanded_italic_100, expanded_italic_100 },
- { expanded_italic_900, expanded_italic_900 },
- { expanded_obliqu_100, expanded_obliqu_100 },
- { expanded_obliqu_900, expanded_obliqu_900 },
- },
- },
- };
- for (StyleSetTest& test : tests) {
- for (const StyleSetTest::Case& testCase : test.cases) {
- sk_sp<SkTypeface> typeface(test.styleSet.matchStyle(testCase.pattern));
- if (typeface) {
- REPORTER_ASSERT(reporter, typeface->fontStyle() == testCase.expectedResult);
- } else {
- REPORTER_ASSERT(reporter, invalidFontStyle == testCase.expectedResult);
- }
- }
- }
- }
- DEFINE_bool(verboseFontMgr, false, "run verbose fontmgr tests.");
- DEF_TEST(FontMgr, reporter) {
- test_match(reporter);
- test_matchStyleCSS3(reporter);
- test_fontiter(reporter, FLAGS_verboseFontMgr);
- test_alias_names(reporter);
- test_font(reporter);
- }
|