19 std::unique_ptr<SkMemoryStream>
stream,
int index,
31 auto stream = std::make_unique<SkMemoryStream>(fontEntry.
data, fontEntry.
size,
false);
35 if (families->
empty()) {
52 for (
int i = 0;
i <
fNum; ++
i) {
57 if (families->
empty()) {
69 const char familyName[])
71 for (
int i = 0;
i < families.
size(); ++
i) {
72 if (families[
i]->getFamilyName().
equals(familyName)) {
73 return families[
i].get();
80 std::unique_ptr<SkMemoryStream>
stream,
85 SkDebugf(
"---- failed to open <%d> as a font\n", index);
88 for (
int faceIndex = 0; faceIndex < numFaces; ++faceIndex) {
91 SkDebugf(
"---- failed to open <%d> <%d> as a face\n", index, faceIndex);
95 for (
int instanceIndex = 0; instanceIndex <= numInstances; ++instanceIndex) {
106 SkDebugf(
"---- failed to open <%d> <%d> <%d> as an instance\n",
114 if (
nullptr == addTo) {
118 auto data = std::make_unique<SkFontData>(
119 stream->duplicate(), faceIndex, 0,
nullptr, 0,
nullptr, 0);
121 std::move(
data), realname, style, isFixedPitch));
132 return sk_make_sp<SkFontMgr_Custom>(
DataFontLoader(datas.data(), datas.size()));
void SK_SPI SkDebugf(const char format[],...) SK_PRINTF_LIKE(1
static SkFontStyleSet_Custom * find_family(SkFontMgr_Custom::Families &families, const char familyName[])
sk_sp< SkFontMgr > SkFontMgr_New_Custom_Embedded(const SkEmbeddedResourceHeader *header)
sk_sp< SkFontMgr > SkFontMgr_New_Custom_Data(SkSpan< sk_sp< SkData > > datas)
static void load_font_from_data(const SkFontScanner *scanner, std::unique_ptr< SkMemoryStream > stream, int index, SkFontMgr_Custom::Families *families)
bool equals(SkDrawable *a, SkDrawable *b)
void loadSystemFonts(const SkFontScanner *scanner, SkFontMgr_Custom::Families *families) const override
const sk_sp< SkData > * fDatas
DataFontLoader(sk_sp< SkData > *datas, int n)
const SkEmbeddedResourceHeader * fHeader
EmbeddedSystemFontLoader(const SkEmbeddedResourceHeader *header)
void loadSystemFonts(const SkFontScanner *scanner, SkFontMgr_Custom::Families *families) const override
virtual bool scanFace(SkStreamAsset *stream, int faceIndex, int *numInstances) const =0
virtual bool scanInstance(SkStreamAsset *stream, int faceIndex, int instanceIndex, SkString *name, SkFontStyle *style, bool *isFixedPitch, AxisDefinitions *axes) const =0
virtual bool scanFile(SkStreamAsset *stream, int *numFaces) const =0
void appendTypeface(sk_sp< SkTypeface > typeface)
const char * c_str() const
void reset(T *ptr=nullptr)
static const char header[]
std::shared_ptr< const fml::Mapping > data