Make onCreateFromStream check that the stream looks like a font.
authorbungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 11 Nov 2013 19:52:29 +0000 (19:52 +0000)
committerbungeman@google.com <bungeman@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Mon, 11 Nov 2013 19:52:29 +0000 (19:52 +0000)
git-svn-id: http://skia.googlecode.com/svn/trunk@12224 2bbb7eff-a529-9590-31e7-b0007b416f81

src/fonts/SkFontMgr_fontconfig.cpp

index 0b4accd254f28cb6edf493a0d967388a56b69a08..a0ca7e4f3332018637fca032f2b12e2410af28be 100644 (file)
 #include <fontconfig/fontconfig.h>
 #include <unistd.h>
 
+// Defined in SkFontHost_FreeType.cpp
+bool find_name_and_attributes(SkStream* stream, SkString* name,
+                              SkTypeface::Style* style, bool* isFixedWidth);
+
 // borrow this global from SkFontHost_fontconfig. eventually that file should
 // go away, and be replaced with this one.
 extern SkFontConfigInterface* SkFontHost_fontconfig_ref_global();
@@ -274,7 +278,12 @@ protected:
 
         // TODO should the caller give us the style or should we get it from freetype?
         SkTypeface::Style style = SkTypeface::kNormal;
-        SkTypeface* face = SkNEW_ARGS(FontConfigTypeface, (style, false, stream));
+        bool isFixedWidth = false;
+        if (!find_name_and_attributes(stream, NULL, &style, &isFixedWidth)) {
+            return NULL;
+        }
+
+        SkTypeface* face = SkNEW_ARGS(FontConfigTypeface, (style, isFixedWidth, stream));
         return face;
     }