| // Copyright 2019 Google LLC. |
| #include "modules/skparagraph/src/ParagraphImpl.h" |
| #include "modules/skparagraph/utils/TestFontCollection.h" |
| #include "src/core/SkOSFile.h" |
| #include "src/utils/SkUTF.h" |
| #include "tools/Resources.h" |
| |
| namespace skia { |
| namespace textlayout { |
| |
| TestFontCollection::TestFontCollection(const std::string& resourceDir) |
| : fResourceDir(resourceDir) |
| , fFontsFound(0) { |
| if (fDirs == resourceDir) { |
| return; |
| } |
| |
| fFontProvider = sk_make_sp<TypefaceFontProvider>(); |
| |
| SkOSFile::Iter iter(fResourceDir.c_str()); |
| SkString path; |
| while (iter.next(&path)) { |
| SkString file_path; |
| file_path.printf("%s/%s", fResourceDir.c_str(), path.c_str()); |
| // fonts from data are faster (skips file overhead), so we use them here for testing |
| auto data = SkData::MakeFromFileName(file_path.c_str()); |
| if (data) { |
| fFontProvider->registerTypeface(SkTypeface::MakeFromData(data)); |
| } |
| } |
| |
| fFontsFound = fFontProvider->countFamilies(); |
| this->setTestFontManager(fFontProvider); |
| this->disableFontFallback(); |
| fDirs = resourceDir; |
| } |
| } // namespace textlayout |
| } // namespace skia |