| Index: src/ports/SkFontMgr_custom.cpp | 
| diff --git a/src/ports/SkFontHost_linux.cpp b/src/ports/SkFontMgr_custom.cpp | 
| similarity index 94% | 
| rename from src/ports/SkFontHost_linux.cpp | 
| rename to src/ports/SkFontMgr_custom.cpp | 
| index b4404ca745eb30fa0389eefb4e94a289a67dd3e1..49744a1f6318b15831e19e072ab42f793480f9b0 100644 | 
| --- a/src/ports/SkFontHost_linux.cpp | 
| +++ b/src/ports/SkFontMgr_custom.cpp | 
| @@ -8,6 +8,7 @@ | 
| #include "SkFontHost_FreeType_common.h" | 
| #include "SkFontDescriptor.h" | 
| #include "SkFontMgr.h" | 
| +#include "SkFontMgr_custom.h" | 
| #include "SkDescriptor.h" | 
| #include "SkOSFile.h" | 
| #include "SkPaint.h" | 
| @@ -87,13 +88,6 @@ private: | 
| typedef SkTypeface_Custom INHERITED; | 
| }; | 
|  | 
| -// This configuration option is useful if we need to open and hold handles to | 
| -// all found system font data (e.g., for skfiddle, where the application can't | 
| -// access the filesystem to read fonts on demand) | 
| - | 
| -SK_CONF_DECLARE(bool, c_CustomTypefaceRetain, "fonts.customFont.retainAllData", false, | 
| -                "Retain the open stream for each found font on the system."); | 
| - | 
| /** The file SkTypeface implementation for the custom font manager. */ | 
| class SkTypeface_File : public SkTypeface_Custom { | 
| public: | 
| @@ -101,22 +95,16 @@ public: | 
| const SkString familyName, const char path[], int index) | 
| : INHERITED(style, isFixedPitch, sysFont, familyName, index) | 
| , fPath(path) | 
| -        , fStream(c_CustomTypefaceRetain ? SkStream::NewFromFile(fPath.c_str()) : NULL) | 
| { } | 
|  | 
| protected: | 
| SkStreamAsset* onOpenStream(int* ttcIndex) const override { | 
| *ttcIndex = this->getIndex(); | 
| -        if (fStream.get()) { | 
| -            return fStream->duplicate(); | 
| -        } else { | 
| -            return SkStream::NewFromFile(fPath.c_str()); | 
| -        } | 
| +        return SkStream::NewFromFile(fPath.c_str()); | 
| } | 
|  | 
| private: | 
| SkString fPath; | 
| -    const SkAutoTDelete<SkStreamAsset> fStream; | 
|  | 
| typedef SkTypeface_Custom INHERITED; | 
| }; | 
| @@ -213,7 +201,7 @@ public: | 
| virtual ~SystemFontLoader() { } | 
| virtual void loadSystemFonts(const SkTypeface_FreeType::Scanner&, Families*) const = 0; | 
| }; | 
| -    explicit SkFontMgr_Custom(const SystemFontLoader& loader) { | 
| +    explicit SkFontMgr_Custom(const SystemFontLoader& loader) : fDefaultFamily(NULL) { | 
| loader.loadSystemFonts(fScanner, &fFamilies); | 
|  | 
| // Try to pick a default font. | 
| @@ -440,6 +428,12 @@ private: | 
| SkString fBaseDirectory; | 
| }; | 
|  | 
| +SK_API SkFontMgr* SkFontMgr_New_Custom_Directory(const char* dir) { | 
| +    return new SkFontMgr_Custom(DirectorySystemFontLoader(dir)); | 
| +} | 
| + | 
| +/////////////////////////////////////////////////////////////////////////////// | 
| + | 
| struct SkEmbeddedResource { const uint8_t* data; size_t size; }; | 
| struct SkEmbeddedResourceHeader { const SkEmbeddedResource* entries; int count; }; | 
|  | 
| @@ -515,20 +509,6 @@ private: | 
| const SkEmbeddedResourceHeader* fHeader; | 
| }; | 
|  | 
| -#ifdef SK_EMBEDDED_FONTS | 
| - | 
| -extern "C" const SkEmbeddedResourceHeader SK_EMBEDDED_FONTS; | 
| -SkFontMgr* SkFontMgr::Factory() { | 
| -    return new SkFontMgr_Custom(EmbeddedSystemFontLoader(&SK_EMBEDDED_FONTS)); | 
| -} | 
| - | 
| -#else | 
| - | 
| -#ifndef SK_FONT_FILE_PREFIX | 
| -#    define SK_FONT_FILE_PREFIX "/usr/share/fonts/" | 
| -#endif | 
| -SkFontMgr* SkFontMgr::Factory() { | 
| -    return new SkFontMgr_Custom(DirectorySystemFontLoader(SK_FONT_FILE_PREFIX)); | 
| +SkFontMgr* SkFontMgr_New_Custom_Embedded(const SkEmbeddedResourceHeader* header) { | 
| +    return new SkFontMgr_Custom(EmbeddedSystemFontLoader(header)); | 
| } | 
| - | 
| -#endif | 
|  |