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 |