cb6940bf42
- return nullptr for the various makeFromFoo() that we can't support, and tweak a few unit tests to bail out early when they do - create FontStyleSet and SkTypefaces once - abort early from FontHostStream if we can't openStream() - implement SkTestTypeface::onCreateFamilyNameIterator() with SkOTUtils::LocalizedStrings_SingleName() so FontNames passes - pin out-of-range glyph IDs to zero in SkTestTypeface Change-Id: Iac53265e331fc1c5c507513af3ab299063e6610a Reviewed-on: https://skia-review.googlesource.com/69501 Reviewed-by: Ben Wagner <bungeman@google.com> Commit-Queue: Mike Klein <mtklein@chromium.org>
66 lines
2.4 KiB
C++
66 lines
2.4 KiB
C++
/*
|
|
* Copyright 2017 Google Inc.
|
|
*
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
#ifndef DMFontMgr_DEFINED
|
|
#define DMFontMgr_DEFINED
|
|
|
|
#include "SkFontMgr.h"
|
|
|
|
// An SkFontMgr that always uses sk_tool_utils::create_portable_typeface().
|
|
|
|
namespace DM {
|
|
|
|
class FontStyleSet final : public SkFontStyleSet {
|
|
public:
|
|
explicit FontStyleSet(int familyIndex);
|
|
|
|
int count() override;
|
|
void getStyle(int index, SkFontStyle* style, SkString* name) override;
|
|
SkTypeface* createTypeface(int index) override;
|
|
SkTypeface* matchStyle(const SkFontStyle& pattern) override;
|
|
|
|
private:
|
|
sk_sp<SkTypeface> fTypefaces[4];
|
|
};
|
|
|
|
class FontMgr final : public SkFontMgr {
|
|
public:
|
|
FontMgr();
|
|
|
|
int onCountFamilies() const override;
|
|
void onGetFamilyName(int index, SkString* familyName) const override;
|
|
|
|
SkFontStyleSet* onCreateStyleSet(int index) const override;
|
|
SkFontStyleSet* onMatchFamily(const char familyName[]) const override;
|
|
|
|
SkTypeface* onMatchFamilyStyle(const char familyName[],
|
|
const SkFontStyle&) const override;
|
|
SkTypeface* onMatchFamilyStyleCharacter(const char familyName[],
|
|
const SkFontStyle&,
|
|
const char* bcp47[], int bcp47Count,
|
|
SkUnichar character) const override;
|
|
SkTypeface* onMatchFaceStyle(const SkTypeface*,
|
|
const SkFontStyle&) const override;
|
|
|
|
sk_sp<SkTypeface> onMakeFromData(sk_sp<SkData>, int ttcIndex) const override;
|
|
sk_sp<SkTypeface> onMakeFromStreamIndex(std::unique_ptr<SkStreamAsset>,
|
|
int ttcIndex) const override;
|
|
sk_sp<SkTypeface> onMakeFromStreamArgs(std::unique_ptr<SkStreamAsset>,
|
|
const SkFontArguments&) const override;
|
|
sk_sp<SkTypeface> onMakeFromFontData(std::unique_ptr<SkFontData>) const override;
|
|
sk_sp<SkTypeface> onMakeFromFile(const char path[], int ttcIndex) const override;
|
|
|
|
sk_sp<SkTypeface> onLegacyMakeTypeface(const char familyName[], SkFontStyle) const override;
|
|
|
|
private:
|
|
sk_sp<FontStyleSet> fFamilies[3];
|
|
};
|
|
|
|
} // namespace DM
|
|
|
|
#endif//DMFontMgr_DEFINED
|