Index: include/ports/SkFontMgr.h |
diff --git a/include/ports/SkFontMgr.h b/include/ports/SkFontMgr.h |
index 96a8501c48561918c8c03213e3198fa78bc61233..3e6c785be9eb66943586b54f15767213d6ad5a52 100644 |
--- a/include/ports/SkFontMgr.h |
+++ b/include/ports/SkFontMgr.h |
@@ -8,8 +8,10 @@ |
#ifndef SkFontMgr_DEFINED |
#define SkFontMgr_DEFINED |
-#include "SkRefCnt.h" |
#include "SkFontStyle.h" |
+#include "SkRefCnt.h" |
+#include "SkScalar.h" |
+#include "SkTypes.h" |
class SkData; |
class SkFontData; |
@@ -100,6 +102,52 @@ public: |
*/ |
SkTypeface* createFromStream(SkStreamAsset*, int ttcIndex = 0) const; |
+ struct FontParameters { |
+ struct Axis { |
+ SkFourByteTag fTag; |
+ SkScalar fStyleValue; |
+ }; |
+ |
+ FontParameters() : fCollectionIndex(0), fAxisCount(0), fAxes(nullptr) {} |
+ |
+ /** Specify the index of the desired font. |
+ * |
+ * Font formats like ttc, dfont, cff, cid, pfr, t42, t1, and fon may actually be indexed |
+ * collections of fonts. |
+ */ |
+ FontParameters& setCollectionIndex(int collectionIndex) { |
+ fCollectionIndex = collectionIndex; |
+ return *this; |
+ } |
+ |
+ /** Specify the GX variation axis values. |
+ * |
+ * Any axes not specified will use the default value. Specified axes not present in the |
+ * font will be ignored. |
+ * |
+ * @param axes not copied. This pointer must remain valid for life of FontParameters. |
+ */ |
+ FontParameters& setAxes(const Axis* axes, int axisCount) { |
+ fAxisCount = axisCount; |
+ fAxes = axes; |
+ return *this; |
+ } |
+ |
+ int getCollectionIndex() const { |
+ return fCollectionIndex; |
+ } |
+ const Axis* getAxes(int* axisCount) const { |
+ *axisCount = fAxisCount; |
+ return fAxes; |
+ } |
+ private: |
+ int fCollectionIndex; |
+ int fAxisCount; |
+ const Axis* fAxes; |
+ }; |
+ /* Experimental, API subject to change. */ |
+ SkTypeface* createFromStream(SkStreamAsset*, const FontParameters&) const; |
+ |
/** |
* Create a typeface from the specified font data. |
* Takes ownership of the font data, so the caller should not reference it again. |
@@ -144,6 +192,7 @@ protected: |
virtual SkTypeface* onCreateFromData(SkData*, int ttcIndex) const = 0; |
virtual SkTypeface* onCreateFromStream(SkStreamAsset*, int ttcIndex) const = 0; |
// TODO: make pure virtual. |
+ virtual SkTypeface* onCreateFromStream(SkStreamAsset*, const FontParameters&) const; |
virtual SkTypeface* onCreateFromFontData(SkFontData*) const; |
virtual SkTypeface* onCreateFromFile(const char path[], int ttcIndex) const = 0; |