fix fontconfig backend to only cache new fonts if their outName was unique
BUG=
R=bungeman@google.com
Review URL: https://codereview.chromium.org/23710072
git-svn-id: http://skia.googlecode.com/svn/trunk@11364 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/tests/FontMgrTest.cpp b/tests/FontMgrTest.cpp
index 6b6ee9a..00ff79b 100644
--- a/tests/FontMgrTest.cpp
+++ b/tests/FontMgrTest.cpp
@@ -11,6 +11,27 @@
#include "SkFontMgr.h"
#include "SkTypeface.h"
+/*
+ * If the font backend is going to "alias" some font names to other fonts
+ * (e.g. sans -> Arial) then we want to at least get the same typeface back
+ * if we request the alias name multiple times.
+ */
+static void test_badnames(skiatest::Reporter* reporter) {
+ const char* inName = "sans";
+ SkAutoTUnref<SkTypeface> first(SkTypeface::CreateFromName(inName, SkTypeface::kNormal));
+
+ SkString name;
+ for (int i = 0; i < 10; ++i) {
+ SkAutoTUnref<SkTypeface> face(SkTypeface::CreateFromName(inName, SkTypeface::kNormal));
+#if 0
+ face->getFamilyName(&name);
+ printf("request %s, received %s, first id %x received %x\n",
+ inName, name.c_str(), first->uniqueID(), face->uniqueID());
+#endif
+ REPORTER_ASSERT(reporter, first->uniqueID() == face->uniqueID());
+ }
+}
+
static void test_fontiter(skiatest::Reporter* reporter, bool verbose) {
SkAutoTUnref<SkFontMgr> fm(SkFontMgr::RefDefault());
int count = fm->countFamilies();
@@ -49,6 +70,7 @@
static void TestFontMgr(skiatest::Reporter* reporter) {
test_fontiter(reporter, FLAGS_verboseFontMgr);
+ test_badnames(reporter);
}
#include "TestClassDef.h"